【问题标题】:Getting my password incorrect besides being correct除了正确之外,我的密码不正确
【发布时间】:2018-05-31 19:02:48
【问题描述】:

我不知道为什么我的密码不正确,我的注册页面工作正常。每次我尝试登录时,它都会在我的 url 中显示 login=incorrect password。我试图在网上找出所有可能的问题但没有任何帮助。

    <?php 
    session_start();

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

    include_once 'dbt.inc.php';

    $username = mysqli_real_escape_string($conn, $_POST['username']);
    $password = mysqli_real_escape_string($conn, $_POST['password']);

    //error handlers
    if(empty($username) || empty($password)){
        header("Location: ../main_login.php?login=empty");
        exit();
    }
    else{
        $sql = "SELECT * FROM users WHERE user_username = '$username'";
        $run = mysqli_query($conn, $sql);
        $result = mysqli_num_rows($run);

        if ($result < 1) {
            header("Location: ../main_login.php?login=error");
            exit(); 
        }
        else{
            if ($row = mysqli_fetch_assoc($run)) {
                $hashedpasswordcheck = password_verify($password, $row['user_password']);
                if ($hashedpasswordcheck == false) {
                    header("Location: ../main_login.php?login=incorrect password");
                    exit();
                }
                elseif($hashedpasswordcheck == true){
                    //log in user
                    $_SESSION['user_id'] = $row['user_id'];
                    $_SESSION['user_first'] = $row['user_first'];
                    $_SESSION['user_last'] = $row['user_last'];
                    $_SESSION['user_email'] = $row['user_email'];
                    $_SESSION['user_username'] = $row['user_username'];
                    $_SESSION['user_password'] = $row['user_password'];
                    header("Location: ../main_login.php?login=success");
                    exit();

                }
            }
        }

    }
}
           else{
          header("Location: ../main_login.php?login=error");
         exit();
}



 ?>

【问题讨论】:

  • 用户注册时如何存储密码?您使用的是哪种哈希方法?
  • 我通过对密码进行哈希处理然后将其直接存储到数据库中来使用它@prit.patel
  • 是的,但是您使用的是哪种散列方法? md5()、password_hash()哪一个?
  • 我正在使用 pasword_hash() 方法@prit.patel
  • 您不应该转义您的密码,因为您没有在 sql 语句中使用它。并且使用准备好的语句,您根本不需要转义任何内容。

标签: php html mysqli


【解决方案1】:

如果您从 password_verify 收到不正确的错误响应,并且您知道它应该是正确的,请确保将散列变量括在单引号 (') 而不是双引号 (") 中。

在 PHP 中,任何以 $ 开头的双引号作为变量。

【讨论】:

  • 此代码中的任何地方都不会手动添加哈希码,其中在双引号字符串中使用了变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 2017-03-16
相关资源
最近更新 更多