Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   PHP (https://forum.zone-game.info/forumdisplay.php?f=125)
-   -   sql,php (https://forum.zone-game.info/showthread.php?t=16492)

Salomey 27.10.2011 20:42

sql,php
 
У меня проблема с SQL Server. Моя задача это реализовать простой SQL Serverbased usersystem с PHP. Базы данных также используется в MMORPG, так что я не могу менять структуру базы данных или хэширования алгоритмов. Реальная причина моей проблемы в том, что пароль хешируется по следующиму алгоритму
PHP код:

HashBytes('MD5'REVERSE(UPPER(@ID))+@PW

Я создал тестового пользователя назвал test123 и PW hallo123 что соответствует хэш пароля

до этого момента все должно быть ясно. Ну а когда я пытаюсь извлечь данные в запросе я получаю никаких результатов. Я использовал этот запрос:
PHP код:

mssql_query("SELECT * FROM Member WHERE ID = 'test123' AND PW = HashBytes('MD5', REVERSE(UPPER('test123')) + 'hallo123')"); 

Где ID= логин, PW= пароль
Не возвращает результат(

Gambit_J 27.10.2011 22:53

Re: sql,php
 
Все намного проще. Вы не правельно написали запрос. Не по правилам.

Вот так вроде должно работать:
mssql_query("SELECT * FROM Member WHERE ID = 'test123' AND PW = '".HashBytes('MD5', REVERSE(UPPER(@ID))+@PW) ."'");

Dizband 28.10.2011 01:33

Re: sql,php
 
Цитата:

Сообщение от php_mysql (Сообщение 145654)
Вот так вроде должно работать:

HashBytes это функция mssql, как и reverse и upper.

Сгенерируйте пароль отдельно и сравните его с тем, что в базе. Быть может ID - это и есть ID аккаунта, а не его логин? Я не видел всей системы, посему не знаю.

Gambit_J 28.10.2011 12:50

Re: sql,php
 
Цитата:

Сообщение от n0nam3 (Сообщение 145679)
HashBytes это функция mssql, как и reverse и upper.

Я на функцию необращал внимания, просто сказал как правельнее присвоить равенству в запросе. =' ".функция()." ' (без пробелов) :)

Salomey 28.10.2011 12:53

Re: sql,php
 
Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402

Добавлено через 1 минуту
Юзер в форме вводит логин и пароль, мне надо написать запрос чтобы проверял пароль в обработчике, уже много часов думаю как их сравнить))

Dizband 28.10.2011 13:31

Re: sql,php
 
Цитата:

Сообщение от php_mysql (Сообщение 145720)
Я на функцию необращал внимания, просто сказал как правельнее присвоить равенству в запросе. =' ".функция()." ' (без пробелов)

Это если она является функцией php, а не базы данных.

niko42 28.10.2011 13:48

Re: sql,php
 
Цитата:

Сообщение от Salomey (Сообщение 145723)
Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402

Добавлено через 1 минуту
Юзер в форме вводит логин и пароль, мне надо написать запрос чтобы проверял пароль в обработчике, уже много часов думаю как их сравнить))

Вам на что проверка нужна? Ввел юзер пароль или нет?=)

if(!password(если НЕ NULL то добавляем в БД)){

}
else(а здесь если NULL){}

P.S. либо я не так понял.

Dizband 28.10.2011 14:00

Re: sql,php
 
Цитата:

Сообщение от Salomey (Сообщение 145723)
Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402

Добавлено через 1 минуту
Юзер в форме вводит логин и пароль, мне надо написать запрос чтобы проверял пароль в обработчике, уже много часов думаю как их сравнить))

Весь код выложите.

Добавлено через 32 секунды
Цитата:

Сообщение от niko42 (Сообщение 145754)
P.S. либо я не так понял.

Не так поняли, и пример неверный.

Salomey 28.10.2011 14:01

Re: sql,php
 
Вы не так поняли)) На запрос регистрации я использую хранимую процедуру, в процедуре есть 2 переменные @ID и @PW, пароль генерируется по алгоритму который я отписал выше, ну вот когда юзер вводит логин и пароль для входа в лк (личный кабинет) обработчик должен сверить пароль который он ввёл в форму, с тем что в базе, ну чтобы я не писал, получается фигня))

Dizband 28.10.2011 14:03

Re: sql,php
 
Цитата:

Сообщение от Salomey (Сообщение 145757)
Вы не так поняли)) На запрос регистрации я использую хранимую процедуру, в процедуре есть 2 переменные @ID и @PW, пароль генерируется по алгоритму который я отписал выше, ну вот когда юзер вводит логин и пароль для входа в лк (личный кабинет) обработчик должен сверить пароль который он ввёл в форму, с тем что в базе, ну чтобы я не писал, получается фигня))

Тогда и код процедуры надо. Может у вас поле пароля varbinary, а вы пытаетесь в строку его кастануть и сравнить, что неверно. Тут не телепаты.


Текущее время: 13:58. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot