質問失礼します。
現在勉強でログイン機能の勉強をしています。
そこでログイン時、メールアドレスとパスワードを入力してDBに該当する登録があるか照合しています。
DBにハッシュされたパスワードを保存するところまではできました。
しかし実際にそれを使用して称号する際うまく照合できません。
ハッシュされたパスワードはmembersテーブルのpassに格納しています。
コードは下記のようなコードで試しました。
$pass = $_POST['password']; $mail = $_POST['mail']; $statement = $dbh->prepare("SELECT pass FROM members WHERE mail = $mail"); $statement -> execute(); $hash = $statement -> fetch(PDO::FETCH_ASSOC); $check = password_verify($pass, $hash); ==========================================bodyの記述========================================== if($check === true){ echo 'ログインに成功しました。'; } else { echo 'メールアドレスかパスワードが正しくありません。'; }
上記ではメールアドレスかパスワードが正しくありません。が表示されます。
echoで$passと$mailを表示したところ値自体は正しく受け取れていました。
他にも下記のようなコードで試しましたが結果は同じです。
$pass = $_POST['password']; $mail = $_POST['mail']; $statement = $dbh->prepare("SELECT pass FROM members WHERE mail = $mail"); $statement -> execute(); $hash = $statement -> fetch(PDO::FETCH_ASSOC); ==========================================bodyの記述========================================== if(password_verify($pass, $hash['hash'])){ echo 'ログインに成功しました。'; } else { echo 'メールアドレスかパスワードが正しくありません。'; }
いろいろと知識不足かと思いますがご教授やヒントをいただけると幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/18 04:38
2018/11/18 04:47
2018/11/18 04:52
2018/11/18 05:45
退会済みユーザー
2018/11/18 05:48
2018/11/18 05:57
退会済みユーザー
2018/11/18 05:58
2018/11/18 06:09