我已经设置了一个HTML表单,我正在使用PHP来验证在网页上显示消息之前一切正常。然后,我想在几秒钟后将用户重定向回主页。
问题是,我找不到等待5秒左右然后再进行重定向的方法。睡眠功能只需等待5秒钟,然后同时显示消息/重定向。有人有任何想法吗?
谢谢!
<?php
if (empty($_POST) === false) {
echo 'Success! You will not be able to log in until an administrator approves your account.';
sleep(5);
$url = 'index.html';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
}
?>
答案 0 :(得分:5)
对于实际(全面使用AFAIK)但非标准化解决方案,请使用Refresh
HTTP标头:
header('Refresh: 5; url=http://yoursite.com/index.html');
否则,您可以使用<meta>
代码实现效果,但不涉及sleep()
:
// This goes inside <head>, so obviously *before* the "success" message!
echo '<META HTTP-EQUIV=Refresh CONTENT="5; URL='.$url.'">';
答案 1 :(得分:2)
这应该在客户端使用javascript完成。
答案 2 :(得分:1)
这是因为输出没有按顺序发送到浏览器。在脚本终止后,PHP主要一次性发送输出。
而是使用此元标记在html中等待:
<meta http-equiv="Refresh" content="5; URL=/blah;">
请注意,<meta>
标记始终应放在<head>
内。
请注意,浏览器始终可以选择忽略重定向。而且,虽然这是我个人的意见,但这样的重定向很糟糕。而是在下一个页面加载imho的顶部显示通知flash消息。
答案 3 :(得分:0)
您进行此类重定向的方式是javascript
制作一个像
这样的小型javascript函数function delayer() {
window.location = "http://example.com"
}
并添加
onLoad="setTimeout('delayer()', TIME_IN_MILLISECONDS_TO_WAIT)"
答案 4 :(得分:0)
这是我努力重定向的内容。似乎工作正常,并认为我会分享。
DelayTime(15);
echo "<script>window.top.location.reload();</script>";
延迟时间功能:
function DelayTime($secs){
$now = time();
while($now < ($now + $sec)){
$now = time();
if($now >= ($now + $sec)){ break; }
}
return true;
}
答案 5 :(得分:-1)
<?php
if (empty($_POST) === false) {
echo 'Success! You will not be able to log in until an administrator approves your account.';
sleep(5);
$url = 'index.html';
header("location: ".$url);
}
?>
如果不起作用需要使用javascript
<script type="text/javascript">
setTimeout("window.location = 'index.html'", 2000);
</script>