2015-11-17 59 views
1

我在測試一個受限制的頁面是否真的在做它的工作時遇到了麻煩。例如,用戶需要先登錄才能訪問頁面。在這個頁面上我有這樣的頂部:如何測試受限制的頁面? (PHP)

if(isset($_SESSION['userid'])!="") 
{ 
    header("Location: login.php"); 
} 

我相信這應該做的是讓這個如果用戶沒有登錄,就會重定向他們的login.php在那裏他們可以登錄。但是,我不知道這是否有效。當我嘗試在瀏覽器中測試它時,我可以訪問該頁面。我不知道這是因爲我還在登錄,還是隻是不起作用。我如何正確測試這個?

回答

1

我假設你已經開始了你的會話,但是如果沒有,你需要在每一個。單。頁。需要會話。

session_start(); 

是否有竅門。

你的比較不正確。通常的流是運行的而不是檢查一個isset() || empty()檢查時,如果isset()不等於""

if(!isset($_SESSION['userid'])) { ... 

作爲isset()返回一個布爾值(true/false)不是一個字符串(""

最後,即使重定向,您的腳本也將繼續執行。您需要結束腳本的運行。如果用戶沒有通過驗證:

session_start(); // start session 

if(!isset($_SESSION['userid']) || empty($_SESSION['userid'])) { 
    die(header("Location: login.php")); // ends script execution. 
} 
+0

感謝,似乎工作,雖然我得到的錯誤:'ERR_TOO_MANY_REDIRECTS'有時 – Voken

+0

該錯誤是最有可能從你的'登錄到來。 php'。代碼是什麼樣的? – Darren

+0

http://paste.ofcode.org/RV5f2yvzzbq4fXcZy97TDd – Voken