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

Форум администраторов игровых серверов (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, а вы пытаетесь в строку его кастануть и сравнить, что неверно. Тут не телепаты.

Salomey 28.10.2011 14:05

Re: sql,php
 
если код выложить, он большой получится, поэтому прошу в скайпе разобраться) чтобы наглядно всё показать

Dizband 28.10.2011 14:07

Re: sql,php
 
Выложите только запрос на вставку данных в базу, код процедуры и структуру таблицы с описанием типов полей.

Salomey 28.10.2011 14:49

Re: sql,php
 
http://imageshost.ru/photo/125775/id998301.html
http://imageshost.ru/photo/59201/id998300.html
http://imageshost.ru/photo/id998302.html

Dizband 28.10.2011 17:25

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

Сообщение от Salomey (Сообщение 145765)

Ну и что я говорил? У вас у пароля бинарный тип.
Запрос на проверку существования пары логин пароль будет выглядеть так:
Код:

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

Salomey 28.10.2011 18:00

Re: sql,php
 
потом осуществлять проверку с помощью mssql_num_rows ? мол
$num = mssql_num_rows($qeury)
if ($num == 0) { echo "такого не знаем" } ...

Azagthtot 28.10.2011 18:04

Re: sql,php
 
эм... MSSQL не возвражает количество строк, которе вернул запрос. Т.е. функции mssql_num_rows не существует в природе

Salomey 28.10.2011 18:07

Re: sql,php
 
существует))) гугл в помощь

Gambit_J 28.10.2011 18:26

Re: sql,php
 
ТС. да че ты паришся? В 3 посте, n0nam3 тебе ответил как надо сделать. Что сложного? Сам лично так делал при создании авторизации.

Salomey 28.10.2011 18:49

Re: sql,php
 
php_mysql, можно с тобой связаться как нибудь

Gambit_J 28.10.2011 19:53

Re: sql,php
 
Можно, оставь свой icq в ЛС

Salomey 28.10.2011 19:54

Re: sql,php
 
я не знаю как написать генератор, в силу своей неопытности... поэтому прошу помощи)

Gambit_J 28.10.2011 19:59

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

Сообщение от Salomey (Сообщение 145814)
я не знаю как написать генератор, в силу своей неопытности... поэтому прошу помощи)

Я с mssql не работаю, но в принципи можно разобраться по такой мелочи.

niko42 28.10.2011 20:07

Re: sql,php
 
DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf ');
SELECT HashBytes('SHA1', @HashThis);
GO

Salomey 28.10.2011 20:46

Re: sql,php
 
это всё mssql, я же не могу вызвать функции mssql из php

Dizband 29.10.2011 01:54

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

Сообщение от Salomey (Сообщение 145785)
потом осуществлять проверку с помощью mssql_num_rows ? мол
$num = mssql_num_rows($qeury)
if ($num == 0) { echo "такого не знаем" } ...

Да._________

Salomey 29.10.2011 08:45

Re: sql,php
 
извините, но нечего не выходит(( уже неделю незнаю что делать...

Dizband 29.10.2011 15:33

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

Сообщение от Salomey (Сообщение 145888)
извините, но нечего не выходит(( уже неделю незнаю что делать...

Тогда я ничем не могу помочь, я дал вам верный запрос(ошибка была в том, что не было конверта в binary) - дальше уже можно погуглить.

Salomey 29.10.2011 16:46

Re: sql,php
 
ну я сделал всё как вы сказали, но всёравно нечего не возвращает


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

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