[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: хеш md5
Fidel
Всем привет!! У меня такая проблемка!! Пишу форму регистрации пользователей, используется два поля user и password, данные должны заноситься в таблицу users.
Код:<?php
mysql_connect('localhost','root','1111');
mysql_select_db('reg');
$user_name = $_POST['user_name'];
$user_password = md5($_POST['user_password']);
$query="INSERT INTO users(user_name,user_password) values('$user_name','$user_password')";
mysql_query($query);
?>
при таком коде запись не добавляется в базу, а если использовать такую строку $user_password = $_POST['user_password']; то все работает.
Что то не то в md5, но что незнаю! Ребята подскажите, заранее спасибо!!!





Спустя 10 минут, 16 секунд (6.06.2007 - 16:03) TRIAL написал(а):
А что пишет? Ошибки есть какие?
У поля какие атрибуты стоят (тип, длина и т.д.)?
Вобще должно всё работать. Вроде в запросе ошибок никаких нет.

Спустя 16 секунд (6.06.2007 - 16:03) md5 написал(а):
Цитата
Что то не то в md5

все темы, называющиеся "что-то не так в php", "что-то не так в md5" в конце концов окажутся в разделе PHP для слепых, глухих и т.д.

ты не пробовал вывести хэш до запроса?

может какие-нибудь ошибки выдаются?

может структуру таблицы покажешь?

http://phpfaq.ru/debug

Спустя 19 минут, 42 секунды (6.06.2007 - 16:23) Ghost написал(а):
какая длина у поля user_password в базе?

Спустя 6 минут, 55 секунд (6.06.2007 - 16:30) AlexBB написал(а):
Ваще первое, что делается в таких случаях это выводится запрос на печать и предпринимается попытка его выполнить напрямую.

Спустя 18 минут, 5 секунд (6.06.2007 - 16:48) TRIAL написал(а):
Это точно. Но так банально и не интересно. Куда приятнее всем моск поипать :)
А вобще уже реально надо учиться работать с БД через командную строку ну или хотя бы через тот же phpMyAdmin. Для отладки хорошо подходит да и порой пописать запросики вручную очень даже полезно )))

Спустя 7 часов, 19 минут, 35 секунд (7.06.2007 - 00:07) Fidel написал(а):
to Trial: Ошибок никаких не пишет, таблица состоит из 3 столбцов (id (smallint(4) автоинкримент), user_name (varchar(40)), user_password (varchar(30))) И не нужно наезжать, никому мозг я фачить не собираюсь, работаю через командную строку, проверяю элементарным запросом, записи не добавляются если md5 использовать.
Если элементарно использовать эту функцию
<?php
print ("md5 of Kalmah is ".md5('Kalmah'));
?>
то все выводится должным образом.

Спустя 14 минут, 41 секунда (7.06.2007 - 00:22) Ghost написал(а):
user_password (varchar(30))
а сколько должно быть smile.gif, а?

Спустя 45 минут, 43 секунды (7.06.2007 - 01:08) Fidel написал(а):
всмысле сколько должно быть??? Я что то непонимаю!!

Спустя 7 часов, 6 минут, 28 секунд (7.06.2007 - 08:14) TRIAL написал(а):
хаха, поставил я себе как то на мд5 в таблице варчар30 ))) Пол дня на базу матом орал какого у меня пароли не сходятся :) Потом осинило :)

Спустя 6 минут, 53 секунды (7.06.2007 - 08:21) Fidel написал(а):
Ну колись, в чем тут дело? Не томиsmile.gif

Спустя 2 минуты, 52 секунды (7.06.2007 - 08:24) TRIAL написал(а):
Вобще незнаю насколько это актуально в твоем случае...
Ты кстати никогда не смотрел сколько симолов выдает мд5(). Ради прикола посчитай ;)

Спустя 25 минут, 8 секунд (7.06.2007 - 08:49) Fidel написал(а):
Да считал, сейчас на вскидку и не вспомню, посмотреть нужно, вроде 12 или 16. Т.е. как я понял нужно делать длину поля = той что генерирует md5?
А тип varchar? Или и это неправильно?

