Private Detective Опубликовано 28 Января 2009 Жалоба Поделиться Опубликовано 28 Января 2009 Собственно пишу сайт, хочу туда логин. Пошерстил интернет, написал код: $result = my_mysql_query("SELECT m.id, m.name, m.members_display_name, m.member_login_key, mc.converge_email, mc.converge_pass_hash, mc.converge_pass_salt FROM ".$bdname.".ibf_members AS m JOIN ".$bdname.".ibf_members_converge AS mc ON (m.email = mc.converge_email) WHERE m.name = '$_POST[login]' LIMIT 0, 1"); if (mysql_num_rows($result) != 0) { $Row = mysql_fetch_array($result); if (md5(md5($Row['converge_pass_salt']).md5($_POST['pass'])) == $Row['converge_pass_hash']) $y2k = mktime(0,0,0,1,1,2020); setcookie('pass_hash',$Row['member_login_key'], $y2k); setcookie('member_id','1' , $y2k); } В общем - он работает. до определенного момента. Задаю пользователю пароль 123 - с сайта логинится отлично, с форума - тоже на ура. Потом я задаю пароль 1234567890!"№;% С форума логиниться, с сайта перестает, т.к. перестает выполняться условие (md5(md5($Row['converge_pass_salt']).md5($_POST['pass'])) == $Row['converge_pass_hash']) Для длинных паролей по другому считается converge_pass_salt?.. Больше ничего в голову не приходит. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 28 Января 2009 Жалоба Поделиться Опубликовано 28 Января 2009 Нет, просто пароль при регистрации задаётся так:$in_password = trim($this->ipsclass->input['PassWord']);, а вы его при проверке не пропускаете через $this->ipsclass->parse_clean_value, как это делается при обработке входных данных перед попаданием в $this->ipsclass->input. Даже не хочется комментировать код, в котором могут быть SQL-инъекции и ошибки из-за magic_quotes. Сужу только по приведённому куску, так что могу ошибаться. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.