2016-06-14 47 views
-1

我有以下代碼:php header首先發生什麼事?

<!DOCTYPE html> 
<html lang="cs"> 
    <head> 
     <title>Hardware audit - přihlášení</title> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <script src="js/myPureScript.js"></script> 
    </head> 
    <body onload="setAutoSession"> 
     <?php 
      if(file_exists("config.dat")){ 
       header('Location: login.php'); 
      } 
      else{ 
       header('Location: setup.php'); 
      } 
     ?> 
    </body> 
</html> 

myPureScript.js

function setAutoSession(){ 
    localStorage.setItem("username", "auto"); 
    console.log("nastavil jsem session"); // "I set the session" 
} 

功能setAutoSession的部分會被忽略,因爲我有log.console那裏,它不是在我的控制檯中顯示。那麼問題可能出在哪裏。我認爲唯一的問題可能是PHP頭部在我的函數之前啓動。

謝謝您的建議。

+1

HTTP頭必須在響應的開始總是發送。沒有辦法在輸出中間輸出標題。 –

+0

嘗試:''(注意圓括號) – David

+0

想想吧......你在這裏做什麼都沒有意義。如果你發送一個'Location'頭文件,那麼瀏覽器無需加載'body'。我希望這會導致PHP的錯誤。 *實際*發送給客戶端的是什麼?瀏覽器中爲你實際發生了什麼? – David

回答

4

PHP是服務器端,將在頁面呈現在客戶端之前執行。 JavaScript只會在頁面加載時執行,然後PHP已經執行。

另外,你應該把header()任何HTML輸出之前

如果你的錯誤報告,你應該得到這樣的東西,我相信

Warning: Cannot modify header information - headers already sent by (output started at /whatever.php:1234) in /whatever.php on line 123