我已經編寫了此腳本以防止未登錄的用戶查看某些頁面。我試圖讓它工作,但沒有喜悅。如果有人能告訴我什麼是錯的,我將非常感激。受登錄保護的頁面不需要登錄訪問
<?php
session_start();
require_once ("ConnectToMySql.php");
if (!isset($_SESSION['username']))
{
header("location:../Login/LoginForm.php");
}
?>
我已經編寫了此腳本以防止未登錄的用戶查看某些頁面。我試圖讓它工作,但沒有喜悅。如果有人能告訴我什麼是錯的,我將非常感激。受登錄保護的頁面不需要登錄訪問
<?php
session_start();
require_once ("ConnectToMySql.php");
if (!isset($_SESSION['username']))
{
header("location:../Login/LoginForm.php");
}
?>
首先,讓我們來測試,如果用戶進行身份驗證:
<?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的文件中。
根據這些測試,你至少可以找出什麼是不工作。
對不起,我已經離開。我已經嘗試了你的答案,它回聲了用戶將被限制。我已經刪除了回聲並退出,發現標題不起作用,這就是爲什麼它不阻止頁面。 – alexjfno1 2012-02-21 13:43:47
請詳細說明它是如何工作的。 – 2012-02-16 17:58:00
它允許我在未登錄的情況下訪問該頁面。 – alexjfno1 2012-02-16 18:09:04
您檢查了$ _SESSION以查看它包含哪些數據? – dm03514 2012-02-16 18:18:48