@igordata Не нужно наворачивать функционал оригинальный_логин + представление, а в случае если исходить только из оригинального, то не нужен функционал обработки. Не нужны vipяшки с кульными логинами, попахивает.
Видал я такое. Заходишь в игру а там 1000 групп и все Russia. И в них все игроки Abyss. Везде свои минусы.
Я иду в комплекте с Walk, и то когда мне не лень Тем более, что мой вариант проверки на zalgo не работает, какие уж тут мозги У меня не завелось. Вот так завелось: transliterator_transliterate('Any-Latin; Latin-ASCII', $account); Но не совсем поняла назначения функции... 't́e̸͢s̶̢t͟͜♣ a l e x ♣аваа' преобразует в 'test♣ a l e x ♣avaa'. Если добавить Any-Cyrillic, то весь текст транслитирируется в русский. Если я такую строку впоследствии буду использовать для сортировки, то русские ники потеряют правильный порядок сортировки. Хотя очистка от zalgo - это хорошо, хотя бы для сортировок. Вот что я умудрилась написать для очистки от zalgo: PHP: $symb_array = str_split($account); $symb_array = array_map(function($symb){return bin2hex($symb);}, $symb_array); $len = count($symb_array); for ($i = 0; $i < $len; $i++){ if ($symb_array[$i] === 'cc' || $symb_array[$i] === 'cd' || $symb_array[$i] === 'd2'){ unset($symb_array[$i]); if (isset ($symb_array[++$i])){ unset($symb_array[$i]); } } } $account = hex2bin(implode($symb_array)); Но слишком много работы для многоразовой работы. Это разве что в бд при регистрации закинуть очищенный ник для сортировки. Или рубить такое безобразие на корню. Просто юникод смайлики - фиг бы с ними. Для проверки на zalgo такой вариант, вроде работает, в отличии от предыдущего: PHP: $symb_array = str_split($account); $symb_array = array_map(function($symb){return bin2hex($symb);}, $symb_array); if (in_array('cc', $symb_array) || in_array('cd', $symb_array) || in_array('d2', $symb_array)){...}
Кошка пытается правильно запрограммировать человеков, чтобы те и кормили и гладили когда надо и играли почаще.
Секрет в том, чтобы отвечать только в темах мужа, желательно по теме и с полезной информацией. Это дает почти гарантированный лайк от мужа.
Поясните глупенькому - как эта штука ловит вот эти злобыне символы? Код (Text): if($symb_array[$i]==='cc'||$symb_array[$i]==='cd'||$symb_array[$i]==='d2') Т.е. я вот эта японская хрень обязательно начинается с префикса 'cc','cd','d2'? И правильно понимаю что это два байта - по этому и - Код (Text): if (isset ($symb_array[++$i])){ unset($symb_array[$i]); }
Нет Там bin2hex спрятан. Вы скрипт запустите, вардампы расставьте и прощупайте, как оно работает. Внутренний компилятор, конечно, развивать нужно, но это не сравнится с собственным опытом препарирования чужих скриптов. Понимаю, что лень, зато тайное может стать явным, да и вдруг багу найдете. Для большего понимания немного теории - залго содержит знаки, которые можно ставить над символом, под и на символ. Но недостаточно просто поставить букву и эту надбуквенную черточку (или запятую или еще какую хрень), нужно поставить букву, которую нужно засрать, потом символ-указатель, куда пихать следующую хрень (верх низ или прямо на), а потом уже саму хрень. Эти штуки можно стакать, например: буква, вверх, хрень, вверх, другая хрень, вверх, хрень, вниз, третья хрень. Итого оно идет парами. Каждое занимает один символ, но символы вверх, вниз и на нельзя просто добавить в сравнение - это спецсимволы. Поэтому я, в поисках как бы все это разобрать на читабельные составляющие, решила преобразовать в хекс, потом глазками нашла коды паразитов и пихнула их в условия. Это конструкция одновременно удаляет следующий символ за спецсимволом символ (надо ведь пару удалить, а не один) и увеличивает i на единицу. Такие конструкции обычно новичкам непонятны и именно поэтому я это использовала здесь (мухаха). Тут нужно понимать, чем i++ отличается от ++i. И что выйдет вот из этого: Код (Text): $i = 3; $a = 8 + $i++; $b = 3 + ++i; var_dump($a); var_dump($b); var_dump($i); ps. На самом деле я использовала ++i не ради издевательства, а потому что все таки проще встретить это в небольшом коде и рядом с человеком, который может хоть как-то что-то прояснить, чем в большом коде, автор которого давно уехал в Австралию и удалил все контакты с прошлыми работодателями.
Вот не лень людям себе проблемы выдумывать-то... Загоны ппц. А потом оказывается, что "Fell-x27" не валидный ник. Надо Fell_x27. А где-то Fellx27. А где-то минимальная длина логина больше, и надо Fellx277 и так далее. ДОКОЛЕ? Накой такая тирания? Ну хочет себе человек ник дурацкий, ну дай ему, что хочет. Ну сделал он себе ник с потекшими символами, ну и хрен с ним. Будут жалобы от участников - прими меры, не будут - значит хорошо все.
Ну я очистку для разминки перед рабочим днем сваяла и для красивой сортировки по никам. Хотя у меня есть пол вагона сомнений по поводу своего кода, но решать их пока лень. На счет разрешать все в нике, мне вот стало интересно, если в конце ника оставить этот спецсимвол, то следующий символ не испортится? Например <span>my_nick<?=hex2bin('cc')?></span> отобразится как надо? Есть ли символы, которые будучи выведены на экран, способны так или иначе сломать нижеследующую html разметку и текст?
Я бы еще добавил. Ну хочет человек изменить ник ну дайте ему такую возможность. Ну не будте вы какими то модерами с форума пихапи)
Ну хочет человек сайт взломать - ну дайте ему такую возможность. А когда уже будут жалобы на то, что все упало - тогда и будем меры принимать