Перейти к содержанию

трабла со сравнением хэшей


Рекомендуемые сообщения

Имеется два хэша, первый лежит в базе данных, уже готовый MD5($var+соль), сравнивается со вторым MD5($var+соль).

Итак, в общем, два хэша получаются буква в букву одинаковые и в длину тоже, а когда их сравнивать пытаюсь, получается FALSE!

Происходит такое только тогда, когда пароль в профиле смениш, если же пароль не менять, а оставить как был, то есть который был при регистрации, входит без проблем.

Почему так происходит? хэши то совпадают, а результат false.

пробовал тримовать их (через trim), результат такой же.

Еще, если хотите попробовать, то вот линки на внутр зону, сервак тестовый:

http://gunet.net.ru/newshop/?reg - регистрация

http://gunet.net.ru/newshop/?profile - профиль, с возможностью смены пароля

http://gunet.net.ru/newshop/?login - вход в систему.

двиг еще не готов, только около 33%, именно на этой проблеме застрял

Ссылка на комментарий


$ps = md5($_POST['pass_01'].$salt);
$query = 'update '.$perfix.'accounts set u_pass="'.$ps.'", u_fio="'.make_valid_text($_POST['fio']).'", u_liveplace="'.make_valid_text($_POST['liveplace']).'", u_postcode='.intval($_POST['postcode']).', u_icq='.intval($_POST['icq']).' where ( u_mail="'.$_SESSION['mail'].'" )';

пхд в этом месте чет напортачил

Ссылка на комментарий

$perfix? лучше уж prefix, а то per fix переводится как по "кол-во раз на одно изменение" :)

И собственно а где само сравнение то?

Добавлено спустя 48 секунд:

Кстати этот апдейт какое кол-во измененных строк возвращает?

Ссылка на комментарий

X-tender

это обновление строки, можно еще приписать в конце этой limit 1

а вот сравнение:


$query = 'select * from '.$perfix.'accounts where u_mail="'.$email.'"';
if($result=mysql_query($query) and mysql_num_rows($result)==1){
$pass = mysql_result($result, 0, 'u_pass');
if(md5($password.$salt)==$pass){
session_start();
$_SESSION['mail'] = $email;
$_SESSION['pass'] = $pass;
return 0;
}else{
return 1;
}
}else{
return 2;
}
$query = '';
$pass = '';

Ссылка на комментарий

А как ты определяешь что:

два хэша получаются буква в букву одинаковые и в длину тоже

Визуально на глазок? к тому же странная проверка - надо сразу делать:


$query = 'select count(*) from '.$perfix.'accounts where u_mail="'.$email.'" and u_pass="'.md5($password.$salt).'"';

if($result=mysql_query($query) && mysql_result($result, 0))
{...}
else ...;

если нет проблем с кодировками то этот результат будет верным, иначе покажи покажи дебуг инфу - что конкретно выводит и когда

Ссылка на комментарий
А как ты определяешь что:

я потом через echo хэши выводил, 100% одинаковые

сравниваю через == или как надо?

Визуально на глазок? к тому же странная проверка - надо сразу делать:

так как ты сделал, я уже пробовал, 0%

Ссылка на комментарий

Po$amax@

надо на месте проверить твой код. скорее всего какая-нибудь очевидная мелочь упущена. в общем авторизуй в аське проверю, посмотрю на месте

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...