|
|
|
| В общем ситуация такая у меня на форуме много похожих тем от ламеров:
"помогите", "help", "напомощь". И от спамеров "продаём", "пластиковые окна"....
Ладно спамеры с ними справимся) машины как не как... а вот русские люди порожают своей находчивостью, и когда видят сообщение форума "тема 'помогите' уже была. пользуйтесь поиском". и нет что вы думайте они идут в поиск? как бы не так. они меняют букву кирилицы "o" цифрой "0" или английской буквой!!!!!! ёлы палы русские люди)))
Ладно теперь решил написать скрипт-экстрасенс, который автоматически заменить цифру 0 и англ букву o на советскую... Но не знаю с чего даже начать. ладно с кодом справлюсь. а вот алгоритм в голову вообще не приходит не какой... у кого какие мысли как это сделать? нужно же как то узнать что слово русское. и именно в нём замену сделать. плюс регулярки тут чувствуются. что отнимают и без того маленькие серверные ресурсы. В общем такие дела..
ЗЫ красочно написал) вечером муза приходит) | |
|
|
|
|
|
|
|
для: tricket
(02.08.2007 в 00:01)
| | такое уже реализовано в книге "Головоломки на PHP для хакера" :) | |
|
|
|
|
|
|
|
для: Disable
(02.08.2007 в 00:32)
| | Какая статья? Чот не видел! | |
|
|
|
|
|
|
|
|
для: Disable
(02.08.2007 в 00:32)
| | ну как я вижу ести тексты не очень больше попробуйте занести все слова в массив а потом сверять тип если число не трогаем если строка то меняем. | |
|
|
|
|
|
|
|
для: tricket
(02.08.2007 в 00:01)
| | Думаю, что реализация не такая и сложная.
1. Вначале создаёшь монолит текста. (удаляешь все ! @ # $ % ^ & и т.д.)
str_replace("!","",$str);
|
2. Приводишь весь текст к нижнему регистру.
3. Заменяешь все английские буквы на русские, на которые они похожи.
т.е. w на ш и т.д.
4. Ищешь на совпадение недопустимым словам
if(stristr($str,"памагите")){пошли все нафиг}
|
| |
|
|
|
|
|
|
|
для: futurer
(02.08.2007 в 01:16)
| | Если Вы привели текст к нижнему регистру, то использовать stristr() излишне.
По теме: думаю, лучше переименовывать темы, предупреждать и в крайнем случае банить. С учетом того, что Вы это внесли в правила, конечно. А искать техническое решение я бы не стал. Если не получилось "помогите", он найдет такое название, которое пройдет. | |
|
|
|
|
|
|
|
для: Unkind
(02.08.2007 в 02:09)
| | Действительно) Можно же просто дописать символ в конце слова ПОМОГИТЕ)) например "ПомогитеНах :)" Тоже думаю, что это бесполезно. | |
|
|
|
|
|
|
|
для: tricket
(02.08.2007 в 00:01)
| | можно пользоватся фуекцией симилар_текст и в зависимости от процента схожести выдавать предупреждение... но это все фигня... на форуме темы - не файлы и одинаковые названия имеют место быть.... | |
|
|
|
|
|
|
|
для: deman-b
(02.08.2007 в 02:31)
| | а если форум посещают дебилы - то для них можно не пожелеть места на странице добавления топика и поместить обЪявление: Пжалуфста называйте темы грамотно! отражая в ее названиии ее суть или чтонь-ть вроде того =)) | |
|
|
|
|
|
|
|
для: deman-b
(02.08.2007 в 02:39)
| | такое 100% не поможет, примеров масса :)
2Proger->
статья ||.7.8 Защита имени пользователя от подделки. | |
|
|
|
|
|
|
|
для: tricket
(02.08.2007 в 00:01)
| | Можно отталкиваться от скрипта вида - адаптировав его под свои цели...
<?php
// Массив русских букв
$rus = array("А", "а", "В", "Е", "е", "К", "М", "Н", "О", "о", "Р",
"р", "С", "с", "Т", "Х", "х", "о");
// Массив латинских букв
$eng = array("A", "a", "B", "E", "e", "K", "M", "H", "O", "o", "P",
"p", "C", "c", "T", "X", "x", "0");
// Заменяем латинские буквы русскими
$text = str_replace($eng, $rus, $text);
// Далее проверка
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.08.2007 в 09:52)
| | хм а книжка интересная наверное - "Головоломки на PHP для хакера"
жаль что название дали такое... надо обязательно купить! в общем тут http://www.softtime.ru/security/code.zip. нашёл кое-что
<?php
// Выясняем, не создаётся ли новое имя для дискредитации
// Возможны три ситуации, которые необходимо предотвратить:
// 1. Вводится имя, полностью совпадающее с уже существующим
// 2. Вводится уже существующий русское имя, в котором
// одна или несколько букв заменены на английские
// 3. Вводится уже существующий английское имя, в котором
// одна или несколько букв заменены на русские
// Массив русских букв
$rus = array("А", "а", "В", "Е", "е", "К", "М", "Н", "О", "о", "Р",
"р", "С", "с", "Т", "Х", "х");
// Массив английских букв
$eng = array("A", "a", "B", "E", "e", "K", "M", "H", "O", "o", "P",
"p", "C", "c", "T", "X", "x");
// Заменяем русские буквы английскими
$eng_author = str_replace($rus, $eng, $author);
// Заменяем английские буквы русскими
$rus_author = str_replace($eng, $rus, $author);
// Формируем SQL-запрос
$query = "SELECT * FROM authors
WHERE name LIKE '$author' OR
name LIKE '$eng_author' OR
name LIKE '$rus_author'";
$ath = mysql_query($query);
if(!$ath) exit("Ошибка при регистрации нового посетителя");
// Если выборка содержит хотя бы одну запись - прекращаем
// регистрацию нового посетителя
if(mysql_num_rows($ath)>0) exit("К сожалению, данное имя уже
зарегистрировано.
Попробуйте другое.");
// Код регистрации нового посетителя...
?>
|
но! их способ не очень... это будет мускула нагружать сильно... | |
|
|
|
|
|
|
|
для: tricket
(02.08.2007 в 12:26)
| | Авторы зачастую не властны над называнием - это прерогатива отдела маркетинга.
>это будет мускула нагружать сильно...
Речь идёт об регистрации, которая осуществляется не очень часто - в остальных случаях сравнение будет производиться с таблицей с не очень большим количеством исключений - поэтому нагрузка будет минимальна. | |
|
|
|
|
|
|
|
для: cheops
(02.08.2007 в 23:59)
| | Можно еще попробовать применить similar_text()
int similar_text ( string first, string second [, float &percent] )
This calculates the similarity between two strings as described in Oliver [1993]. Note that this implementation does not use a stack as in Oliver's pseudo code, but recursive calls which may or may not speed up the whole process. Note also that the complexity of this algorithm is O(N**3) where N is the length of the longest string.
By passing a reference as third argument, similar_text() will calculate the similarity in percent for you. It returns the number of matching chars in both strings. | |
|
|
|
|
|
|
|
для: Prihod
(03.08.2007 в 10:42)
| | xxx: чувак у нас на теологии учится, делает ребятам выпускные работы по 3к, единственная проблема - прога "антиплагиат", она имеет свою базу данных, и если хотяб 30% работы совпадает с работами сданными раньше - работа не сдана...
yyy: и как он её обходит ?)
xxx: тупо в ворде меняет русские "о" и "е" на английские, тото преподы удивляются, когда есть что-то знакомое, а прога показывает что работа написана с чистого листа =)
-------
Статья:
http://bash.org.ru/quote/390941 | |
|
|
|
|
|
|
|
для: Disable
(03.08.2007 в 12:06)
| | =)) прикольно... а еслт тема будет "Помогите, BBcode не работает..." он и в англ. словах все заменит... какой смысл? потом еще труднее будет работать... о поиске тем, вообще можно будет забыть...
лучше сделай модераторскую и набери модераторов... | |
|
|
|