Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » кодировака UTF-8 в XHTML, PostgreSQL

Ответить
Настройки темы
кодировака UTF-8 в XHTML, PostgreSQL

Аватара для Demiurg

Старожил


Сообщения: 339
Благодарности: 8

Профиль | Сайт | Отправить PM | Цитировать


Web-приложение, страничка с формой для логина на XHTML 1.0 UTF-8, форма обрабатывается php скриптом, который сверяет
Код: Выделить весь код
$string = "md5".md5($password.$login);
if ($data[0] == $string){ ... }
где $data[0] - (SELECT passwd FROM pg_shadow WHERE usename LIKE '$login').
База PostgreSQL - UTF8. Вобщем логина не получается. Раньше для логина пользователей заводил отдельные таблицы для пользователей и групп, сейчас хочу воспользоваться нативными средствами PostgreSQL... раньше работало, но раньше и странички и база были в KOI8... а тут такой гемор с кодировками при работе с XMLHttpRequest, что решил лучше уж сейчас на UTF-8 переходить, чем потом, когда приложение разрастётся...
Скрипт login.php простейший (пока), выводит только md5 суммы.
Для отладки стал выводить (echo) получившуюся md5 сумму и сумму, которую извлекаю из базы, на экране все сходится, только комментарии на русском языке - кракозябры... стоит в браузере поставить жестко UTF8 - сумма которую я вычисляю, в UTF-8 уже другая... а сумма, которую я извлекаю из базы остаётся без изменения при переключении кодировок в браузере (при переключении, на экране свой вид не меняет)... как я понимаю, $_POST['login'] и $_POST['password'] попадают в login.php в кодировке отличной от UTF-8... логичный вопрос, а почему?
Фу, объяснил как мог...

-------
Человек тонкого ума живет бескорыстными, высокими интересами, его радости - это искусство, любовь, наука, путешествия, книги...


Отправлено: 12:49, 28-02-2007

 

Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


Demiurg а сам скрипт какую кодовую страницу использует? Все должно соответствовать...

Отправлено: 16:41, 28-02-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Demiurg

Старожил


Сообщения: 339
Благодарности: 8

Профиль | Сайт | Отправить PM | Цитировать


он никакую таблицу не использует, т.е. ни каких HTML заголовков в нем нет, но сама кодировка скрипта - UTF-8. После его исполнения браузер не знает кодировку документа, потому вывод (echo) - вместо русских букв кракозябры... а md5 суммы по внешнему виду совпадают, как только меняю в браузере на UTF-8, сразу видны русские буквы, а вид подсчитанной суммы изменяется (вид хеша из БД не изменяется)...
login.php без смены кодировки в браузере:
Код: Выделить весь код
---кракозябры---
pass = md572c4bf92e86a141127e41e9ca1265a6f <- это сумма извлеченная из базы
hash = md572c4bf92e86a141127e41e9ca1265a6f <- это подсчитанная md5 сумма
меняем кодировку в браузере (без перезагрузки странички) [Вид->Кодировка->UTF8] (что бы увидеть русский текст, а не кракозябры):
Код: Выделить весь код
Неверное имя пользователя или пароль.
pass = md572c4bf92e86a141127e41e9ca1265a6f
hash = md5d41d8cd98f00b204e9800998ecf8427e
^- вот так преобразуется страница после установки кодировки в UTF8...
Пробовал в начале скрипта написать:
Код: Выделить весь код
setlocale(LC_ALL,'ru_RU.UTF-8');
безрезультатно.

-------
Человек тонкого ума живет бескорыстными, высокими интересами, его радости - это искусство, любовь, наука, путешествия, книги...


Отправлено: 17:04, 28-02-2007 | #3


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


Цитата:
После его исполнения браузер не знает кодировку документа
перед выводом:
Код: Выделить весь код
header("Content-Type: text/html; charset=UTF-8");
Цитата:
'ru_RU.UTF-8'
Где взял? Может просто "UTF-8"?

Отправлено: 17:30, 28-02-2007 | #4


Аватара для Demiurg

Старожил


Сообщения: 339
Благодарности: 8

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
'ru_RU.UTF-8'
в инете где-то нарыл. Исправление на UTF-8 тоже ничего не дало.

-------
Человек тонкого ума живет бескорыстными, высокими интересами, его радости - это искусство, любовь, наука, путешествия, книги...


Отправлено: 19:27, 28-02-2007 | #5


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


md5 из базы то при какой кодировке создавался (когда в базу загонялся)? Такую же и надо юзать у клиента, или перекодировать данные клиента перед хешированием (с пом. iconv). Видимо из UTF-8 в koi8-r...
PHP код: Выделить весь код

$string "md5".md5(iconv("UTF-8""KOI8-R"$password.$login)); 



Отправлено: 20:48, 28-02-2007 | #6

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


ru_RU.UTF-8 - это для установки кодировок локали на unix-машине - к броузеру отношение явно не имеет

Отправлено: 13:24, 01-03-2007 | #7


Аватара для Demiurg

Старожил


Сообщения: 339
Благодарности: 8

Профиль | Сайт | Отправить PM | Цитировать


Пароль создавался в базе UTF-8 (у базы родная кодировка UTF-8), потому когда мы его извлекаем он уже в UTF-8; $_POST['login'] и $_POST['password'] приходят к нам со странички index.xhtml (которая в UTF-8)... неужели данные, которые мы вводим в форму, имеют кодировку локали ОС? (в случае с FreeBSD - это KOI8-R, Windows - cp1251)?

-------
Человек тонкого ума живет бескорыстными, высокими интересами, его радости - это искусство, любовь, наука, путешествия, книги...


Отправлено: 17:22, 01-03-2007 | #8


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


Demiurg не понятно... в какой кодировке слали свои пароли пользователи, когда регистрировались? KOI8? Тады и сравнивать надо предварительно перекодировав в KOI8... кодировка базы - дело десятое...

Отправлено: 19:32, 01-03-2007 | #9


Аватара для Demiurg

Старожил


Сообщения: 339
Благодарности: 8

Профиль | Сайт | Отправить PM | Цитировать


Sham Данные, которые мы вводим в форму, имеют кодировку локали ОС (вне зависимости от того какую кодировку имеет документ с формой)???

-------
Человек тонкого ума живет бескорыстными, высокими интересами, его радости - это искусство, любовь, наука, путешествия, книги...


Отправлено: 12:28, 02-03-2007 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » кодировака UTF-8 в XHTML, PostgreSQL

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Верстка XHTML. Едет в Firefox. Artem-Samsung Вебмастеру 2 13-12-2007 00:56
Delphi - UTF-16 papyc Программирование и базы данных 3 27-09-2007 13:21
firefox и xhtml Demiurg Вебмастеру 7 19-02-2007 12:09
XHTML Guest Вебмастеру 1 12-05-2004 00:04
UTF Ricardo013 Программное обеспечение Linux и FreeBSD 8 09-04-2004 12:10




 
Переход