PHP - 等待几秒钟,然后再继续


PHP - wait a couple of seconds before continuing?

>我已经设置了一个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>