特定の時間後のページリダイレクトPHP


94

しばらくするとリダイレクトするための特定のPHP関数があります。どこかで見ましたが、思い出せません。ログイン後のGmailのリダイレクトのようです。お願いします。


@zerkms:いくつかの方法があるようです。
Wesley Murch、

2
@Wesley Murch:Refreshヘッダーは標準的なものではありません。RFCでカバーされていないものを使用することはありません
zerkms

stackoverflow.com/questions/18305258/...はために私を導いたstackoverflow.com/questions/283752/refresh-http-headerだけでなく、標準ではないとリフレッシュヘッダはまた、Internet Explorerのパフォーマンスの問題を引き起こすことを言っています。
エドワード

回答:


229
header( "refresh:5;url=wherever.php" );

これは、5秒headerリダイレクトされるphpの設定方法ですwherever.php


実際の出力が送信される前に、通常のHTMLタグ、ファイル内の空白行、またはPHPからheader()を呼び出す必要があることに注意してください。includeまたはrequire関数、または別のファイルアクセス関数でコードを読み取り、header()が呼び出される前にスペースまたは空の行が出力されるのは、非常に一般的なエラーです。単一のPHP / HTMLファイルを使用する場合にも同じ問題が存在します。(ソースphp.net


1
興味深いことに、私はこれまでこの方法を見たことがありません...しかし、タイマーが切れるまで、空白のページを表示したり、メッセージなしでアイドル状態になったりすることはありませんか?
イブ

あなたが本当に空白のページを表示するだけで使用したい場合は、5秒でページを更新するために、ブラウザを教えてくれますそれがないことを、すべてのセットのヘッダ魔女にある...ページを表示しようとしているdie();
Teneff

2
これの悪い点は、次のとおりです。このヘッダーはHTTP標準にないため、クライアントは自由に無視できます。
Sven

:) 良いアイデア!また、いくつかの変数を送信(保持)して、リロードされたページで使用したい場合はどうでしょうか。
Mugur Ungureanu 2014年

この投稿から10億年になるかもしれませんが、「ページをリダイレクトしています。お待ちください」のようなリダイレクト中にメッセージを投稿するにはどうすればよいでしょうか
CAO

25

JavaScriptを使用してしばらくするとリダイレクトできます

setTimeout(function () {
   window.location.href= 'http://www.google.com'; // the redirect goes here

},5000); // 5 seconds

11
PHPに関する質問
Benjamin Intal

5
@Jamiそれは本当です、それが私がOPが代わりにjavascriptを使うことができると言った理由です。
イブ

@BenjaminIntalこれは、ブラウザーがヘッダーのリダイレクトを無視した場合の優れたフォールバックとしても機能します。ヘッダーを受け入れないブラウザーを使用し、リダイレクトを受信しないようにJavaScriptを無効にする必要があります。
スーパーキャット

18

あなたはこれを試すことができます:

header('Refresh: 10; URL=http://yoursite.com/page.php');

10は秒単位です。


11

あなたはphpを使ってメタタグを書きたいと思うでしょう。

<meta http-equiv="refresh" content="5;url=http://www.yoursite.com">

推奨されませんが、可能です。この例の5は、更新されるまでの秒数です。


3
header( "refresh:5;url=wherever.php" );

実際、teneffが言ったようにこのコードを使用できますが、送信された出力の前にヘッダーを置く必要はありません(これは「cannot relocate header ....:3 error」を出力します)。

これを解決するob_start();には、htmlが出力される前にphp関数を使用します。

obを終了するにob_end_flush();は、html出力がない場合に配置します。

乾杯!


2

PHPを使用してリダイレクトする場合は、sleep()コマンドを使用して、リダイレクトする前に何秒間スリープします。

しかし、私が参照しているのはメタ更新タグだと思います。

http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm


上で述べたように、ヘッダー関数を使用する必要があるため、スリープの使用は従来のアプローチではありません。
Maksim

スリープは接続を遅らせるだけではありませんか?
FluorescentGreen5

2

ファイルを保存するために[名前を付けて保存]ダイアログを開いたときに、5秒後のPHPの更新が機能しませんでした:(header( 'Content-type:text / plain'); header( "Content-Disposition:attachment; filename = $ filename > ");)

[名前を付けて保存]リンクをクリックしてファイルを保存すると、呼び出しページで時間指定の更新が停止しました。

ただし、どうもありがとうございました。ibuのjavascriptソリューションは、私の特定のアプリケーションに必要なWebページを刻々と更新し続けています。ここで、phpの問題に対するJavaScriptソリューションを投稿してくださったibuに感謝します。

JavaScriptを使用してしばらくするとリダイレクトできます

setTimeout(function () {    
    window.location.href = 'http://www.google.com'; 
},5000); // 5 seconds

2

このJavaScriptコードを使用して、特定の時間の後にリダイレクトできます。それがうまくいくことを願っています。

setRedirectTime(function () 
{
   window.location.href= 'https://www.google.com'; // the redirect URL will be here

},10000); // 10 seconds
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.