[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: md5 и буквы
valik3210
Есть регистрационная форма где пароль записывыается через md5. Когда пользователь вводит пароль только из цифр, то все работает (регистрация, авторизация), но если в пароле есть хотя бы одна буква то mysql выдает ошибку"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in". Но запись в базе все равно создается, но при авторизации (пароля с буквой) пишет пароль не правильный. sad.gif



Спустя 2 минуты, 38 секунд (19.04.2010 - 11:35) waldicom написал(а):
показать код в этом месте - не такая уж и плохая идея...

Спустя 43 минуты, 9 секунд (19.04.2010 - 12:18) valik3210 написал(а):
mysql_query("INSERT INTO irbis_user (login,password,email) VALUES ('$login', md5('$password'),'$email')");

Спустя 21 минута, 57 секунд (19.04.2010 - 12:40) DedMorozzz написал(а):
$password='aaa121%';
$result = mysql_query("INSERT INTO `users` (`name`,`desc`,`pass`) VALUES ('aaa','bbb',md5('$password'))") or die('Ошибка при выполнении запроса');
всё нормально. Бери в кавычки значения полей и название таблицы.

Спустя 12 минут, 8 секунд (19.04.2010 - 12:52) twin написал(а):
Тут есть тонкость. Дело в том, что хоть алгоритм вычисления md5 хэша у PHP и MySQL один, на практике известны случаи расхождений.

Так что если используется функция MySQL, то она и должна использоваться везде дальше.
Это так, для справки.

Спустя 6 минут, 20 секунд (19.04.2010 - 12:58) sergeiss написал(а):
Колонка с хэшем, как я понимаю (в таблице) - это строка. Поэтому ее тоже надо брать в кавычки.
$result = mysql_query("INSERT INTO `users` (`name`,`desc`,`pass`) VALUES ('aaa','bbb','".md5('$password')."')") or die('Ошибка при выполнении запроса');


И в любом случае!!! Сначала лучше записать весь запрос в символьную строку, а затем уже выполнять запрос. Потому что в случае ошибки можно не просто "тупо" посмотреть ошибку, но еще можно и сам текст запроса вывести. А это, чаще всего, помогает очень быстро понять причину ошибки.

Спустя 24 минуты, 3 секунды (19.04.2010 - 13:22) valik3210 написал(а):
Цитата (DedMorozzz @ 19.04.2010 - 09:40)
$password='aaa121%';
$result = mysql_query("INSERT INTO `users` (`name`,`desc`,`pass`) VALUES ('aaa','bbb',md5('$password'))") or die('Ошибка при выполнении запроса');
всё нормально. Бери в кавычки значения полей и название таблицы.

Заработало.
А что означает $password='aaa121%???

Спустя 59 минут, 53 секунды (19.04.2010 - 14:22) DedMorozzz написал(а):
valik3210
да просто пароль с разным набором символов, и проценты и буквы и цифры. Тем самым показал что сие работает со всем.

Спустя 21 час, 55 минут, 13 секунд (20.04.2010 - 12:17) valik3210 написал(а):
Что-то непонятное. Вчера робатало сегодня нет. Ничего не менял и не делал. sad.gif

Спустя 10 минут, 51 секунда (20.04.2010 - 12:28) DedMorozzz написал(а):
включи мускул, апач... Обычно помогает

Спустя 11 минут, 8 секунд (20.04.2010 - 12:39) valik3210 написал(а):
Цитата (DedMorozzz @ 20.04.2010 - 09:28)
включи мускул, апач... Обычно помогает

Включен был. Может это необычный случай???

Спустя 2 минуты, 39 секунд (20.04.2010 - 12:42) sergeiss написал(а):
А что именно работает/не работает?

Спустя 5 минут, 30 секунд (20.04.2010 - 12:48) valik3210 написал(а):
На одном компе пишет ошибку которая написана в самом начале. На втором компе в базу записывает, но при авторизации говорит что пароль не верный, хотя вчера все работало (на втором комппе). Не понятно..........

Спустя 19 минут, 42 секунды (20.04.2010 - 13:07) sergeiss написал(а):
Код покажи, который сейчас для записи используется.

Спустя 13 минут, 21 секунда (20.04.2010 - 13:21) valik3210 написал(а):
$res = mysql_query("INSERT INTO `irbis_user` (`login`,`password`,`email`) VALUES ('$login', md5('$password'),'$email')");

Спустя 2 минуты, 3 секунды (20.04.2010 - 13:23) sergeiss написал(а):
Цитата (valik3210 @ 20.04.2010 - 14:21)
$res = mysql_query("INSERT INTO `irbis_user` (`login`,`password`,`email`) VALUES ('$login', md5('$password'),'$email')");


Сделай, наконец-то (!), как я тебе уже говорил, в этой же теме!!!
$res = mysql_query("INSERT INTO `irbis_user` (`login`,`password`,`email`) VALUES ('$login', '". md5('$password') ."','$email')");

Спустя 27 минут, 27 секунд (20.04.2010 - 13:50) valik3210 написал(а):
Все сделано как сказано. Я так полагаю что код извлечения тоже надо изменить. Потомучто не пускает???

$res1 = mysql_query("SELECT * FROM irbis_user WHERE password=md5($password) AND login='$login'");

Спустя 6 минут, 31 секунда (20.04.2010 - 13:57) sergeiss написал(а):
Цитата (valik3210 @ 20.04.2010 - 14:50)
Все сделано как сказано.

Да нифига не "как сказано"!!!!
Во-первых, строка не в кавычках, а во-вторых, ты используешь функцию md5 из mysql. А ты возьми строку в кавычки, да попробуй использовать md5 из ПХП.
Сразу две разницы есть.

Спустя 56 минут (20.04.2010 - 14:53) valik3210 написал(а):
Запись

$res = mysql_query("INSERT INTO `irbis_user` (`login`,`password`,`email`) VALUES ('$login', '".md5('$password')."','$email')");


Чтение

$res1 = mysql_query("SELECT * FROM `irbis_user` WHERE `password`='".md5($password)."' AND login='$login'");


Так? unsure.gif

Спустя 25 минут, 30 секунд (20.04.2010 - 15:18) sergeiss написал(а):
Ну, типа того. Попробуй.
Но даже если ты будешь использовать хэш от MySQL, то все равно ставь в кавычки.

Спустя 1 час, 26 минут, 45 секунд (20.04.2010 - 16:45) valik3210 написал(а):
В базу записывется, а вытащить не получается.

Спустя 13 минут, 1 секунда (20.04.2010 - 16:58) DedMorozzz написал(а):
дык верно md5($password) !=md5('$password')
Разберись с кавычками.

Спустя 1 час, 53 минуты, 24 секунды (20.04.2010 - 18:51) valik3210 написал(а):
Всем спасибо. Все заработало.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.