2012-02-16 136 views
0

我已經編寫了此腳本以防止未登錄的用戶查看某些頁面。我試圖讓它工作,但沒有喜悅。如果有人能告訴我什麼是錯的,我將非常感激。受登錄保護的頁面不需要登錄訪問

<?php 

session_start(); 
require_once ("ConnectToMySql.php"); 

if (!isset($_SESSION['username'])) 
{ 
    header("location:../Login/LoginForm.php"); 
} 
?> 
+0

請詳細說明它是如何工作的。 – 2012-02-16 17:58:00

+0

它允許我在未登錄的情況下訪問該頁面。 – alexjfno1 2012-02-16 18:09:04

+1

您檢查了$ _SESSION以查看它包含哪些數據? – dm03514 2012-02-16 18:18:48

回答

0

首先,讓我們來測試,如果用戶進行身份驗證:

<?php 

session_start(); 
var_dump($_SESSION); // print all the session to see if $_SESSION['username'] is set 
exit; 
... 

如果用戶登錄,重新啓動瀏覽器來結束會話。 (您必須重新啓動瀏覽器,這是不足以關閉該選項卡)

如果$_SESSION爲空,用戶沒有登錄,刪除第一個測試線,讓我們看看是否執行去header函數:

if (!isset($_SESSION['username'])) 
{ 
    echo "User will be redirected"; 
    exit; 
    header("location:../Login/LoginForm.php"); 
} 

如果目前狀態良好,則意味着重定向不起作用。 請注意,如果有任何輸出已發送,則不能再將標頭髮送到瀏覽器。如果是這種情況,你需要檢查你的文件(也包括文件,如ConnectToMySql.php)任何輸出。一個常見的錯誤是在配置文件中關閉php標籤?>後添加一個空格,這很難找到和調試。一個簡單的做法是避免將PHP結尾標記?>放在僅包含PHP的文件中。

根據這些測試,你至少可以找出什麼是不工作。

+0

對不起,我已經離開。我已經嘗試了你的答案,它回聲了用戶將被限制。我已經刪除了回聲並退出,發現標題不起作用,這就是爲什麼它不阻止頁面。 – alexjfno1 2012-02-21 13:43:47