在PHP中转换为md5是错误的

时间:2015-10-21 07:12:38

标签: php md5 urlencode

我有一个表单,我从用户那里获取用户名和密码, 我正在将密码转换为md5。然后我将其插入数据库。在用户登录表单中,我获取密码并将其转换为md5。然后我比较两个密码。它在某些情况下匹配,但如果密码= p@$$w0rd则失败。 有什么问题?这个问题的解决方案是什么?

从我的表单到数据库密码p@$$w0rd到md5的密码为b7463760284fd06773ac2a48e29b0acf,登录表单的密码为e22bb24ca616331cb92a48b712034bc3

注册表格中的代码

$password = trim($_POST['password']);   
$dpassword = md5($password);

并从登录表单 $passwd = md5($password);

$sql = mysql_query("select * from create_dealer where (dealer_email='$user' && password='$passwd')");

2 个答案:

答案 0 :(得分:12)

问题在于引号。

echo md5('p@$$w0rd');// echoes b7463760284fd06773ac2a48e29b0acf
echo md5("p@$$w0rd");// echoes e22bb24ca616331cb92a48b712034bc3

当您使用双引号时,$w0rd被视为未定义的变量,并替换为空字符串。

echo md5("p@$");// echoes e22bb24ca616331cb92a48b712034bc3

答案 1 :(得分:0)

如果您使用相同的方法来散列两个输入,那么很可能您会在其中一个输入中获得一些空格或某些字符转义,请确保输入完全相同然后进行散列。

您也可以删除md5调用以进行测试,看看纯文本密码是否匹配,我敢打赌。可能只是你的SQL返回错误的行...