【发布时间】:2012-06-27 18:57:47
【问题描述】:
我正在测试一个 sql 查询,并且我正在正确输入用户名和密码,但它没有在匹配时给我。
这是查询的输出:
SELECT * FROM wp_users where user_login='User' and user_pass='pass'
我可以看到我输入正确但仍然返回 false。
我知道密码在数据库中的 md5 中。
我需要解码查询中的变量吗?如果有怎么办?
我试过了,但是没用:
$SQL = "SELECT * FROM wp_users where user_login='".$username."' and user_pass='".md5($password)."'";
更新:
这是 md5($password) - 3fc0a7acf087f549ac2b266baf94b8b1 的内容
这就是数据库中的内容:$P$BfzHHqBF88q4RHJsAiVf4m7.ulbgCZ1
它们应该是相同的 :o/
【问题讨论】:
-
当你说它返回 false 时,你是如何测试这个的?您是否尝试将第二个查询的输出直接粘贴到 php myadmin 或 mysql 命令行中以查看它的输出?
-
查询是对的。如果返回 0 结果,则表示用户名或密码错误。只需
md5($password)并与数据库中的内容进行比较。 -
发布一个来自数据库的哈希密码示例。显然,您需要为此使用一些测试帐户,而不是真实用户的密码。
-
plain
md5()是一种非常糟糕(非常轻描淡写)的密码存储方式。不妨将其存储为纯文本(不是真的但非常接近)。 -
看起来这是一个 Wordpress 安装,在这种情况下,this question 中的信息及其答案应该会有所帮助。