2
我在登錄到系統後正在努力使用PHP
登錄和用戶驗證。我知道基礎知識,但我不確定我是否做得對。我會盡力一步一步解釋它。PHP會話安全密鑰步驟
- 我有一個用戶名和密碼的表單。
- 用戶輸入他們的登錄名和密碼後,我使用
LDAP
驗證來授權他們。如果認證通過,那麼我需要開始新的會話。 新的會議(這是我奮鬥的地方)。
if ($validation->ldap_authentication()) { $session = new session(); $session -> login($validation->getUsername(), $validation->logedAs(), $validation->getSID()); if($session->validate_login()) { exit(header('Location:index2.php')); } else { echo 'error'; } }
而且我session class
:
class session
{
public function __construct()
{
if(!isset($_SESSION))
{
session_name(SESSIONNAME);
ob_start();
session_start();
} else {
session_regenerate_id(true) ;
}
}
public function login($sessionUserName, $logedAs, $sid)
{
$_SESSION['logedUserName'] = isset($sessionUserName) ? $sessionUserName : null;
$_SESSION['logedAs'] = isset($logedAs) ? $logedAs : null;
$_SESSION['sid'] = isset($sid) ? $sid : null;
}
public function validate_login()
{
if (!isset($_SESSION['logedUserName']) || (trim($_SESSION['logedUserName']) == '') ||
!isset($_SESSION['logedAs']) || (trim($_SESSION['logedAs']) == '') ||
!isset($_SESSION['sid']) || (trim($_SESSION['sid']) == '')
)
{
return false;
} else {
return true;
}
}
}
- 因此,在另一個頁面,我需要(再次)開始授課
session
和驗證validate_login()
? - 對我來說,它看起來真的很差認證。
我需要添加和改進什麼?
我已經在網上搜索,但無法找到答案,也不知道我究竟需要改進什麼。
第一:我不明白你爲什麼只在沒有會話被設置時才執行'ob_start()'?第二個'session_regenerate_id()'應該每個請求只調用一次,你的代碼在'session'的每個新實例上都執行它''http://stackoverflow.com/questions/22965067/when-and-why-i-should-use-session -regenerate-id#22965580 – JustOnUnderMillions
我建議你通過一次會話的概念。所有你需要做的就是檢查會話是否存在,如果不是重定向到登錄屏幕,如果是,然後重定向到索引或任何你想要的。您可以添加一個檢查,如果$ _SESSION ['logedUserName']'爲空,則登錄屏幕繼續。 – Aatman
@JustOnUnderMillions所以如果我明白我需要調用'session_regenerate_id(true)'如果validate_login爲真? – user3686909