2017-03-29 270 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中工作,但檢查你已經存儲在數據庫中。可能是你在字面上存儲字符串'「$ hashed_pa​​ssword」'。 – sas

回答

3

錯誤:'$password'改爲使用它作爲$password

更改爲:

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

此:

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