1

アカウントの作成時にパスワードをハッシュしていますが、(パスワードを VARCHAR(60) に設定して) 機能していますが、これを実行しようとすると:

    $query = $this->CI->db->query("SELECT * FROM users WHERE email = ?", $email);

    if ($query->num_rows() > 0) {
        $user_pass = $query->row()->password;

        $hasher = new PasswordHash(PHPASS_HASH_STRENGTH, PHPASS_HASH_PORTABLE);

        if ($hasher->CheckPassword($user_pass, $pass)) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }

常に false を返します。これがなぜなのかについてのアイデアはありますか?(私が提供しているパスワードは正しいです)

4

1 に答える 1

1

チェックパスワードフィールドを逆にしたと思います。次のようにする必要があります。

$hasher->CheckPassword(password which has to be checked, password from database).

Check Password はチェック対象のパスワードをハッシュするため、これは違いを生みます。

于 2012-09-27T09:02:48.177 に答える