2017-03-29 11 views
1

申し込みコード:ログインの問題PHPで検証

$first_name = $_POST['first_name']; 
    $last_name = $_POST['last_name']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $hashed_password = password_hash($password, PASSWORD_DEFAULT); 
    $contact = $_POST['contact']; 
    $address = $_POST['address']; 

    $query = "INSERT INTO `tbl_user`(`first_name`, `last_name` , `email` , `password`,`contact`, `address`) VALUES 
     ('$first_name','$last_name','$email','$hashed_password','$contact','$address')"; 
    $sql = mysqli_query($con,$query); 

ログインコード:

$email = $_POST['email']; 
    $password = $_POST['password']; 
    $query = "SELECT * FROM `tbl_user` WHERE `email` = '$email'"; 
    $sql = mysqli_query($con,$query); 
    $row = mysqli_fetch_array($sql); 
    if (password_verify('$password', $row['hashed_password'])) { 
     echo 'Password is valid!'; 
    } else { 
     echo 'Invalid password.'; 
    } 

しかし、毎回、それは私が正しいと入力しても、無効なパスワードを示しています資格情報。

+0

'INSERT INTO ... password' ...' password_verify(... $行[ 'hashed_pa​​ssword' ]) 'hmm ... –

+0

配列を取得していて、インデックス番号を与えていない – Gert

+0

PHPでは文字列補間がどのように機能するのかよく分かりませんが、dbに格納されている内容を確認してください。文字通り '" $ hashed_pa​​ssword "'という文字列を格納している可能性があります。 – sas

答えて

3

エラー:'$password'代わりに$passwordとしてください。

に変更し、これを:

if (password_verify('$password', $row['hashed_password'])) { 

この:

if (password_verify($password, $row['hashed_password'])) {