php:md5不同密码的编码方式相同



我不是php程序员,所以我只知道我在网上查找了关于md5标记的内容。

我正在检查php页面中的密码是否匹配。我在php url中发送密码,并用以下代码检索:

$u_pswd = md5(trim(strip_tags($_REQUEST['pswd'])));

然后我运行一个查询来获取用户的密码,这样我就可以检查它们是否相同:

$usql = "SELECT user_password FROM ft_users WHERE user_email = '".$u_mail."'";
$ures = mssql_query($usql);
$urow = mssql_fetch_array($ures);
if ($urow['user_password'] = $u_pswd) {
    // passwords match
} else {
    // passwords do not match
}

我的问题是,它说密码每次都匹配。例如,如果当前密码是PASSWORD,并且我向它发送密码INCORRECT,则输出为:

$_pswd=64a4e8faed1a1a0bf8bf0fc84938d25

$urow['user_password']=64a4e8faed1a1a0bf8bf0fc84938d25

有人能帮我解决为什么说密码是一样的,而不是一样的吗?

不要使用"="进行比较。"="将赋值,并且任何表达式"$var=$value"都将求值为true。请改用"=="。

if ($urow['user_password'] == $u_pswd) { ... }

=用于赋值,在您的代码中,您将$u_pswd值赋值给$urow['user_password']

您需要使用==来比较这些值是否相等,以获得所需的结果

$usql = "SELECT user_password FROM ft_users WHERE user_email = '".$u_mail."'";
$ures = mssql_query($usql);
$urow = mssql_fetch_array($ures);
if ($urow['user_password'] == $u_pswd) {
} 
else 
{
}

希望能有所帮助。

最新更新