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

php: md5 different passwords encoded the same way

我不是 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 = 64a4e8faed1a1aa0bf8bf0fc84938d25

$urow['user_password'] = 64a4e8faed1a1aa0bf8bf0fc84938d25

有人可以帮我解决为什么说密码相同而实际上不同吗?

请勿使用“=”进行比较。 “=”将分配一个值,任何表达式“$var = $value”都将被评估为真。请改用“==”。

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 
{

}

希望对您有所帮助。