0

HTMLフォームを設定し、PHPを使用して、Webページにメッセージを表示する前にすべてが正常であることを確認しています。次に、数秒後にユーザーをホームページにリダイレクトしたいと思います。

問題は、5秒ほど待ってからリダイレクトを実行する方法が見つからないことです。スリープ機能は5秒間待機してから、メッセージ/リダイレクトを同時に表示します。誰かアイデアがありますか?

ありがとう!

<?php
    if (empty($_POST) === false) {
    echo 'Success! You will not be able to log in until an administrator approves your account.';
    sleep(5);
    $url = 'index.html';
    echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';  
}
?>
4

6 に答える 6

5

For a practical (works across the board AFAIK) but not standardized solution, use the Refresh HTTP header:

header('Refresh: 5; url=http://yoursite.com/index.html');

Otherwise, you can achieve the effect with a <meta> tag but without involving sleep():

// This goes inside <head>, so obviously *before* the "success" message!
echo '<META HTTP-EQUIV=Refresh CONTENT="5; URL='.$url.'">'; 
于 2013-02-03T12:46:00.857 に答える
2

This should be done on the client side using javascript for example.

于 2013-02-03T12:43:41.457 に答える
1

これは、出力がブラウザに順番に送信されないためです。スクリプトが終了した後、PHP はほとんど一度に出力を送信します。

代わりに、html で待機するために次のメタタグを使用します。

<meta http-equiv="Refresh" content="5; URL=/blah;">

<meta>タグは常に 内に配置する必要があることに注意してください<head>

ブラウザは常にリダイレクトを無視することを選択できることに注意してください。そして、それは私の個人的な意見ですが、このようなリダイレクトは最悪です。むしろ、次のページロードの上部に通知フラッシュ メッセージを表示します。

于 2013-02-03T12:48:52.957 に答える
0

そのようなリダイレクトを行う方法はjavascriptです

次のような小さなJavaScript関数を作成します

function delayer() {
    window.location = "http://example.com"
}

そしてそれを追加します

onLoad="setTimeout('delayer()', TIME_IN_MILLISECONDS_TO_WAIT)"

あなたのhtmlボディタグの中に

于 2013-02-03T12:47:49.787 に答える
-1
<?php
    if (empty($_POST) === false) {
    echo 'Success! You will not be able to log in until an administrator approves your account.';
    sleep(5);
    $url = 'index.html';
    header("location: ".$url);  
}
?>

if it don't work need to use javascript

<script type="text/javascript">
setTimeout("window.location = 'index.html'", 2000);
</script>
于 2013-02-03T12:43:34.667 に答える