web-dev-qa-db-ja.com

メタhttp-equiv = REFRESH CONTENT = timeなしで数秒後にページをPHPにリダイレクトする方法

使用することはお勧めできないようです

<meta http-equiv=REFRESH CONTENT=3;url=url>

リダイレクトの代わりに使用します

header('Location: url')

ただし、ユーザーにメッセージを表示し、リダイレクトする前にそれを読む時間を与えたいと思います。メタなしでそれを行う方法はありますか?

17
zhenming

「更新」ヘッダーを使用してみてください。

header('Refresh: 3;url=page.php');

また、この質問を見ることができます Refresh HTTP Header

37
Dador

メタリフレッシュタグの使用に問題はありません。

<meta http-equiv="refresh" content="5;URL='http://example.com/'" />

そのタグは、5秒待ってからexample.comにリダイレクトすることを示しています。このタグは、ユーザーがIE6を使用していなくても問題はなく、引き続き機能します。履歴ボタンを壊すだけです。

JavaScriptの使用はオプションですが、リンクを必ず記載してください「自動的にリダイレクトされない場合は、ここをクリックしてください」。実際には、どちらの方法でもそのリンクを含める必要があります。

6

ヘッダーを設定するPHPの方法は、5秒でtest.phpにリダイレクトします:

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

実際の出力が送信される前に呼び出します。

そして、javascriptで:

setTimeout(function () {
   window.location.href= url; // the redirect goes here
},5000); // 5 seconds
5
Sanjay

ヘッダータグは、ページの読み込み時にブラウザに送信されるため、ユーザーを目的のページにすばやくリダイレ​​クトしたり、レンダリングしたり履歴にロードしたりする必要はありません。そのため、ヘッダーがすでに処理されているため、ページが既に読み込まれている場合、リダイレクトを呼び出すことはできません。

代わりにこれを実行できます:

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

基本的には、ページ自体のヘッダーに<meta>タグを設定します。つまり、タグを記述する必要はありません。

4
Death

あなたが言っていることから、理論的にはこれはうまくいくはずです:

URL: http://www.example.com/ticketgen/index.php?success=1&redir=1

    <?php
 $myredir = ($_GET['redir']);
    if ($myredir == 1)
    {
        header( "refresh:5;url=http://www.example.com/ticketgen/" );
    }
?>

しかし、それは何もしません。また、ヘッダーを送信できるように、ページの一番上にもあります。

firefoxで動作しませんでした。

2
Patrick K.

本当に最善の方法はheader("Refresh: 10;url=../index.php");であると思います。私の仕事でやったことと同じです。

1
user2851654

JavaScriptの小さな断片でそれを行うことができます。

<script type="text/javascript" language="JavaScript">location.href = 'otherpage.php';</script>

もちろん、これはJavaScriptを有効にしている人に依存します。

明らかに、遅延を設定するには、setTimeoutのようなものを使用できます。

<script type="text/javascript" language="JavaScript">
    setTimeout(function () {
                      location.href = 'stackoverflowhelp.php'; 
               }, 5000);
</script>
1
Jason Larke