2012-07-24 18 views
0

我正在製作一個涉及登錄和保存會話等的網站。在我的一個頁面上,php登錄檢查代碼在文件開始處不執行。完全一樣。所有這一切都是正常的HTML之後。它附加到一個js文件。任何原因,爲什麼不會被稱爲?提前致謝!PHP不在html開頭執行

<?php 
session_start(); 

if (!isset($_SESSION['username'])) { 

    header("Location:index.php"); 

} 
?> 
+0

'它附加到一個js文件' - 這是什麼意思?它是什麼? – asprin 2012-07-24 05:23:46

+0

你怎麼知道它不執行?也許會話變量已經設置好了。 「什麼是附加到一個JS文件」是什麼意思?你的HTML文件實際上是JS? – Joey 2012-07-24 05:23:53

+0

啊。讓我澄清 - 也有一個JavaScript文件,如'' – 2012-07-24 05:26:30

回答

0

您的代碼是正確的,但通常您嘗試錯誤地找到此代碼。

把這個代碼在頂部或更好地從一個函數調用這個看這個

<? 

function checkAdminLogin() 
    { 
     session_start(); 

     if (!isset($_SESSION['login_admin'])) 
     { 

       header("location:index.php?user=login"); 
     } 
    } 

?> 

和它保存爲islogin.php

,利用此功能在以往任何時候ü希望

說在home.php看起來像這樣

<?php 

include("islogin.php"); 
checkAdminLogin(); 
?> 
+1

這真的不會比Quinn做的更好。 – Ben 2012-07-24 06:05:24

+0

謝謝!這工作。 – 2012-07-26 18:32:31

+0

哎呀不,它不。我結束了我的JavaScript做到了通過ajax(我已經提出請求onLoad) – 2012-07-26 22:02:33

0

session_start()和任何header('...')應位於呼叫頁面的開頭。這些是開始/繼續每個頁面的會話。標題可以設置頁面內容,到期時間,重定向和其他信息。如果任何HTML或輸出在其調用之前完成,則代碼將不會執行。

+0

但是之前沒有HMTL – 2012-08-05 23:32:10

0

如果您在代碼之前輸出任何html,它將不起作用。

你可以使用元重定向,這將避免這個問題。

<?php 
session_start(); 

if (!isset($_SESSION['username'])) { 

    echo '<meta HTTP-EQUIV="REFRESH" content="0; url=index.php">'; 

} 
?> 
+0

嗯我試試這個 – 2012-08-05 23:32:56