我是新來的餅乾和(實際上一般的PHP),我想爲我正在工作的網站實現「記住我」系統。在閱讀了很多帖子和其他網站之後,我知道我不應該在cookie中輸入用戶的密碼或任何其他信息。一種解決方案是在數據庫表中使用remember_key
,每次用戶使用「記住我」複選框進行登錄時都會重新生成該複選框。當用戶再次訪問該頁面時,代碼應該從db中選擇remember_key
,並檢查是否與remember_key
相同,如果它是用戶登錄的。但我不確定如何實現此操作。我以我認爲我應該的方式編寫了一些代碼,但我可以使用一些幫助來查看我已有的是否正確以及如何繼續。這是我現在有:(?或者它的價值)記住並驗證用戶使用Cookie
function rememberUser($id) {
$remember = md5(uniqid(mt_rand(),true));
$stmt = $mysqli->prepare("UPDATE USERS SET USER_REMEMBER_KEY = ? WHERE USER_ID = ?");
$stmt->bind_param('si', $remember, $id);
$stmt->execute();
setcookie("remember", $remember, time()+60*60*24*30, "/", "www.someName.com", false, true);
}
function isValidUser($id) {
$stmt = $mysqli->prepare("SELECT * FROM USERS WHERE USER_REMEMBER_KEY = ? AND USER_ID = ?");
$stmt->bind_param('si', $_COOKIE['remember'], $id);
$stmt->execute();
$stmt->store_result();
$count = $stmt->num_rows;
if($count == 1) {
return true;
}
else {
return false;
}
}
function forgetUser($id) { // not sure about this method at all!
setcookie("remember", '', time()-3600, "/", "www.someName.com", false, true);
}
forgetUser()
將刪除,但它是如何知道它是特定人的餅乾嗎?我想對我現在的代碼提出任何意見/建議/提示/提示或其他任何內容,以及我如何改進它。
爲了您的信息我已經知道會話,他們很容易使用和更安全(我猜),但我需要保持用戶登錄更長的時間(如FB)和會話不夠好那。我也聽說長時間的會話不會保證刪除。
關於安全性:我的網站不需要超級超級安全,我想這個令牌就足夠了嗎?
小艾深思熟慮。請記住,您也可以使用PHP會話[PHP](http://www.php.net/manual/en/function.session-start.php),它還存儲會話唯一的散列。 – Bradmage 2012-03-11 15:54:49
但我已經解釋過會話不會保留足夠長的時間:) – Loolooii 2012-03-11 16:01:19
我只是在看底部的文本,並不確定你是否剛剛添加它,或者我是因爲我很掙扎保持我的眼睛開放:)抱歉。 – Bradmage 2012-03-11 16:02:30