2010-12-07 287 views
1

我有一個關於PHP登錄系統的問題。是否有可能在另一個登錄系統中擁有登錄系統?雙重登錄PHP系統

下面是一個例子:我登錄到一個網站,PHP創建會話。然後我想訪問另一個頁面,使用一些更安全的內容,因此我要求用戶重新鍵入他們的用戶名/密碼以訪問該頁面。

這可以使用不同的會話或同一會話來完成嗎?如果原始會話沒有結束,那將是非常好的,因此一旦用戶在具有更高安全性的內容的頁面上完成,他們可以繼續使用前面的頁面。

希望這是有道理的,任何可能指向我正確方向的信息將不勝感激!

回答

1

它可以使用相同的會話完成。

只要做了這樣的事情,一旦他們登錄到第二個區域。

$_SESSION['secondArea'] = TRUE; 

你可以unset()當他們登出第二個區域。

3

確定這是可能的。只需保持用戶已經執行了哪種認證即可。

像:

$_SESSION['auth_type'] = 'first one'; // when user logged in first time 
$_SESSION['auth_type'] = 'more secured one'; // when user logged in second time time 

那之後你可以檢查一種認證用戶有什麼:

if ($_SESSION['auth_type'] == 'first one') { 
    // ask for second auth here 
} 

等...

0

如果您希望您的用戶登錄再次每次他們查看內容,可以使用POST登錄表單,然後在頁面上顯示數據之前,檢查POST的用戶名和pa顯示內容之前。

例如(僞代碼)

if request is a POST and username and password are valid: 
    display content 
else: 
    display login form 
0

您可以使用相同的會話 - 由他身邊的相同cookie標識。但是,只需設置和檢查不同的會話變量即可表示各種登錄狀態:$_SESSION['hasUserAccess']$_SESSION['hasAdminAccess']

或許:$_SESSION['accessStatus']它可以有像'public','user','admin'值。

0

如果你想保護它甚至更多,我會建議使用會話的MD5。

$_SESSION['userAuth'] = 'here-md5-hash'; 

加密MD5並存儲它(僅限用戶名),然後保存。 所以你的服務器知道解密。

這讓人很難攔截它。