1

パスワードの暗号化とログインの認証にPHPassを使用しています。

ログインしようとすると、エラーが発生します:_

警告:mysqli :: prepare()[mysqli.prepare]:無効なオブジェクトまたはリソースC:\ mysqli rootfile-blahblahblah \ include \ user.php on line 41

致命的なエラー:43行目のC:\ rootfile-blahblahblah \ include \ user.phpの非オブジェクトでメンバー関数bind_param()を呼び出す

認証のマニュアルに従いましたが、何らかの理由で機能していません。

認証機能のコードはこちら

   public static function authenticate($username, $password)
{
    $pwdhasher = new PasswordHash(8, FALSE);
    $hashed_pwd = $pwdhasher->HashPassword($password);

    $db = new mysqli();
$stmt = $db->prepare("SELECT hashed_password FROM users WHERE username=? LIMIT 1");
    if (!$stmt) die($db->error);
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($hashed_pwd);


if ($pwdhasher->CheckPassword($password, $hashed_pwd)) {
    return true;
} else {
    return false;
}
unset($pwdhasher);

}

そして、関数を実行するlogin.phpページの場合:_

$username = $database->escape_value(trim($_POST['username']));
$password = $database->escape_value(trim($_POST['password']));

    $user = User::find_by_id(1);
    $found_user = User::authenticate($username, $password);

    if ($found_user)
    {
        $session->login($found_user, $user);
        $message = "You have Logged in.";
        redirect_to("index.php");
    }
    else { $message = "Incorrect username/password."; }

}

私はたくさん検索してたくさんのことを試しましたが、役に立ちませんでした。:/

ご覧のとおり、データベースにあるユーザー名とハッシュ化されたパスワードを確認し、正しい場合はログインします。checkPassword()を確認し、HashPasswordで暗号化する方法は知っていますが、作成方法が見つかりません。ユーザー名とパスワードを認証します。

4

0 に答える 0