我仍然是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']);
任何人都可以在这里解释我错在哪里。
答案 0 :(得分:2)
尝试
"SELECT `id` FROM `golden_acres_username`
WHERE `uname`='".$username."' AND `password`='".$password_hash."'"
答案 1 :(得分:1)
首先,您应该寻找更安全的密码哈希机制,如password_hash()
其次,您目前存在重要的SQL注入漏洞,因为您没有使用参数化预准备语句转义输入。
在你至少完成后两者之前,真的不值得讨论这个解决方案。