У меня есть страница, которая перенаправляет пользователя через 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, если не то, что было бы лучшим способом добиться того же?
Следующее перенаправит пользователя сразу на 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'; } 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 перед заголовком.