2017-08-14 158 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

謝謝,你的編輯也有效。 –