1

我还是 php 的新手,我不明白这里有什么问题。我有一个 php 脚本,我将它用作登录脚本(它背后的简单功能,因为我还在学习)。我已确保表单中的输入值与 mysql 数据库中的输入值匹配。下面的代码是导致问题的sql:

"SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND `password`='$password_hash'"

当我将上面的代码更改为下面的代码时(不同之处在于我手动插入了 md5 哈希):

"SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND `password`='81dc9bdb52d04dc20036'"

变量集是:

$login_button = $_POST['login_button'];             
$username = $_POST['username'];
$password = $_POST['password'];                 
$password_hash = md5($_POST['password']);

任何人都可以在这里解释我错在哪里。

4

2 回答 2

2

尝试

"SELECT `id` FROM `golden_acres_username` 
WHERE `uname`='".$username."' AND `password`='".$password_hash."'"
于 2013-09-23T22:07:37.637 回答
1

首先,您应该寻找更安全的密码散列机制,例如password_hash()

其次,您目前存在严重的 SQL 注入漏洞,因为您没有使用参数化的预处理语句转义输入。

在你至少做这两者中的后者之前,真的不值得讨论解决方案。

于 2013-09-23T22:15:45.000 回答