ログイン機能の実装練習としてフォームにemail,password入力を求め、それぞれをPOSTで受け取る。
phpmyadminでhash化されたパスワードをログイン入力画面より、password_verifyを使い、DBのpassと入力されたpassが一致していたらtrueを返し、ログインが成功させるようにしたい。
*今回は新規登録を作成していないので、hash化はphpMyAdminのインサート機能を用い、passのhash化。
↓phpMyAdmin ver 5.1.1最新
以下のコードはMVCを用いて行っているので、//で補足しています。
if(!$count){ //バリテーションのcountが0の時 $user = $users->user_info(); $user_data = $user['user']; if(password_verify($_POST['password'],$user_data['password'])){
2行目、、インスタンス化したusersクラスのuser_infoを実行、
user_infoではPOSTで受け取った$_POST['email']をもとにDBにそのemailが存在したら、そのIDの情報を
全て取得としています。(中身はしっかり受け取れています)
3行目の$user['user']は別クラスで配列を作成して呼んでいます。
if(password_verify($_POST['password'],$user_data['password'])){を実行すると
falseに飛んでしまいます。
var_dump($user_data);の結果 array (size=5) 'id' => string '16' (length=2) 'country_id' => string '0' (length=1) 'email' => string 'manage@gmail.com' (length=16) 'password' => string '$2y$10$4ZBlg3yy9rq5l1GbIkhr..PDgRV93ChTRjQ1ud8wEf0.osGIKSxz.' (length=60) 'role' => string '1' (length=1) var_dump($_POST['password']);の結果 string '1010' (length=4)
'password' => string '$2y$10$4ZBlg3yy9rq5l1GbIkhr..PDgRV93ChTRjQ1ud8wEf0.osGIKSxz.' (length=60)
このハッシュは'1010'をハッシュ化しています。
いろいろ調べたのですが、DBの文字数制限などは大丈夫でした。
phpMyAdmin内のhashは使わないほうがいいのでしょうか。
よろしくお願いいたします。
OS mac
環境 MAMP phpmyadmin