Перенаправление 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, если нет, то какой был бы лучший способ добиться того же самого?
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>
Я бы использовал 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/
Вы не можете сделать это с помощью чистого 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.
header("Refresh: 2; url=$your_url");
Не забывайте помещать любое содержимое html перед заголовком.