Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
sql,php
#1
У меня проблема с 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= пароль
Не возвращает результат(
Ответ
#2
Все намного проще. Вы не правельно написали запрос. Не по правилам.

Вот так вроде должно работать:
mssql_query("SELECT * FROM Member WHERE ID = 'test123' AND PW = '".HashBytes('MD5', REVERSE(UPPER(@ID))+@PW) ."'");
Ответ
#3
php_mysql;145654 Написал:Вот так вроде должно работать:
HashBytes это функция mssql, как и reverse и upper.

Сгенерируйте пароль отдельно и сравните его с тем, что в базе. Быть может ID - это и есть ID аккаунта, а не его логин? Я не видел всей системы, посему не знаю.
Ответ
#4
n0nam3 Написал:HashBytes это функция mssql, как и reverse и upper.
Я на функцию необращал внимания, просто сказал как правельнее присвоить равенству в запросе. =' ".функция()." ' (без пробелов) Smile
Ответ
#5
Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402

Добавлено через 1 минуту
Юзер в форме вводит логин и пароль, мне надо написать запрос чтобы проверял пароль в обработчике, уже много часов думаю как их сравнить))
Ответ
#6
php_mysql;145720 Написал:Я на функцию необращал внимания, просто сказал как правельнее присвоить равенству в запросе. =' ".функция()." ' (без пробелов)
Это если она является функцией php, а не базы данных.
Ответ
#7
Salomey Написал:Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402

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

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

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

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

P.S. либо я не так понял.
Ответ
#8
Salomey;145723 Написал:Да, это функция mssql, если у кого есть минутка помочь мне, прошу сюда skype:tequilaa402

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

Добавлено через 32 секунды
niko42;145754 Написал:P.S. либо я не так понял.
Не так поняли, и пример неверный.
Ответ
#9
Вы не так поняли)) На запрос регистрации я использую хранимую процедуру, в процедуре есть 2 переменные @ID и @PW, пароль генерируется по алгоритму который я отписал выше, ну вот когда юзер вводит логин и пароль для входа в лк (личный кабинет) обработчик должен сверить пароль который он ввёл в форму, с тем что в базе, ну чтобы я не писал, получается фигня))
Ответ
#10
Salomey;145757 Написал:Вы не так поняли)) На запрос регистрации я использую хранимую процедуру, в процедуре есть 2 переменные @ID и @PW, пароль генерируется по алгоритму который я отписал выше, ну вот когда юзер вводит логин и пароль для входа в лк (личный кабинет) обработчик должен сверить пароль который он ввёл в форму, с тем что в базе, ну чтобы я не писал, получается фигня))
Тогда и код процедуры надо. Может у вас поле пароля varbinary, а вы пытаетесь в строку его кастануть и сравнить, что неверно. Тут не телепаты.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)