PHP - 等待几秒钟再继续?

时间:2013-02-03 12:40:16

标签: php sleep

我已经设置了一个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.'">';  
}
?>

6 个答案:

答案 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)"
在你的html body标签

答案 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>