2015-11-20 3 views
0

Я не программист 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 = 64a4e8faed1a1aa0bf8bf0fc84938d25

$urow['user_password'] = 64a4e8faed1a1aa0bf8bf0fc84938d25

Может кто-нибудь помочь мне в решении, почему он говорит пароли одинаковы, когда они не являются?

+0

Вы уверены, что вы получите правильные данные в $ _REQUEST ['pswd'] – Unex

+0

Это невероятно неуверенный способ хранения паролей (Google * «Таблицы радуги MD5» *) - попробуйте 'password_hash()' вместо этого, если вы 're running PHP 5.5+: http://php.net/manual/en/function.password-hash.php – CD001

ответ

2

Не используйте для сравнения «=». «=» назначит значение, и любое выражение «$ var = $ value» будет оценено как true. Вместо этого используйте «==».

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

= для назначения, в вашем коде вы назначаете $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 
{ 

} 

Надеюсь, что это поможет.

Смежные вопросы