我是新来的饼干和(实际上一般的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