2017-03-29 281 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'])) {