正しいパスワードを入力したのにログインできない
Q&A
解決したいこと
ある教材を使用してphpを勉強しています。
ログイン画面を作成しているのですが、正しいパスワードを入力してもログインできません。
ログインできるようにしたいです。
コードはほとんど教材通りですが、
暗号化の部分だけmd5(教材)からpassword_hash()に変更しました。
password_hashの場合何かコードを修正すべきなのでしょうか。
よろしくお願いいたします。
###
<body>
<div class="staff-mgn">
<div class="staff-dsp">
<h2>スタッフログイン</h2>
<form method="post" action="staff_login_check.php">
<div class="inport-list">
<h3>スタッフコード</h3>
<input type="text" name="code" >
</div>
<div class="inport-list">
<h3>パスワード</h3>
<input type="password" name="pass">
</div>
<input type="submit" value="ログイン">
</form>
</div>
</div>
</body>
<?php
try
{
require_once('../common/common.php');
$post=sanitize($_POST);
$staff_code=$post['code'];
$staff_pass=$post['pass'];
$staff_pass=password_hash($staff_pass, PASSWORD_DEFAULT);
$dsn='mysql:dbname=shop;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql='SELECT name FROM mng_staff WHERE code=? AND password=?';
$stmt=$dbh->prepare($sql);
$data[]=$staff_code;
$data[]=$staff_pass;
$stmt->execute($data);
$dbh=null;
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
if($rec==false)
{
print '<p>スタッフコードかパスワードが間違っています。</p>';
print '<div class="btn"><a href="staff_login.html"> 戻る</a></div>';
}
else{
session_start();
$_SESSION['login']=1;
$_SESSION['staff_code']=$staff_code;
$_SESSION['staff_name']=$rec['name'];
header('Location:staff_top.php');
exit();
}
}
catch(Exception $e)
{
print 'ただいま障害により大変ご迷惑をお掛けしております。';
exit();
}
?>
自分で試したこと
【試したこと1】
md5で試したところ正常にログインできました。
【試したこと2】
調べによるとpassword_hashの場合、パスワードの長さを60以上に設定しなければならないとあったので、
60以上に設定しました。
結果は変わりませんでした。
0