sleep()在php脚本

时间:2017-08-14 04:48:56

标签: javascript php

我想显示回显5秒并将页面重定向到login.html但是当页面加载时需要5秒而不是加载页面并等待5秒然后重定向。

<?php

  session_start();
  if (isset($_SESSION['name'])) {
      echo $_SESSION['name'];
  } else {
      echo "Login To Order";
      sleep(5);
      echo "<script type=\"text/javascript\">
                window.location.href = \"login.html\"; 
            </script>";
  }

?>

编辑: 好吧,这似乎延迟了5秒,但代码执行仍在继续 进一步,但我希望它停止=&gt;回声5秒=&gt;重定向到另一页。

             echo "Login To Order"; 
             echo "<script type=\"text/javascript\">
                      window.setTimeout(function() {
                              window.location.href=\"login.html\";
                              }, 5000);
                     </script>";
            echo "this should not be displayed";

回声“这不应该显示”; 我的观点是,我在下面有其他代码,我不想在其他情况下执行。

3 个答案:

答案 0 :(得分:3)

PHP预处理服务器上的页面,然后将页面发送到客户端浏览器 - 在服务器上休眠很少等同于客户端上的延迟

使用setTimeout

将延迟放在客户端
<?php
    session_start(); 
    if (isset($_SESSION['name'])){
        echo $_SESSION['name'];
    } else {
?>
        Login To Order
        <script>
            setTimeout(function() {
                window.location.href="login.html";
            }, 5000);
        </script>
<?php
        exit(0);
    }
?>

请注意如何从?>关闭PHP预处理以使脚本更易于编写,然后在<?php上重新启用PHP

甚至更简单,使用HTTP标头为您完成工作

<?php
    session_start(); 
    if (isset($_SESSION['name'])){
        echo $_SESSION['name'];
    } else {
        header("refresh:5; url=login.html"); 
?>
        Login To Order
<?php
        exit(0);
    }
?>

答案 1 :(得分:2)

在呈现DOM之前, sleep() 服务器处理。

要在5秒后重定向到另一个页面,您可以随时使用PHP的refresh参数 header()

header("refresh:5; url=login.html"); 

但是,考虑到您还希望在用户重定向之前显示输出,您可能希望在JavaScript中使用 setTimeout()

window.setTimeout(function() {
  window.location.href=\"login.html\";
}, 5000);

希望这有帮助! :)

答案 2 :(得分:0)

而不是使用PHP使用Javascript来做你想做的事。

这是一个示例

<?php

  session_start();
  if (isset($_SESSION['name'])) {
      echo $_SESSION['name'];
  } else {
      echo "Login To Order";
      echo '<script>setTimeout(function(){ window.location.replace("http://stackoverflow.com"); }, 5000);</script>';
      return;
      /*other codes*/
  }

?>