我搜索了一下,發現了有關我的問題的一千個問題,我試圖解決,但沒有得到幫助。所以我打開這個線程爲我的具體情況,我希望你能幫助我。登錄系統記住,怎麼辦?
我想說明一點,我在PDO中創建一個登錄系統,是一個初學者,但是我希望它總是能夠通過cookie持續登錄。
我做了幾個測試,但沒有結果。瀏覽器已關閉,必須重新輸入憑據。
我再說一遍,我已經在網站上搜索過,但還沒有設法解決。
的login.php
if (empty($_POST) === false) {
$username = trim($_POST['username']);
$password = trim($_POST['password']);
if (empty($username) === true || empty($password) === true) {
$errors[] = 'Sorry, but we need your username and password.';
} else if ($users->user_exists($username) === false) {
$errors[] = 'Sorry that username doesn\'t exists.';
} else if ($users->email_confirmed($username) === false) {
$errors[] = 'Sorry, but you need to activate your account. Please check your email.';
} else {
$login = $users->login($username, $password);
if ($login === false) {
$errors[] = 'Sorry, that username/password is invalid';
} else {
$_SESSION['id'] = $login; // The user's id is now set into the user's session in the form of $_SESSION['id']
$_SESSION['username'] = $usr;
$cookie_name = '_name_cookie_';
$hash = password_hash($password, PASSWORD_BCRYPT, ["cost" => 12]); // will result in a 32 characters hash
$cookie_time = (3600 * 24 * 30); // 30 days
setcookie($cookie_name, 'usr='.$usr.'&hash='.$hash, time() + $cookie_time);
header('Location: home.php');
exit();
}
}
}
類:users.php
public function login($username, $password) {
$this->db->query("SELECT * FROM users WHERE username = :username");
$this->db->bind(':username', $username);
$data = $this->db->single();
$hash = $data['password'];
$id = $data['id'];
#hashing the supplied password and comparing it with the stored hashed password.
if (password_verify($password, $hash)) {
return $id;
}else{
return false;
}
}
注意:在目前的形式我不小心檢查集成 「記住我」 ,我會稍後再做。
但是,我不能如何保持登錄用戶,cookie被正確插入,否則它不起作用。我該如何解決?
你是否在每個文件的開頭調用session_start()?我的登錄系統的工作原理與您的想法完全相同。我可以告訴你我是如何處理會話的,但是我不知道這是否是你想要的 – JRsz
這不是問題,每個頁面都會調用session_start(),但登錄將持續,但是有限。我想記錄用戶數據,所以我並不總是輸入您的詳細信息登錄。 –