【发布时间】: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 语句中使用它。并且使用准备好的语句,您根本不需要转义任何内容。