Русские буквы в логине

Есть блог, для одного игрового сообщества.
Логин в блоге = логин в игре, который допускает наличие русских букв в логине.
Поэтому делаем такой хак:

ls\include\function.php
143 строка:
case 'login': if (preg_match("/^[\da-z\_\-]{".$iMin.','.$iMax."}$/i",$sValue)){ return true; } break;


на
case 'login': if (preg_match("/^[\da-zа-я\_\-\.]{".$iMin.','.$iMax."}$/iu",$sValue)){ return true; } break;


ls\classes\engine\Router.class.php
добавляем после 81 строки:
$sReq=(urldecode ($sReq));


ls\classes\actions\ActionProfile.class.php
42 строка:
$this->AddEventPreg('/^[\w\-\_]+$/i','/^(whois)?$/i','EventWhois');
$this->AddEventPreg('/^[\w\-\_]+$/i','/^favourites$/i','/^(page(\d+))?$/i','EventFavourite');


на:
$this->AddEventPreg('/^[\wА-Яа-я\-\_]+$/iu','/^(whois)?$/iu','EventWhois');
$this->AddEventPreg('/^[\wА-Яа-я\-\_]+$/iu','/^favourites$/iu','/^(page(\d+))?$/i','EventFavourite');

5 комментариев

avatar
Спасибо! Одназначно пригодится — добавил в избранное.
avatar
Насколько я понимаю, поддомены работать не будут, у кого они есть.
  • vist
  • +1
avatar
С поддоменами — я не сталкивался, ибо у меня нету этого модуля.

Но принцип такой же, надо расширить регулярку, добавив русские буквы, и сделать urldecode (если потребуется)
avatar
А он требуется в классе роутера, иначе регулярка не сработает! (символ %)
avatar
Мне пришлось еще дополнительно в файле
classes/actions/ActionMy.class.php
в районе 40-й строчки
$this->AddEventPreg('/^[\w\-\_]+$/i','/^(page(\d+))?$/i','EventTopics');
$this->AddEventPreg('/^[\w\-\_]+$/i','/^blog$/i','/^(page(\d+))?$/i','EventTopics');
$this->AddEventPreg('/^[\w\-\_]+$/i','/^comment$/i','/^(page(\d+))?$/i','EventComments');

заменить на
$this->AddEventPreg('/^[ а-я\w\-\_]+$/iu','/^(page(\d+))?$/i','EventTopics');
$this->AddEventPreg('/^[ а-я\w\-\_]+$/iu','/^blog$/i','/^(page(\d+))?$/i','EventTopics');
$this->AddEventPreg('/^[ а-я\w\-\_]+$/iu','/^comment$/i','/^(page(\d+))?$/i','EventComments');

ЗЫ у меня еще и пробелы в имени пользователя разрешены.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.