web-dev-qa-db-ja.com

10秒のカウントダウンをリダイレクト

10秒後に次のコードでユーザーをリダイレクトするページがあります。

<META HTTP-EQUIV="refresh" CONTENT="10;URL=login.php">

次に、このコードをPHPでエコーし、「10」(秒)のように、10、9、8、7として動的にカウントダウンします...ユーザーは残りの秒数を見ることができますページのリダイレクト。

echo "We cant find you on the system. <br/> Please return to the <b><a href='login.php'>Login</a></b> page and ensure that <br/>you have entered your details correctly. 
<br>
<br>
<b>Warning</b>: You willl be redirected  back to the Login Page <br> in <b>10 Seconds</b>";

これをPHPで実行できる方法があるかどうか疑問に思っていましたが、そうでない場合は同じことを達成する最良の方法は何ですか?

14
user1662306

次は、ユーザーをすぐにlogin.phpにリダイレクトします

<?php
header('Location: login.php'); // redirects the user instantaneously.
exit;
?>

以下を使用してリダイレクトをX秒遅らせることができますが、グラフィカルなカウントダウンはありません( ser1111929 のおかげです):

<?php
header('refresh: 10; url=login.php'); // redirect the user after 10 seconds
#exit; // note that exit is not required, HTML can be displayed.
?>

グラフィカルなカウントダウンが必要な場合、JavaScriptのサンプルコードを次に示します。

<p>You will be redirected in <span id="counter">10</span> second(s).</p>
<script type="text/javascript">
function countdown() {
    var i = document.getElementById('counter');
    if (parseInt(i.innerHTML)<=0) {
        location.href = 'login.php';
    }
if (parseInt(i.innerHTML)!=0) {
    i.innerHTML = parseInt(i.innerHTML)-1;
}
}
setInterval(function(){ countdown(); },1000);
</script>
41
rationalboss

これにはjavascriptを使用します

var counter = 10;
setInterval(function() {
    counter--;
    if(counter < 0) {
        window.location = 'login.php';
    } else {
        document.getElementById("count").innerHTML = counter;
         }
}, 1000);​

更新: http://jsfiddle.net/6wxu3/1/

8
TimTastic

Pure PHP-でこれを行うことはできませんが、javascriptはここでの友人です。

spanに秒数を入れるようにHTMLを変更します:

<b><span id="count">10</span> Seconds</b>

次に、metaタグを削除して、次のjavascriptを使用します。

var count = 10;
function decrement() {
    count--;
    if(count == 0) {
        window.location = 'login.php';
    }
    else {
        document.findElementById("count").innerHTML = "" + count;
        setTimeout("decrement", 1000);
    }
}
setTimeout("decrement", 1000);

これにより、ページのカウントが1秒ごとに減少し、カウンターが0に達したときにlogin.phpにリダイレクトされます。

7
Aleks G

header("Refresh: 2; url=$your_url");

ヘッダーの前にhtmlコンテンツを置かないでください。

1
Marcus