Po$amax@ Опубликовано 3 января, 2009 Жалоба Поделиться Опубликовано 3 января, 2009 Имеется два хэша, первый лежит в базе данных, уже готовый 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%, именно на этой проблеме застрял Ссылка на комментарий
X-tender Опубликовано 5 января, 2009 Жалоба Поделиться Опубликовано 5 января, 2009 Po$amax@не надо таких ссылок, лучше скажи какая субд, и какого типа поле и как сравниваешь. Указал ли верно кодировку? Ссылка на комментарий
VampiRUS Опубликовано 5 января, 2009 Жалоба Поделиться Опубликовано 5 января, 2009 а ещё лучше код, ясновидцы как обычно в отпуске. Ссылка на комментарий
Po$amax@ Опубликовано 5 января, 2009 Автор Жалоба Поделиться Опубликовано 5 января, 2009 $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'].'" )';пхд в этом месте чет напортачил Ссылка на комментарий
X-tender Опубликовано 5 января, 2009 Жалоба Поделиться Опубликовано 5 января, 2009 $perfix? лучше уж prefix, а то per fix переводится как по "кол-во раз на одно изменение" И собственно а где само сравнение то?Добавлено спустя 48 секунд:Кстати этот апдейт какое кол-во измененных строк возвращает? Ссылка на комментарий
Po$amax@ Опубликовано 5 января, 2009 Автор Жалоба Поделиться Опубликовано 5 января, 2009 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 = ''; Ссылка на комментарий
X-tender Опубликовано 5 января, 2009 Жалоба Поделиться Опубликовано 5 января, 2009 А как ты определяешь что: два хэша получаются буква в букву одинаковые и в длину тожеВизуально на глазок? к тому же странная проверка - надо сразу делать:$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 ...;если нет проблем с кодировками то этот результат будет верным, иначе покажи покажи дебуг инфу - что конкретно выводит и когда Ссылка на комментарий
Po$amax@ Опубликовано 6 января, 2009 Автор Жалоба Поделиться Опубликовано 6 января, 2009 А как ты определяешь что:я потом через echo хэши выводил, 100% одинаковыесравниваю через == или как надо?Визуально на глазок? к тому же странная проверка - надо сразу делать:так как ты сделал, я уже пробовал, 0% Ссылка на комментарий
X-tender Опубликовано 6 января, 2009 Жалоба Поделиться Опубликовано 6 января, 2009 Po$amax@надо на месте проверить твой код. скорее всего какая-нибудь очевидная мелочь упущена. в общем авторизуй в аське проверю, посмотрю на месте Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти