【发布时间】:2017-02-19 04:15:18
【问题描述】:
所以我有一个注册页面和一个登录页面,注册页面工作得很好,但登录页面似乎不起作用,我似乎无法弄清楚。
我的数据库似乎正在工作,因为我能够将散列密码回显到登录页面上,这似乎与 密码验证()
注册页面(工作中)
<?php
include("assets/includes/conn.php");
$user = $_POST['username'];
$pass = $_POST['pass'];
$cPass = $_POST['c-pass'];
$email = $_POST['email'];
$options = [
'cost' => 11
];
if($pass == $cPass){
$stmt = $conn->prepare("INSERT INTO users (username, pass, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $user, $h_p, $email);
$user = $_POST['username'];
$h_p = password_hash($pass, PASSWORD_DEFAULT, $options)."\n";
$email = $_POST['email'];
$stmt->execute();
echo "Created";
echo $h_p;
$stmt->close();
$conn->close();
}
登录页面(不工作)
<?php
include("assets/includes/conn.php");
$username = $_POST['username'];
$password = $_POST['pass'];
$sql = "SELECT * FROM users WHERE username = '$username'";
$result = $conn->query($sql);
if ($result->num_rows == 1){
$row = $result->fetch_assoc();
$hash = $row['pass'];
if(password_verify($password, $hash)){
echo "Yes";
} else {
echo "No<br/>";
echo "" . $hash . "<br/>";
echo $password;
}
}
【问题讨论】:
-
我对它失败的原因有一些想法,但您可以在下面看到答案。
-
确保您是displaying errors,以防您遇到变量未正确发送到脚本等问题。
-
@Mike 问题是我不认为这是一个错误,它只是告诉我密码不正确,即使它是正确的,这可能与它被散列有关
-
@TristanSchlarman 不要假设任何事情。也许您没有正确地将值传递给脚本。
-
欢迎来到 Stack @TristanSchlarman 干杯
标签: php password-hash