![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Нашел в Инете скрипт регистрации, все отлично пашет, кое-что свое подобавлял, но столкнулся с одной проблемой - регистрироваться под русским ником нельзя. А в проекте, который я планирую создать, это просто необходимо. В скрипте есть функция field_validator(), которая проверяет поля на правильность и если все правильно - записывает в БД. Так вот, там есть такой вот код:
Как мне в alpha и производные добавить поддержку кирилицы? Попытался просто добавить "а-яА-Я", но не помогло добавлено позже Сейчас вот подумал, что эта тема может быть немного не по адресу, но уже поздно. Я про БД думал, потому сюда и написал. Это сообщение отредактировал(а) Nurik - 20.3.2006, 16:30 --------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 1 Всего: 4 |
Добавть в квадратные скобки:
А-Яа-я или просто а-Я |
|||
|
||||
| Нурик Сакура |
|
||||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Извини, в какие квадратные скобки? в [a-zA-Z]? Я же написал, что пробовал - не помогает. Добавлено @ 15:21 Поправка. Я добавлял "а-яА-Я". Это не помогло. Добавил "а-Я", и у меня скрипт матернулся:
Вот строка 148:
--------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
||||
|
|||||
| wsr |
|
|||
![]() Fuzzy Logic ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 3.7.2005 Репутация: нет Всего: 2 |
Ты уверен, что именно в alpha нужно. попробуй добавить во все поля и посмотри на результат. А вообще, это правильно [a-zA-Zа-яА-Я]
--------------------
ICQ : 918-318Сайт : Lock-Team |
|||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Да, я уверен, что именно в альфа нужно, потому что передается:
--------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Всё работает, вот пример:
|
|||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Ciber SLasH, запустил твою строку в отдельном файле в результате вывело просто число 1 и все.
--------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Кстати, если в БД поменять вручную логин на русский - то тоже выдает ошибку, говорит, что логин не правильный.
--------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Тогда могу посоветовать перевести все файлы в кодировку UTF-8 и тогда будет работать такой код:
|
|||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Не работает. Матерится на 9 строку твоего кода
--------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| wsr |
|
||||||
![]() Fuzzy Logic ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 3.7.2005 Репутация: нет Всего: 2 |
Ну ты уж определись, что у тебя alpha, а что alphanumeric. И добавь во все проверки и помотри, нефига гемороиться.
Выводит 1 потому, что результатом выполнения этой операции будет TRUE или FALSE т.е. если Удовлетворяет регулярке, то TRUE иначе FALSE. Это собственно все в мануале написано. Или выкладывай весь код полностью.! --------------------
ICQ : 918-318Сайт : Lock-Team |
||||||
|
|||||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
||||
|
||||
| Нурик Сакура |
|
||||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Я во все добавлял. Если ты не заметил чуток выше я писал про alpha и производные. Извини, я с регулярными выражениями никогда еще не работал. Почитал сейчас мануал, буду пытаться разобраться.
Я скопировал твой код, вставил в отдельный файл, сохранил, запустил в браузере. Выдало ошибку с матами на 9 строку. Где еще ему мета-тег прописать? --------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
||||
|
|||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
||||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Все, я понял. Я просто не раздуплился, что самому файлу нужно указать кодировку.
--------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| Нурик Сакура |
|
||||||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Значит так. Вот что я только что напроверял. Вынес проверку поля в отдельный файл и запустил. Все заработало. А вот в файле регистрации не хочет (оба файла в кодировке ANSI).
Вот запрос к функции после нажатия на кнопку "Зарегаться":
Вот ПОЛНЫЙ код всей функции field_validator:
При передаче в поле $_POST["login"] из формы логина "Нурик" выводится сообщение: "Please enter a valid $field_descr." А вот вынесенная в отдельный файл проверка:
Все отлично работает и выводит единицу. Это сообщение отредактировал(а) Nurik - 23.3.2006, 15:35 --------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
||||||
|
|||||||
| madFobos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.12.2005 Репутация: нет Всего: 3 |
Вобщем, не мучайся. Самое простое это вместо А-Яа-я использовать \x7F-\xFF, это шестнадцатеричные коды русских букв (хотя я не уверен, что их ereg поддерживате, вот preg_match точно).
Другой вариант заключается в том, что все проверки строк основаны на текущей локали, так что выстави setlocalce(LC_ALL, 'rus') //Название локалей надо на хостинге смотреть или хотя бы проверь какая у тебя стоит на сравнение строк с помощью:
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Модератор: а при чем тут Базы Данных? Что, не может отличить текстовую информацию от БД? Перенесено.
|
|||
|
||||
| Нурик Сакура |
|
||||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Вобщем, сейчас вот вернулся к этому вопросу. Кажется, у меня получилось найти решение.
Во-первых, у меня в php.ini стояло раньше не default_charset = "utf8", а что-то другое, потому русский язык не поддерживался и приходилось писать все на английском. Сейчас поставил и все пашет как надо. Во-вторых, разобрался наконец-то с регуляркой. Теперь можно спокойно делать русский ник и он будет выводиться на экран нормально.
Для тех, кто не заметил разницы, обьясняю. Ввиду того, что логин у меня должен быть только на английском, а имя может содержать и русские символы, мне пришлось продублировать записи в масиве $data_types, указав для русского нужные символы. Проверять после этого стало все успешно регистрировать. Но при выводе из БД выдавало "???" вместо имени. Еще вчера я столкнулся с проблемой кодировки текста от пользователя, потому сделал ф-цию mk_txt (просто для удобства):
И теперь перед каждым вводом и выводом инфы, которая может быть на русском, я юзаю эту ф-цию. Все пашет идеально =) Юзайте, кому нужно, авось поможет. --------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Вот как раз при utf8 русский замечательно поддерживается. Изврат. Надо настроить нормально кодировку БД и установить лоакаль setlocale |
|||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Мм.. Ты не понял, у меня стояло НЕ utf8, а что-то другое, я не помню уже что. Я поставил utf8 и все запахало. Что касается кодировки БД, то там стоит utf8_unicode_ci. Но почему-то при вставке русского языка получается фигня какая-то.
--------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
||||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Сейчас проверю.
Добавлено @ 14:42 Посмотрел. Поменял в БД везде кодировку на uft8_general_ci и все заработало без ф-ции mk_txt =) Сейчас еще проверю отправку ПМок, если все работает - то тогда тема точно решена =) --------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
С ПМками проблема. Вобщем, вот та часть кода, которая отвечает за запись данных в БД:
Через форму передаются данные для записи в БД. В БД почему-то записывается не в таком формате "Íàçàð÷èê", как было записано русское имя персонажа, а вот в таком формате "Ëîëü÷èê". А при выводе получается не русский текст, а вот такая вот "Ïðèâåòèê" канитель Это сообщение отредактировал(а) Нурик Сакура - 13.1.2007, 15:01 --------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| Нурик Сакура |
|
|||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Я уже разобрался, что вся беда в htmlentities(), который русский текст превращает на то, что вставляется в БД. Но без него ведь никак... Или как-то по другому придется фильтровать то, что юзеры передают...
--------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
|||
|
||||
| Нурик Сакура |
|
||||
|
Почти японец... ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 17.12.2004 Где: Украина, Киев Репутация: нет Всего: 2 |
Как ни странно, но мануал мне помог решить проблему =)
Поставил вместо просто
вот такой вот вариант
и все заработало. Вобщем, все вопросы решены. --------------------
- Приказы не обсуждаются!- Не объясняются и не выполняются. (с) фанфик на Hellsing |
||||
|
|||||
| madFobos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.12.2005 Репутация: нет Всего: 3 |
Объясните мне одну вещь. Насколько я знаю проблемы с выводом символов ??? связаны с тем, что phpmysql библиотека использует по умолчанию кодировку latin для коннекта к базе, и с этим настройками кодировки самой базы ничего поделать нельзя. Или кодировка phpmysql зависит от default_charset в php.ini?
Это сообщение отредактировал(а) Mal Hack - 15.1.2007, 10:46 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |