gpt4 book ai didi

php - PHP 中的密码验证

转载 作者:行者123 更新时间:2023-11-29 12:04:56 25 4
gpt4 key购买 nike

因此,我允许用户使用用户名和密码创建帐户。当用户使用以下方法创建新帐户时,我已成功对密码进行加密:

$hash = password_hash($password, PASSWORD_BCRYPT);

但是,我在登录时遇到了密码验证问题,有人可以帮助我解决我所拥有的问题吗?我知道事情是这样的:

password_verify($password, $hash)

但我不知道如何构造它或将其添加到代码中的位置。提前致谢。这就是我所拥有的:

<?php
if (isset($_GET["username"]) && isset($_GET["password"]) ){
$username = $_GET["username"];
$password = $_GET["password"];
$result = login( $username, $password);
echo $result;
}

function makeSqlConnection()
{
$DB_HostName = "";
$DB_Name = "";
$DB_User = "";
$DB_Pass = "";

$con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die(mysql_error());

mysql_select_db($DB_Name,$con) or die(mysql_error());

return $con;
}

function disconnectSqlConnection($con)
{
mysql_close($con);
}

function login($username, $password)
{
$con = makeSqlConnection();
$sql = "select * from login where username = '$username' and password = '$password';";
$res = mysql_query($sql,$con) or die(mysql_error());

$res1 = mysql_num_rows($res);

disconnectSqlConnection($con);

if ($res1 != 0) {
return 1;
}else{
return 0;
}// end else

}// end of Function
?>

最佳答案

一般做法如下:

  1. 从数据库中获取密码哈希值,其中用户名 = 输入的用户名。
  2. 如果找到行,则说明存在用户
  3. 现在,您可以将输入的密码与数据库中存储的哈希值进行比较。
<小时/>

我将在这里用一些伪代码为您概述上述流程:

$query = SELECT password FROM users WHERE username = '$username'

$data = FETCH_THE_DATA($query);

if(password_verify($USER_INPUTTED_PASSWORD, $data['password'])) {
// password is correct
} else {
// password is in-correct
}
<小时/>

注释

  • 停止使用 mysql_* 函数。该库已被弃用,因为它不可靠,并将在 PHP 的 future 版本中删除。
  • 您应该始终阅读本手册 - password_verify() ,它清楚地表明您将“用户输入的密码”与存储在数据库中的散列版本进行比较。

关于php - PHP 中的密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com