gpt4 book ai didi

php - 数据库中的{plain}密码和登录错误

转载 作者:行者123 更新时间:2023-11-29 08:49:52 25 4
gpt4 key购买 nike

我正在编写一个登录面板来访问管理面板。数据(用户名和密码)存储在 MySQL 数据库(类型:InnoDB)中。在表中查看密码以纯文本形式存储,在字段密码中我有:{普通}密码。

调整我已有的代码时,我遇到了一些问题,因为 {plain} 的事情让我有点困惑。

我的旧代码是:

// Construct SQL statement for query & execute 
$sql = "SELECT * FROM table WHERE user = '" . $username . "' AND password = '" . md5($password) . "'";
$result = $mysqli->query($sql) or die(mysql_error());

因此,如果我用 MD5 密码替换数据库中字段中的“{plain}password”,则代码效果很好,但如果我将代码修改为以下代码:

// Construct SQL statement for query & execute 
$sql = "SELECT * FROM table WHERE user = '" . $username . "' AND password = '" . $password . "'";
$result = $mysqli->query($sql) or die(mysql_error());

由于密码错误,我无法登录!

知道如何解决这个问题吗?

最佳答案

如果真实密码前面有前缀“{plain}”,则必须调整查询以包含该前缀。

$sql = "SELECT * FROM table WHERE user = '" . $username . "' AND password = '{plain}" . $password . "'"; 
$result = $mysqli->query($sql) or die($mysqli->error());

另请注意,您应该更改 die() 命令中的 mysql_error() 以使用 mysqli 函数(因此使用 >$mysqli->错误)。

PS:您现在应该看看如何存储密码。以纯文本形式存储它们无论如何都是不安全的。

编辑

在这里也提到@BrianRasmussen 的评论:确保在查询中直接使用(使用字符串连接)之前已对 $username$password 进行了清理!否则,您的代码可能会遭受各种 SQL 注入(inject)。

关于php - 数据库中的{plain}密码和登录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563078/

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