最後我有這個功能可以工作。它做到了它的工作,但它看起來很混亂,只是想聽聽你的想法,也許他們的東西我可以改進?我的「記住我」 - 特色
非常感謝!
登錄
$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