最后我有这个功能可以工作。它做到了它的工作,但它看起来很混乱,只是想听听你的想法,也许他们的东西我可以改进?我的“记住我” - 特色
非常感谢!
登录
$result = mysql_query("SELECT * FROM users WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND password = '".md5($_POST['password'])."'");
$row = mysql_fetch_object($result);
if (mysql_num_rows($result) == 0) {
exit('Bad Login');
}
$_SESSION['id'] = mysql_result($result, 0, 'id');
# The user wants to be remembered
if (isset($_POST['remember'])) {
$key = md5(uniqid());
setcookie('remember', $key, time()+900000); /* expire in 10 days */
mysql_query("UPDATE users SET sessionkey = '$key' WHERE id = ".mysql_result($result, 0, 'id'));
}
而且每一页上我检查:
if (isset($_SESSION['id'])) {
header("Location: welcome.php");
}
elseif (isset($_COOKIE['remember'])) {
$rs = mysql_query("SELECT * FROM users WHERE sessionkey = '$_COOKIE[remember]'");
if (mysql_num_rows($rs) == 1) {
$_SESSION['id'] = 1;
header("Location: welcome.php");
}
}
你的问题是什么? – danben 2010-01-10 15:09:48
总有几种方法可以做事。你的方法对于一个小型非要求苛刻的应用程序是可以的。我可能会使用OOP方法,并将关注点和角色划分为认证服务,数据库适配器和用户实体等等。尽管如此,还是有更多的代码。 – Gordon 2010-01-10 15:35:12