我有一个页面,使用以下代码在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中完成,如果不是最好的方法来实现同样的目标?
答案 0 :(得分:40)
以下内容会立即将用户重定向到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>
答案 1 :(得分:8)
我会使用javascript来实现这个
var counter = 10;
setInterval(function() {
counter--;
if(counter < 0) {
window.location = 'login.php';
} else {
document.getElementById("count").innerHTML = counter;
}
}, 1000);
答案 2 :(得分:7)
你不能用纯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);
这将每秒递减页面上的计数,然后在计数器达到0时重定向到login.php
。
答案 3 :(得分:1)
header("Refresh: 2; url=$your_url");
请记住不要在标题之前放置任何html内容。
答案 4 :(得分:0)
此方法在3秒钟的重定向页面重定向到索引页面时效果很好,但不会在屏幕上显示倒数计时器。
<?php
echo "New record has been added successfully ! This page will redirect in 3 seconds";
header('refresh: 3; url=index.php');
?>