Спустя 10 минут, 5 секунд (7.06.2007 - 08:59) TRIAL написал(а):
Да, и правда ты очень давно считал. 12 или 16 это конечно мощно :)
Ладно, мучить тебя не буду, смотрю считать сново тебе всетаки влом. В общем мд5 выдает 32 знака и они в твои 30 ну никак не поместятся.
Для поля оставь варчар(32).
Кстати даже при поле длиною в 30 знаков в него хш всё равно будет записываться, только последние 2 знака будут отсекаться. Это происходит или нет?
Если не происходит, то тупо береш хэш и вставляешь его в конкретный запрос, т.е. insert into table(pass) values("хэш"). без всяких мд5()

Спустя 20 минут, 35 секунд (7.06.2007 - 09:20) Fidel написал(а):
)) Мне почему то показалось, что там заков 16)) Мой глазомер меня подвел))
Нет в поле ничего не записывается, вернее в строку, т.к. не только user_password но и даже user_name не записывается.
Так если тупо вставлять, то все равно хеш где-то сгенерировать нужно.

Спустя 34 минуты, 18 секунд (7.06.2007 - 09:54) zaxar написал(а):
Попробуй заменить строку

$query="INSERT INTO users(user_name,user_password) values('$user_name','$user_password')";

на

$query="INSERT INTO users values('','$user_name','$user_password')";

Спустя 27 минут, 37 секунд (7.06.2007 - 10:22) Fidel написал(а):
а в $query="INSERT INTO users values('','$user_name','$user_password')"; в скобках ", перед $user_name - это для чего??

Спустя 1 час, 36 минут, 53 секунды (7.06.2007 - 11:59) TRIAL написал(а):
"", - это ты нулевое значение отсылаешь для поля id, чтоб сработал auto_increment.
А вобще лучше всего попробуй сделать так $query="INSERT INTO users values('','user_name','user_password')";
где user _name и _password непосредственно текст а не переменные. Просто проверь хоть они то добавятся или нет. если нед обавятся значит у тебя тупо конекта к базе нет.

Спустя 5 минут, 12 секунд (7.06.2007 - 12:04) Fidel написал(а):
smile.gif Да коннект то есть!! Я же написал, что если md5 не использовать, то все отлично работает, это я с самого начала попробовал.
Ну тем не менее спасибо за совет!

Спустя 16 минут, 38 секунд (7.06.2007 - 12:20) TRIAL написал(а):
если всё нормально без мд5() то сделай следующее
Код
$query = "INSERT INTO users(user_name,user_password) values('".$_POST['user_name']."','".md5($_POST['user_password']),"')";
echo $query;

и запости тут что выдаст echo

Спустя 13 минут, 10 секунд (7.06.2007 - 12:34) zaxar написал(а):
Цитата
а в $query="INSERT INTO users values('','$user_name','$user_password')"; в скобках ", перед $user_name - это для чего??


Только там не кавычки, а два апострофа.

Я ради эксперимента создал такую же таблицу, и твой запрос у меня тупо не прошел. А мой сработал. Странно...

Так что, попробуй.

Спустя 9 часов, 52 минуты, 33 секунды (7.06.2007 - 22:26) Fidel написал(а):
Ура, товарищи!! Заработало, причем первоначальная конструкция!! Проблема оказалось всего навсего в том, что в для user_password varchar(30) был, изменил на 32, и все заработало!!! Глупый недочет вообщем!! Всем огромное спасибо!!!!

Спустя 4 года, 8 месяцев, 27 дней, 23 часа, 7 минут, 7 секунд (5.03.2012 - 21:33) Pride_St написал(а):
Проверь кодировки, вполне вероятно, что при несовпадении кодировок md5 вместо 15 символов сразу 30 становится. Это случается при несовпадении кодировки сайта и базы данных. Проблема решается принудительноым указанием кодировки в которой работать с базой следующими командами:

//Указываем кодитровку
//В качестве параметра тебе нужно указать твою кодировку базы данных
mysql_query("SET NAMES 'latin1'");
mysql_query("SET CHARACTER SET 'latin1'");

эти команды указываются единожды за сеанс работы с бд. перед записью


_____________
Быстрый ответ:

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