php - 哈希密码与以前不同然后无法登录
问题描述
我只是用哈希密码创建注册表单和登录页面,但是当我登录时密码不匹配,它之前的工作。
PHP/7.3.1 Apache/2.4.37 XAMPP v3.2.2
注册.php
// Check error pada input sebelum memasukkan ke database
if(empty($firstname_err) && empty($lastname_err) && empty($gender_err) && empty($username_err) && empty($status_err) && empty($password_err) && empty($confirm_password_err)){
// Mempersiapkan pemasukan stekmen database
$sql = "INSERT INTO users (firstname, lastname, gender, username, status, password) VALUES (?, ?, ?, ?, ?, ?)";
if($stmt = mysqli_prepare($link, $sql)){
// Mem-bind variabel ke stekmen yang sudah disiapkan sebagai parameter
mysqli_stmt_bind_param($stmt, "ssssss", $param_firstname, $param_lastname, $gender, $param_username, $param_status, $param_password);
// Men-set parameter
$param_firstname = $firstname;
$param_lastname = $lastname;
$param_gender = $gender;
$param_username = $username;
$param_status = $status;
$param_password = password_hash($password, PASSWORD_DEFAULT); // Membuat sebuah hash password
// Mencoba eksekusi stekmen yang sudah disiapkan
if(mysqli_stmt_execute($stmt)){
// Meng-redirect ke Halaman Login
header("location: index.php");
} else{
echo "Oops! Ada yang salah. Silahkan coba lagi nanti.";
}
}
// Menutup stekmen
}
登录.php
// Mempersiapkan stekmen yang dipilih
$sql = "SELECT id, username, password, status FROM users WHERE username = ?";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "s", $param_username);
$param_username = $username;
if(mysqli_stmt_execute($stmt)){
mysqli_stmt_store_result($stmt);
// Check jika username if already registered
if(mysqli_stmt_num_rows($stmt) == 1){
mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password, $status);
if(mysqli_stmt_fetch($stmt)){
if(password_verify($password, $hashed_password)){
session_start();
$_SESSION["loggedin"] = true;
$_SESSION["id"] = $id;
$_SESSION["username"] = $username;
$_SESSION["status"] = $status;
// Meng-redirect ke Halaman Home
header("location: welcome.php");
} } } } }
// Menutup stekmen
mysqli_stmt_close($stmt);
}
但我明白了,生成的哈希密码以前是不同的,我知道发生了什么
解决方案
推荐阅读
- python - 启动 Python 子进程时 Gstreamer 错误的管道错误
- python - 为什么我的计数器没有更新,即使我在每个循环上都添加了一个?
- vb.net - 在子表单中发送数据
- node.js - node-red-node-sqlite npm install node-gyp问题
- python - 程序告诉我们在 100 到 10000 之间的 100 的哪个周期有最多的素数
- ansible - 在ansible中将一个字典列表映射到另一个
- python-3.x - Newspaper3k 仅在第一行导出到 csv
- python - 将字符串列表转换为元组?
- arrays - 查找数组的最高频率以及具有该频率的所有元素
- javascript - 如何从 getInitialProps 内部调度一个动作?