PHPでcrypt()を使用してユーザーを認証しようとしています。ログインページの私のコードは次のとおりです。
$valid = MemberDB::isValidMember($email_address, $password);
if ($valid == TRUE) {
$_SESSION['is_valid_member'] = TRUE;
header("Location: ../welcome/");
} else {
$login_message = 'log in';
include('./view/login.php');
}
TrueまたはFalseを戻すことになっている関数は次のとおりです。
public static function isValidMember($email_address, $password) {
$db = Database::getDB();
$query = "SELECT member_ID, password
FROM members
WHERE email_address = :email_address";
$statement = $db->prepare($query);
$statement->bindValue(':email_address', $email_address);
$statement->execute();
$row = $statement->fetch();
$statement->closeCursor();
return $row ? crypt($password, $row['password']) : FALSE;
}
現在、どのパスワードを入力しても、入力できます。$ validでvar_dumpを実行すると、暗号化されたパスワードの98文字の文字列が返されるため、$validがTRUEに等しくないことがわかります。助けてください!
ありがとう。