PHP password_verify() 不适用于 MySQL
PHP password_verify() doesn't work with MySQL
我使用 PHP 和 MySQL 创建了一个简单的注册登录服务,但是当我尝试登录时,即使我输入了正确的 ID 和密码,它 returns 还是失败了.
我不确定,但我认为 password_verify()
是问题所在。
我的数据库结构在这里
idx, int(10), AUTO_INCREMENT
id, varchar(255)
password, varchar(255)
email, varchar(255)
注册过程在这里
<?php
header('Content-Type: text/html; charset=utf-8');
$conn = mysqli_connect("localhost", "luminous", "***password***", "luminous");
$id = $_POST['id'];
$hashedPassword = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = $_POST['email'];
$query = "INSERT INTO member (id, password, email) VALUES('$id', '$hashedPassword', '$email')";
$result = mysqli_query($conn, $query);
if ($result === false)
{
echo "Failed to store.";
echo mysqli_error($conn);
}
else
{
?>
<script>
alert("Welcome, you've joined my service.");
// location.href = "../index.php";
</script>
<?php
}
?>
登录流程到此
<?php
header('Content-Type: text/html; charset=utf-8');
$conn = mysqli_connect("localhost", "luminous", "***password***", "luminous");
$id = $_POST['id'];
$password = $_POST['password'];
$query = "SELECT * FROM member WHERE id ='$id'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_array($result);
$hashedPassword = isset($row['password']) ? $row['password'] : false;
$passwordResult = password_verify($password, $hashedPassword);
print_r($passwordResult);
// if ($passwordResult === true)
if($passwordResult === true)
{
session_start();
$_SESSION['id'] = $row['id'];
?>
<script>
alert("Login successful.")
location.href = "../index.php";
</script>
<?php
} else {
echo "wrong!!!";
?>
<script>
alert("Login failed.");
location.href = "../index.php";
</script>
<?php
}
?>
p.s.)
我为了考试注册了测试账号,ID-lumes
密码-lumes
邮箱-lumes@lumes.kr
。我检查了我的数据库 returns 是否有正确的信息,但是数据库似乎没有问题,因为它返回了准确的信息。
0 : 9
idx : 9
1 : lumes
id : lumes
2 : y$LSjBJGmNMlyY12RU4NTnked3i26i5o7MIWnJ8slu0Y4FWH84vb6o.
password : y$LSjBJGmNMlyY12RU4NTnked3i26i5o7MIWnJ8slu0Y4FWH84vb6o.
3 : lumes@lumes.kr
email : lumes@lumes.kr
我能做些什么来解决这个问题?我需要一些帮助。
谢谢。
(虽然我不善于提问,但还请大家谅解...!)
这可能对你有帮助
php password_verify not working with database
检查哈希值是否正确存储在数据库中。
转储您从数据库中获取的哈希值和哈希密码,并检查它们是否相同。
我使用 PHP 和 MySQL 创建了一个简单的注册登录服务,但是当我尝试登录时,即使我输入了正确的 ID 和密码,它 returns 还是失败了.
我不确定,但我认为 password_verify()
是问题所在。
我的数据库结构在这里
idx, int(10), AUTO_INCREMENT
id, varchar(255)
password, varchar(255)
email, varchar(255)
注册过程在这里
<?php
header('Content-Type: text/html; charset=utf-8');
$conn = mysqli_connect("localhost", "luminous", "***password***", "luminous");
$id = $_POST['id'];
$hashedPassword = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = $_POST['email'];
$query = "INSERT INTO member (id, password, email) VALUES('$id', '$hashedPassword', '$email')";
$result = mysqli_query($conn, $query);
if ($result === false)
{
echo "Failed to store.";
echo mysqli_error($conn);
}
else
{
?>
<script>
alert("Welcome, you've joined my service.");
// location.href = "../index.php";
</script>
<?php
}
?>
登录流程到此
<?php
header('Content-Type: text/html; charset=utf-8');
$conn = mysqli_connect("localhost", "luminous", "***password***", "luminous");
$id = $_POST['id'];
$password = $_POST['password'];
$query = "SELECT * FROM member WHERE id ='$id'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_array($result);
$hashedPassword = isset($row['password']) ? $row['password'] : false;
$passwordResult = password_verify($password, $hashedPassword);
print_r($passwordResult);
// if ($passwordResult === true)
if($passwordResult === true)
{
session_start();
$_SESSION['id'] = $row['id'];
?>
<script>
alert("Login successful.")
location.href = "../index.php";
</script>
<?php
} else {
echo "wrong!!!";
?>
<script>
alert("Login failed.");
location.href = "../index.php";
</script>
<?php
}
?>
p.s.)
我为了考试注册了测试账号,ID-lumes
密码-lumes
邮箱-lumes@lumes.kr
。我检查了我的数据库 returns 是否有正确的信息,但是数据库似乎没有问题,因为它返回了准确的信息。
0 : 9
idx : 9
1 : lumes
id : lumes
2 : y$LSjBJGmNMlyY12RU4NTnked3i26i5o7MIWnJ8slu0Y4FWH84vb6o.
password : y$LSjBJGmNMlyY12RU4NTnked3i26i5o7MIWnJ8slu0Y4FWH84vb6o.
3 : lumes@lumes.kr
email : lumes@lumes.kr
我能做些什么来解决这个问题?我需要一些帮助。
谢谢。
(虽然我不善于提问,但还请大家谅解...!)
这可能对你有帮助 php password_verify not working with database
检查哈希值是否正确存储在数据库中。 转储您从数据库中获取的哈希值和哈希密码,并检查它们是否相同。