1

登録:

    $hashed_password = password_hash($password, PASSWORD_BCRYPT);

    $query = "INSERT INTO users(username,email,password) VALUES('" . $username . "','" . $email . "','" . $hashed_password . "')";
    mysql_query($query);

検証:

   $query = "SELECT id,username,password FROM users WHERE email='" . $email . "'";
   $row = mysql_fetch_assoc(mysql_query($query));

   if (password_verify($password, $row["password"])) {

私が使用したすぐに廃止予定のメソッドは無視してください。すぐに変更します。

なぜこれが機能しないのですか?ユーザー名のパスワードが間違っていると検出されます。

このライブラリを使用して、以前のバージョンで PHP 5.5 関数を許可しています: https://github.com/ircmaxell/password_compat

(はい、その関数を使用できます。私は PHP 5.3.15 を使用しています)

4

1 に答える 1

2

MySQL フィールドがハッシュ全体を格納するのに十分な長さであることを確認してください。関数によっては長くなる可能性があります。ハッシュをデータベースに挿入するときに短すぎると、収まるように静かに切り捨てられ、ハッシュに対するパスワードのチェックが失敗します。

于 2013-02-21T20:35:52.353 に答える