Фильтрация логина !

slavon-x86

Well-known member
18.12.2005
215
0
#1
Код:
if (preg_match("/[^a-z0-9а-я\- _]/i", $username)) $err = "Запрещённые символы в логине";
Всё нормально, но если встречаются русские большие буквы, то не работает !
 
A

Artexoid

#2
Для: slavon-x86

Кто же в логине вообще разрешает русские буквы :)?
Вот, отсекает всё кроме латинских (любого регистра), '-' и '_':
Код:
if (preg_match("/[^a-z0-9\- _]/i", $username)) 
$err = "Запрещённые символы в логине";
А то, что у Вас приведено, тоже нормально работает, только еще и всю кириллицу разрешает.
 
G

GOsha

#3
Код:
if (preg_match("/[^A-Za-z0-9А-Яа-я\- _]/i", $username)) $err = "Запрещённые символы в логине";
Он так поймет.
Можно еще
Код:
if (preg_match("/[^A-z0-9А-я\- _]/i", $username)) $err = "Запрещённые символы в логине";
 
G

Gisma

#4
убери русские символы из логина, интернет не готов к русским значащим именам :)
 

slavon-x86

Well-known member
18.12.2005
215
0
#5
Спасибо, заработало !
Я просто решил сделать единую регистрацию на сайте и на форуме phpbb и взял за основу базу данных форума, а там разрешены русские буквы !
 
G

GOsha

#6
Так что? Ты убрал русские символы, или оставил, как я тебе предложил?
 
A

Artexoid

#8
Да вы что смеётесь? Никто никогда не разрешает русские символы в логине!!!
Лучше тогда сделать дополнительное поле "Ник", в котором разрешить русские символы (или даже вообще любые символы) и который в последствии выводить везде.!
 
G

GOsha

#9
Да вы что смеётесь? Никто никогда не разрешает русские символы в логине!!!
Лучше тогда сделать дополнительное поле "Ник", в котором разрешить русские символы (или даже вообще любые символы) и который в последствии выводить везде.!
Гы... Впринципету де-то прав.
В-основном это так, но серваки нормально работают с русским и базы данных.
Хотя можно использовать в кацтве логина собснае мыло, а логин уже сам определяется.
 
A

Artexoid

#10
Для: GOsha

Та конечно я знаю, что нормально работают с русским :rolleyes: . Но общепринято в логине - 'латиница', '-' и '_'. Все-таки логин обычно для авторизации служит, я вот и говорю, зачем перегружать его левыми символами, пусть логин выполняет своё прямое предназначение. Пароли ведь русские совсем не делают :). По моему русские символы в логине – это совсем лишнее :), хотя у каждого конечно своё видение на этот счёт!
 
G

Gisma

#11
причина неприменения в логине национальных языков, проста до ужаса:rolleyes:
буквы в нац. языках особенно урл не занесешь
вот пример урлов:
/path/Gisma/
/path/Гизма/
второй в себе несет потенциальную опасность по нескольким причинам:
- не все браузеры корректно поддерживают такие запросы:)
- может отображаться некорректно в браузере человека юзающего другой нац. язык (в случае без утф)
- в случае строки UTF Гизма ваще превращается в 10 - байтовую нечитаемую последовательность, что само по себе нечитаемо и соотв. неприменимо
 
G

GOsha

#12
СТранно, но у меня логин ниде в урлах не плавает... :rolleyes:
Максимум ID. И того не увидишь.
 
A

Artexoid

#13
Кстати действительно. Логин только для авторизации, для всего остального включая каталога юзера можно использовать уникальный ID. А сам логин даже если и на русском будет, закодируется в UTF-8 на стороне клиента и декодируется на стороне сервера приняв первоначальный вид и никому не интересно как оно будет выглядеть при передаче на сервер (методом POST) или как оно там выглядит при хранении в той же сессии. Никаких проблем. А люди у которых возможно некорректное отображение кириллицы вообще не зайдут на сайт, так как у них все шрифты на сайте будут отображаться некорректно!

Просто использовать русский в логине плохой тон :rolleyes:
 
G

GOsha

#14
Для: Artexoid
Ты же знаешь, что есть куча ламо, которые хотят называться Пусечка, Пупсик, Плюшевый и др.
 
G

Gisma

#15
Это не ламо, это пользователи.
А логин в урлах будет плавать :rolleyes: Такие вот дела..
 
G

GOsha

#16
Для: Gisma
Нафига тебе логин выводить в урл? Запомни в сессию.
 
A

Artexoid

#17
Для: Gisma

Ну где будет плавать логин это там куда его пошлют :). Если брать готовые движки там может что-то и плавает, лично я в своих системах логин никогда не сую в URL! Зачем он там нужен? Вообще в URL нужно минимум переменных закидывать по крайней необходимости, а для идентификации есть сессии.

Для: GOsha

А насчёт пусечик, пусть называются :), в чём проблемма-то?? А-то за то чтобы Логин и Ник разграничивать :). Типа Логин-Pusia Ник-Пуся и выводить этот Ник везде, вот и всё :)
 
G

Gisma

#18
хм.... :)
Логин в урл?
/somesite/user/Gisma - выводит информациб об урле
love.rambler.ru/Anastasia/
логин в урле, применяется во многих сайта, где часто необходимо смотреть инфо по пользователю (знакомства, доски объяв, биржи и т.д. и т.п.)
 
A

Artexoid

#19
Для: Gisma

Ах в этом смысле :). Ну можно обойтись и без логина в URL на самом деле и очень просто!