URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4029
[ Назад ]

Исходное сообщение
"PHP и MySQL - проблема с   password('$password')"

Отправлено Bob_kik , 09-Апр-06 17:00 
Есть запрос:
$query = "UPDATE users SET login=\"$name\", passwrd=password(\"$passwd\") WHERE login=\"bogdan\"";
который меняет имя и пароль пользователя в БД MySQL.

Но запрос:
$query = "SELECT * FROM users WHERE login='".$login."' and passwrd=password('".$password."')";
не возвращает нужный результат.

Помогите, пожалуйста.


Содержание

Сообщения в этом обсуждении
"PHP и MySQL - проблема с   password('$password')"
Отправлено Akademic , 09-Апр-06 22:23 
>Есть запрос:
> $query = "UPDATE users SET login=\"$name\", passwrd=password(\"$passwd\") WHERE login=\"bogdan\"";

Попробуй записать нормально, без вложенных прослешеных кавычек.

Какая версия MySQL?


"PHP и MySQL - проблема с   password('$password')"
Отправлено Bob_kik , 10-Апр-06 09:56 
Версия 4.0.21
Кавычки ставил всякие:   ' , " , \"
не проходит.

"PHP и MySQL - проблема с   password('$password')"
Отправлено GD , 10-Апр-06 12:24 
>Версия 4.0.21
>Кавычки ставил всякие:   ' , " , \"
>не проходит.


сомневаюсь что дело в версии
я бы изучил реальные запросы поступающие в базу
возникающие от этих запросов изменения
ну и mysql_error() есесина


"PHP и MySQL - проблема с   password('$password')"
Отправлено MoRo , 10-Апр-06 15:02 
>>Версия 4.0.21
>>Кавычки ставил всякие:   ' , " , \"
>>не проходит.
>
>
>сомневаюсь что дело в версии
>я бы изучил реальные запросы поступающие в базу
>возникающие от этих запросов изменения
>ну и mysql_error() есесина

Я думаю что запрос должен выглядеть так.

$query = "SELECT * FROM users WHERE login='".$login."' and passwrd=password('".$password."');";
Только это для постгрес. Я думаю что и для MySQL тоже пойдет. Только не знаю нужна там в конце запроса точка с запятой.


"PHP и MySQL - проблема с   password('$password')"
Отправлено Bob_kik , 11-Апр-06 12:27 
>Я думаю что запрос должен выглядеть так.
>
>$query = "SELECT * FROM users WHERE login='".$login."' and passwrd=password('".$password."');";
>Только это для постгрес. Я думаю что и для MySQL тоже пойдет.
>Только не знаю нужна там в конце запроса точка с запятой.
>

Так тоже не проходит. точка с запятой - без разницы. Проверял на PHPMyAdmin - запрос правильный, не выдает никакого результата, а должен :)
Может ошибка в другом? Будем копать.


"PHP и MySQL - проблема с   password('$password')"
Отправлено Ilyang , 11-Апр-06 12:54 
Если ошибки mysql нет и запрос возвращает 0 строк - значит дело в запросе. попробуйте избавиться от одного условия, для начала от пароля

SELECT * FROM users WHERE login='bogdan'

Для общего развития расскажите, какой смысл в условиях проверять и имя и пароль?
У вас в базе будут храниться несколько одинаковых логинов с разными паролями?


"PHP и MySQL - проблема с   password('$password')"
Отправлено MoRo , 11-Апр-06 13:54 
>Если ошибки mysql нет и запрос возвращает 0 строк - значит дело
>в запросе. попробуйте избавиться от одного условия, для начала от пароля
>
>
>SELECT * FROM users WHERE login='bogdan'
>
>Для общего развития расскажите, какой смысл в условиях проверять и имя и
>пароль?
>У вас в базе будут храниться несколько одинаковых логинов с разными паролями?
>


Ну вообще если проверять только по паролю тоже не дело, т.к. несколько юзеров может ввести один и тотже пароль и как потом их различать если запрос выдаст 10 таких юзеров с одинаковым паролем.
А насчет запроса я думаю что нужно копать в направлении password('$password') чё то у меня подозрение что она выдает не то что нужно.


"PHP и MySQL - проблема с   password('$password')"
Отправлено Bob_kik , 11-Апр-06 16:14 
>Если ошибки mysql нет и запрос возвращает 0 строк - значит дело
>в запросе. попробуйте избавиться от одного условия, для начала от пароля
>
>
>SELECT * FROM users WHERE login='bogdan'
>
>Для общего развития расскажите, какой смысл в условиях проверять и имя и
>пароль?
>У вас в базе будут храниться несколько одинаковых логинов с разными паролями?
>

В базе могут хранится несколько одинаковых логинов и не сколько одинаковых паролей у разных пользователей.

SELECT * FROM users WHERE login='bogdan'  - работает правильно, всегда выдает нужный результат!
Без password() все работает отлично. А с password() .... :(
Думаю чёта кге-то упустил, а вот что?


"PHP и MySQL - проблема с   password('$password')"
Отправлено Ilyang , 11-Апр-06 16:33 
Попробуйте выполнить запрос с password() из phpmyadmin с заведомо правильными именем пользователя и паролем.

Если результат запроса пустой, попробуйте сравнить для этого пользователя хэш пароля из базы данных с результатом, который выдает password() :

SELECT passwrd, PASSWORD('пароль пользователя')
FROM users
WHERE login='bogdan'

Если хеши разные, то скорее всего изменился метод шифрования паролей, возможно, после обновления mysql сервера или же в базу пароли заносятся другой функцией, ENCRYPT() например.