>我已经设置了一个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.'">';
}
?>
对于实用的(全面工作)但不是标准化的解决方案,请使用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.'">';
这应该在客户端使用 javascript 完成。
这是因为输出不是按顺序发送到浏览器的。PHP 在脚本终止后,主要一次性发送输出。
请改用这个元标记在 html 中等待:
<meta http-equiv="Refresh" content="5; URL=/blah;">
请注意,<meta>
标签应始终放在 <head>
内。
请注意,浏览器始终可以选择忽略重定向。而且,虽然这是我个人的观点,但像这样的重定向很糟糕。而是在下一页加载恕我直言的顶部显示通知闪光消息。
你做这种重定向的方式是javascript
创建一个小的 JavaScript 函数,例如
function delayer() {
window.location = "http://example.com"
}
并添加
onLoad="setTimeout('delayer()', TIME_IN_MILLISECONDS_TO_WAIT)"
在您的 HTML 正文标签内
这是我
努力重定向的东西。似乎工作正常,并认为我会分享。
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;
}
<?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>