15

次のコードを使用して、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>";

同じことを達成するための最良の方法は何でしょうか?

4

5 に答える 5

44

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

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

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

<?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>
于 2012-09-19T15:46:45.280 に答える
8

これには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/

于 2012-09-19T15:46:36.190 に答える
7

純粋な PHP ではこれを行うことはできませんが、ここでは JavaScript が役に立ちます。

HTML を変更して、秒数を a に入れますspan

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

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

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);

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

于 2012-09-19T15:51:59.697 に答える
1

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

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

于 2012-09-19T15:47:45.800 に答える