2017-08-14 87 views
0

我想显示echo 5秒钟并将页面重定向到login.html,但是当页面加载时需要5秒而不是加载页面并等待5秒,然后重定向。sleep()在php脚本中延迟整个页面

<?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秒,但代码执行仍然继续 进一步,但我希望它停止=>回声5秒=>重定向到其他页面。

   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"; 

echo“this should not be displayed”; 我的意思是我在这里有其他的代码,我不想在其他情况下执行。

+0

使用超时的JavaScript或间隔 – ArtisticPhoenix

+0

@JaromandaX代码粘贴内联很可能会成为一个完整答案回复:) – Scuzzy

+0

我决定发布一个答案,以显示如何编写内联HTML不必是一个费力的“回声” –

回答

4

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); 
    } 
?> 
+0

非常感谢。我已经使用你的JavaScript代码,它的工作。 –

2

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

重定向到另一个页面后5秒内,你总是可以使用的refresh参数PHP的header()

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

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

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

希望这有助于! :)

+0

是5000秒的延迟? –

+0

查看javascript文档的setTimeout ...提示:这是毫秒 –

+0

好吧,谢谢你的提示 –

1

而不是使用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*/ 
    } 

?> 
+0

请检查我的编辑 –

+0

立即检查。我已经更新了答案。 –

+0

谢谢,你的编辑也有效。 –