Перенаправление 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, если нет, то какой был бы лучший способ добиться того же самого?

Author: mtk, 2012-09-19

4 answers

Следующее сразу перенаправит пользователя на login.php

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

Вы можете использовать следующее, чтобы задержать перенаправление на X секунд, но графического обратного отсчета нет (благодаря пользователю 1111929):

<?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';
    }
    i.innerHTML = parseInt(i.innerHTML)-1;
}
setInterval(function(){ countdown(); },1000);
</script>
 37
Author: rationalboss, 2017-05-23 11:47:01

Я бы использовал 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
Author: TimTastic, 2012-09-19 16:01:01

Вы не можете сделать это с помощью чистого PHP - но javascript здесь ваш друг.

Измените свой HTML, чтобы указать количество секунд в span:

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

Это будет уменьшать количество на странице каждую секунду, а затем перенаправлять на login.php, когда счетчик достигнет 0.

 7
Author: Aleks G, 2013-10-12 16:48:36

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

Не забывайте помещать любое содержимое html перед заголовком.

 1
Author: Marcus, 2012-09-19 15:47:45