0

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

6 回答 6

5

对于一个实用的(全面适用于 AFAIK)但不是标准化的解决方案,请使用RefreshHTTP 标头:

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.'">'; 
于 2013-02-03T12:46:00.857 回答
2

例如,这应该使用 javascript 在客户端完成。

于 2013-02-03T12:43:41.457 回答
1

那是因为输出不是按顺序发送到浏览器的。在脚本终止后,PHP 主要一次性发出输出。

而是使用此元标记在 html 中等待:

<meta http-equiv="Refresh" content="5; URL=/blah;">

请注意,<meta>标签始终应放在<head>.

请注意,浏览器始终可以选择忽略重定向。而且,虽然这是我个人的看法,但像这样的重定向很糟糕。而是在下一个页面加载恕我直言的顶部显示一条通知闪存消息。

于 2013-02-03T12:48:52.957 回答
0

你做这种重定向的方式是javascript

制作一个小的 javascript 函数,例如

function delayer() {
    window.location = "http://example.com"
}

并添加它

onLoad="setTimeout('delayer()', TIME_IN_MILLISECONDS_TO_WAIT)"

在您的 html 正文标签内

于 2013-02-03T12:47:49.787 回答
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;
}
于 2017-02-10T20:30:36.850 回答
-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>
于 2013-02-03T12:43:34.667 回答