能够在 mysql 的表上验证我的哈希密码。 它不起作用,
这是我的表格:
<label for="email">Email</label>
<input type="email" onkeyup="onKeyup()" onblur="onBlur()" id="email" name="email" placeholder="Akun Email" />
</div>
<div class="password">
<label for="password">Password</label>
<input type="password" id="password" onkeyup="onKeyup()" onblur="onBlur()" name="password" placeholder="Kata Sandi" />
</div>
<div class="submit_btn">
<button type="submit" name="submit" id="submit">Masuk</button>
</div>
</form>
和我的 php :
if(isset($_POST["submit"])){
$email = $_POST["email"];
$userPass = $_POST['password'];
$sql = "SELECT * FROM tb_kandidat WHERE email = '$email'";
$result = mysqli_query($conn, $sql);
$user = mysqli_fetch_array($result, MYSQLI_ASSOC);
if($user){
if(password_verify($userPass, $user['password'])){
echo "success";
}
}else{
echo "fail";
}
}
输出总是回显失败; 我哪里做错了?谢谢你
您面临的问题可能与您检索和比较密码的方式有关。以下是一些常见问题以及解决方法:
1。检查密码哈希:
确保在将密码插入数据库时使用
password_hash()
对密码进行哈希处理。例如:
$hashedPassword = password_hash($userPass, PASSWORD_DEFAULT);
// Insert $hashedPassword into the database
2。修剪输入:
有时额外的空格可能会导致问题。您可以在查询数据库之前修剪输入值。
$email = trim($_POST["email"]);
$userPass = trim($_POST['password']);
3.数据库连接:
使用前请确保您的数据库连接
($conn)
已正确建立。
4。检查是否有错误:
始终检查数据库查询错误。您可以在代码中添加错误处理,以查看 SQL 查询是否存在任何问题。
$result = mysqli_query($conn, $sql);
if (!$result) {
die('Query Error: ' . mysqli_error($conn));
}
5。使用准备好的语句:
以下是如何使用准备好的语句的修改示例:
if(isset($_POST["submit"])){
$email = trim($_POST["email"]);
$userPass = trim($_POST['password']);
$sql = "SELECT * FROM tb_kandidat WHERE email = ?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$user = mysqli_fetch_array($result, MYSQLI_ASSOC);
if($user) {
if(password_verify($userPass, $user['password'])){
echo "success";
} else {
echo "fail";
}
} else {
echo "fail";
}
}
使用准备好的语句更安全,也有助于防止 SQL 注入。确保也验证和清理您的用户输入。