Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: запрос с использованием функции PASSWORD()
 
 автор: larush   (05.06.2006 в 17:34)   письмо автору
 
 

Собственно в том и вопрос. После того как все слетело, установил, восстановил MySQL. Скопировал свою базу и тут началась фигня. Запрос

select * from user where user_pass=password("123") and user_name="vasya" ;


перестал работать. На сервере все работает чудно, а восстановленной локальной машине нет. Измененный запрос

select * from user where user_pass='773359240eb9a1d9' and user_name="vasya" ;

проходит.

Еще, при просмотре через phpMyAdmin 2.5.3-rc3 структуры таблицы, выдает

Notice: Undefined index: D in C:\www\localhost\phpadmin\libraries\mysql_charsets.lib.php on line 38
я так полагаю, по кол-ву записей, а после
Warning: Cannot modify header information - headers already sent by (output started at C:\www\localhost\phpadmin\libraries\mysql_charsets.lib.php:38) in C:\www\localhost\phpadmin\libraries\ob.lib.php on line 65
несколько и потом уже отображает саму структуру

В чем мобыть дело ?

   
 
 автор: cheops   (05.06.2006 в 19:21)   письмо автору
 
   для: larush   (05.06.2006 в 17:34)
 

А вы версию MySQL не меняли? Дело в том, что начиная с MySQL 4.1 изменился формат данных возвращаемых функцией PASSWORD().

PS Если это действительно так и у вас более новая версия, чтобы получить старые значения можно воспользоваться функцией OLD_PASSWORD().

   
 
 автор: larush   (06.06.2006 в 08:41)   письмо автору
 
   для: cheops   (05.06.2006 в 19:21)
 

я переустанавливал все, в том числе и MySQL, так что Ваше предположение верно. Но, моя попытка заменить пароль в новой версии через PHPAdmin не увенчалась успехом

UPDATE 'user' SET 'user_pass' = PASSWORD( '123' ) WHERE 'user_id' = '1' LIMIT 1 ;

Ответ MySQL:
#1406 - Data too long for column 'user_pass' at row 1

Это отчего ?

   
 
 автор: cheops   (06.06.2006 в 10:48)   письмо автору
 
   для: larush   (06.06.2006 в 08:41)
 

А запрос
select * from user where user_pass=old_password("123") and user_name="vasya" ;

работает?

   
 
 автор: larush   (06.06.2006 в 11:04)   письмо автору
 
   для: cheops   (06.06.2006 в 10:48)
 

да, таким образом сработал, я же написал, что Ваши мысли относительно версии верны :-)

   
 
 автор: cheops   (06.06.2006 в 11:45)   письмо автору
 
   для: larush   (06.06.2006 в 11:04)
 

Скорее всего придётся переработать код... Вместо функции PASSWORD() лучше использовать что-то другое, например MD5(), так как PASSWORD() может и в дальнейшем претерпевать изменения и предназначена главным образом для внутреннего испльзования MySQL.

   
 
 автор: larush   (06.06.2006 в 11:49)   письмо автору
 
   для: cheops   (06.06.2006 в 11:45)
 

спасибо, буду менять

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования