登录页面无法验证我的密码

时间:2020-04-01 22:31:45

标签: php authentication

我很难在创建的登录页面上验证我的登录凭据。似乎无法识别我为我的帐户创建的密码。它确认存在一个帐户,但似乎与输入的密码和存储的hash_password不匹配。

<?php

 include('config.php');
 session_start();

 if (isset($_POST['Login'])) {

     $username = $_POST['username'];
     $user_password = $_POST['user_password'];

     $query = $connection->prepare("SELECT * FROM user_info WHERE USERNAME=:username");
     $query->bindParam("username", $username, PDO::PARAM_STR);
     $query->execute();

     $result = $query->fetch(PDO::FETCH_ASSOC);

     if (!$result) {
         echo '<p class="error">Username password combination is wrong!</p>';
     } 
     else {
        echo 'here';
        echo $user_password;
        echo $result['user_password'];

         if (password_verify($user_password, $result['user_password'])) {
             $_SESSION['user_id'] = $result['ID'];
             echo '<p class="success">Congratulations, you are logged in!</p>';
         } else {
             echo '<p class="error">Username password combination is wrong! 2</p>';
         }
     }
 }

 ?>

2 个答案:

答案 0 :(得分:0)

解决方案是我必须调整password变量的长度。最初是20,很明显,当您对密码进行哈希处理时,其长度明显更长。因此,我只是将密码长度更改为255。

答案 1 :(得分:-1)

password_verify需要哈希。也许此功能的第二个参数是普通密码或类似的密码。以上效果很好:

$hash = password_hash('test1234', PASSWORD_DEFAULT);
print_r(password_verify('test1234', $hash));