Сообщений: 38
Тем: 1
Зарегистрирован: Oct 2011
Репутация:
15
У меня проблема с SQL Server. Моя задача это реализовать простой SQL Serverbased usersystem с PHP. Базы данных также используется в MMORPG, так что я не могу менять структуру базы данных или хэширования алгоритмов. Реальная причина моей проблемы в том, что пароль хешируется по следующиму алгоритму
PHP код: <?php
HashBytes('MD5', REVERSE(UPPER(@ID))+@PW)
Я создал тестового пользователя назвал test123 и PW hallo123 что соответствует хэш пароля
до этого момента все должно быть ясно. Ну а когда я пытаюсь извлечь данные в запросе я получаю никаких результатов. Я использовал этот запрос:
PHP код: <?php
mssql_query("SELECT * FROM Member WHERE ID = 'test123' AND PW = HashBytes('MD5', REVERSE(UPPER('test123')) + 'hallo123')");
Где ID= логин, PW= пароль
Не возвращает результат(
Сообщений: 981
Тем: 77
Зарегистрирован: Oct 2011
10-27-2011, 10:53 PM
(Сообщение последний раз редактировалось: 10-27-2011, 11:09 PM Gambit_J.)
Все намного проще. Вы не правельно написали запрос. Не по правилам.
Вот так вроде должно работать:
mssql_query("SELECT * FROM Member WHERE ID = 'test123' AND PW = '".HashBytes('MD5', REVERSE(UPPER(@ID))+@PW) ."'");
Сообщений: 734
Тем: 6
Зарегистрирован: Sep 2009
Репутация:
4,302
php_mysql;145654 Написал:Вот так вроде должно работать: HashBytes это функция mssql, как и reverse и upper.
Сгенерируйте пароль отдельно и сравните его с тем, что в базе. Быть может ID - это и есть ID аккаунта, а не его логин? Я не видел всей системы, посему не знаю.
Сообщений: 981
Тем: 77
Зарегистрирован: Oct 2011
n0nam3 Написал:HashBytes это функция mssql, как и reverse и upper. Я на функцию необращал внимания, просто сказал как правельнее присвоить равенству в запросе. =' ".функция()." ' (без пробелов)
Сообщений: 38
Тем: 1
Зарегистрирован: Oct 2011
Репутация:
15
10-28-2011, 12:53 PM
(Сообщение последний раз редактировалось: 10-28-2011, 12:54 PM Salomey.)
Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402
Добавлено через 1 минуту
Юзер в форме вводит логин и пароль, мне надо написать запрос чтобы проверял пароль в обработчике, уже много часов думаю как их сравнить))
Сообщений: 734
Тем: 6
Зарегистрирован: Sep 2009
Репутация:
4,302
php_mysql;145720 Написал:Я на функцию необращал внимания, просто сказал как правельнее присвоить равенству в запросе. =' ".функция()." ' (без пробелов) Это если она является функцией php, а не базы данных.
Сообщений: 175
Тем: 42
Зарегистрирован: Nov 2010
Репутация:
57
Salomey Написал:Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402
Добавлено через 1 минуту
Юзер в форме вводит логин и пароль, мне надо написать запрос чтобы проверял пароль в обработчике, уже много часов думаю как их сравнить))
Вам на что проверка нужна? Ввел юзер пароль или нет?=)
if(!password(если НЕ NULL то добавляем в БД)){
}
else(а здесь если NULL){}
P.S. либо я не так понял.
Сообщений: 734
Тем: 6
Зарегистрирован: Sep 2009
Репутация:
4,302
10-28-2011, 02:00 PM
(Сообщение последний раз редактировалось: 10-28-2011, 02:01 PM Dizband.)
Salomey;145723 Написал:Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402
Добавлено через 1 минуту
Юзер в форме вводит логин и пароль, мне надо написать запрос чтобы проверял пароль в обработчике, уже много часов думаю как их сравнить)) Весь код выложите.
Добавлено через 32 секунды
niko42;145754 Написал:P.S. либо я не так понял. Не так поняли, и пример неверный.
Сообщений: 38
Тем: 1
Зарегистрирован: Oct 2011
Репутация:
15
Вы не так поняли)) На запрос регистрации я использую хранимую процедуру, в процедуре есть 2 переменные @ID и @PW, пароль генерируется по алгоритму который я отписал выше, ну вот когда юзер вводит логин и пароль для входа в лк (личный кабинет) обработчик должен сверить пароль который он ввёл в форму, с тем что в базе, ну чтобы я не писал, получается фигня))
Сообщений: 734
Тем: 6
Зарегистрирован: Sep 2009
Репутация:
4,302
Salomey;145757 Написал:Вы не так поняли)) На запрос регистрации я использую хранимую процедуру, в процедуре есть 2 переменные @ID и @PW, пароль генерируется по алгоритму который я отписал выше, ну вот когда юзер вводит логин и пароль для входа в лк (личный кабинет) обработчик должен сверить пароль который он ввёл в форму, с тем что в базе, ну чтобы я не писал, получается фигня)) Тогда и код процедуры надо. Может у вас поле пароля varbinary, а вы пытаетесь в строку его кастануть и сравнить, что неверно. Тут не телепаты.
|