ログインおよび登録スクリプトを実行しようとしています。ほとんどの作業を終えることができました。ただし、ユーザーを登録した後、そのユーザーとしてログインできません。つまり、登録ユーザーはログインできません。:)
これは、特定の問題に関連するコードです。
$login = login ($username, $password);
if ($login === false) {
$errors [] = 'That username/password combination is incorrect';
} else {
$_SESSION ['user_id'] = $login;
header ('Location: index.php');
exit ();
}
function login ($username, $password) {
$user_id = user_id_from_username ($username);
$username = sanitize ($username);
$password = md5($password);
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE username = '$username' AND password = '$password'"), 0) == 1) ? $user_id : false;
}
上記のクエリは、以前にこのように (以下) 書きました。このように書くと、ログインできましたが、「文字通り」任意のパスワードを使用できました。
function login ($username, $password){
$user_id = user_id_from_username ($username);
$username = sanitize ($username);
$password = sanitize ($password);
$query1 = mysql_query("SELECT COUNT(user_id) FROM users WHERE username = '$username'");
$query2 = mysql_query("SELECT COUNT(user_id) FROM users WHERE password = '$password'");
return (mysql_result($query1, 0) == 1) ? $user_id : false;
return (mysql_result($query2, 0) == 1) ? $user_id : false;
つまり、クエリを 2 つの部分に分割しましたが、パスワード クエリはまったく無関係であることに気付きました (「コメントアウト」したとしても)。
PS。mysql クエリの代わりに PDO または Mysqli を使用する必要があり、md5 はそれほど安全ではないことはわかっています。このなぞなぞのために、これらのことは無視してください。