前提・実現したいこと
PHPでpassword_hashとpassword_verifyを使ってログイン認証システムを作成しているのですが、
うまく実装できません。
password_hash($user_pass, PASSWORD_DEFAULT)を使ってMySQLにパスワードを登録することはできています。
ですが、password_verifyを使ってパスワードが一致しているかをチェックする機能を作るところを、どうしたらいいのかがわからなくなってしまいました。
以下のコードでログイン認証を試すと、ユーザーIDまたはパスワードが間違っています。と表示されます。
どこが悪いのかすらもわからない状況です。
改善点の指摘をよろしくおねがいします。
発生している問題・エラーメッセージ
エラーメッセージは出ていません。
該当のソースコード
try{ $user_id = $_POST['id']; $user_pass = $_POST['pass']; $user_id = htmlspecialchars($user_id, ENT_QUOTES, 'UTF-8'); $user_pass = htmlspecialchars($user_pass, ENT_QUOTES, 'UTF-8'); $dsn = 'mysql:dbname=sample;host=localhost;charset=utf8'; $user ='root'; $password =''; $dbh = new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = 'SELECT password FROM sample WHERE id=?'; $data[] = $user_id; $stmt = $dbh->prepare($sql); $rec = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($rec) && password_verify($user_pass, array_shift($rec))){ ユーザーIDとパスワードが一致しています。<br/>; }else{ print 'ユーザーIDまたはパスワードが間違っています。<br/>'; exit(); } } catch(Exeption $e){ exit(); } ?> ソースコード
試したこと
実際にIDとパスワードを入力して実行しましたが、
ユーザーIDまたはパスワードが間違っています。とでてしまいます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/30 13:07
2019/12/01 02:26
2019/12/01 02:29
2019/12/01 02:34
2019/12/01 02:40
2019/12/01 02:46
2019/12/01 02:52
2019/12/01 03:54
2019/12/02 11:31