Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Посчитать сколько раз находиться слово


Автор: Blaga 3.10.2007, 09:42
Недавно на форуме появилась проблема - спаммеры. Чтобы от них избавиться решил поставить простой фильтр на ява скрипт.
Суть скрипта - искать сколько раз в тексте всречаеться слово http:// 
Как это слово найти я понял. 
Код

document.post.message.value.indexOf("http://") != -1

а вот как посчитать сколько раз оно встречаеться не вкурил. Вообще если кому интересно то результат мне нужно скрестить со стандартной функцией phpBB
Код

function checkForm() {

    formErrors = false;

    

    if (document.post.message.value.length < 2 ) {
        formErrors = "Вы должны ввести текст сообщения";
    }

    if (formErrors) {
        alert(formErrors);
        return false;
    } else {
        bbstyle(-1);
        //formObj.preview.disabled = true;
        //formObj.submit.disabled = true;
        return true;
    }
}

Заранее спасибо всем кто откликнется.
з.ы. гугл результата не дал. (

Автор: cruelangel 3.10.2007, 09:55
так ты от них не избавишься.

Автор: dsCode 3.10.2007, 10:33
Blaga, да, действительно, так от них не избавиться. Самый приемлемый способ на сегодня, это картинки для ввода кода (причем, сгенерированные не скриптом - такие любой хороший бот распознает, а самодельные, например "нарисовано (именно нарисованно, а не написано шрифтом) 2 + 3 = " - юзер должен ввести 5. Ну и т.д. У меня на сайте так сделано. Спама нет абсолютно. (В плане ботов, ну ручной спам не считается - для него модеры есть)). Или же вопросы-загадки. Как и для картинок, так и для загадок - хранится правильный ответ(ы). При отправке формы - проверяется заполненность этого поля и равенство правильному ответу.

Автор: Astraller 3.10.2007, 10:38
Есть еще забавное решение - И картинка и input сажаются в dispay:none; и если поле таки заполнено - гарантированно бот ;)

Автор: Pokoinik 3.10.2007, 10:43
dsCode, если сайт популярный можно прикольную фичу замутить...
вместо обычных картиночек взять скан какой-нить книги...
так логинящиеся юзеры еще и полезную работу делать будут, книгу набирать...

Добавлено через 1 минуту и 53 секунды
Astraller, на если хозяин бота пронюхает, то спама будет много... smile 

Автор: Blaga 3.10.2007, 10:53
это не боты а ручной спам. я знаю такие вещи как капча и прочее но мне нужно именно это решение. там люди сами постят. просто их доволно много каждый день человек по 5-10 это не критично но очень неприятно.

Так есть что нибудь по теме?

Автор: dsCode 3.10.2007, 11:38
Pokoinik, 
Цитата(Pokoinik @  3.10.2007,  10:43 Найти цитируемый пост)
так логинящиеся юзеры еще и полезную работу делать будут, книгу набирать...

ага =) приятное с полезным )


Blaga, 
Цитата(Blaga @  3.10.2007,  10:53 Найти цитируемый пост)
это не боты а ручной спам

в любом случае - изображения с кодом - обязательно (пригодится, когда придет армия ботов). Ну а если ручной спам, тогда я понял, что Вы пытаетесь отловить, что юзер введет какую-нибудь ссылку более одного раза. Ну тут не в количестве слов дело (хотя и его получить не турдно), можно просто проверить:

Код

<script type="text/javascript">
var str = 'test http:// testss http:// ';
if (str.indexOf('http://') !== str.lastIndexOf('http://')) {
  alert([str.indexOf('http://'), str.lastIndexOf('http://')]);
}
</script>


Но это не спасет. Что мне мешает написать ссылку без "http://"? ввв.netlover.promodj.ru. Что мне мешает ввести ссылку (20 ссылок) не в поле для указания сайта, а в ФИО, Интересы и т.д.

Автор: AKS 3.10.2007, 11:47
Цитата(Blaga @  3.10.2007,  10:53 Найти цитируемый пост)
Так есть что нибудь по теме? 

"Попытайте счастья" как-нибудь так:
Код

var n = (document.post.message
                 .value.match(/https?:\u002F\u002F/g) || []).length;


Blaga, метод match возвращает массив совпадений с регвыром, а длина массива - это кол-во этих совпадений (регвыр с флагом g).

Автор: Blaga 3.10.2007, 11:48
спамерам нафиг не нужны ссылки которые не кликабельные. им нужно что бы был обязательно реферер. Если его нет то они просто так будут свою работу делать. Они это прекрасно понимают и им это нафиг не нужно.

Добавлено через 7 минут и 14 секунд
dsCode, и что мне это дает? Мне нужно знать именно сколько раз это слово встретилось... 
AKS, не понял ваш код. (
 smile 

Автор: dsCode 3.10.2007, 12:23
Blaga, 
Цитата(Blaga @  3.10.2007,  11:48 Найти цитируемый пост)
и что мне это дает? Мне нужно знать именно сколько раз это слово встретилось...

ну тогда AKS Вам все расписал - в переменной n будет храниться длина полученного после рекЭкспа выражения (если слово не встретилось ни разу - будет пустой массив и соотвественно, пустая длина). Вот и получите количество слов. 

Автор: SelenIT 3.10.2007, 12:38
Для коллекции - вариант менее универсальный, чем у AKSа (хотя вряд ли спамеры будут рекламировать https-ссылки), но, возможно, несколько более простой для восприятия:
Код

var n = document.post.message.value.split('http://').length - 1;

Хотя вариант с регулярками, ИМХО, гораздо предпочтительнее.

Автор: cruelangel 3.10.2007, 13:19
будет тот же спам, но все ссылки будут на разные подставные сайты.

Автор: SelenIT 3.10.2007, 13:25
cruelangel,  smile 

Автор: cruelangel 3.10.2007, 13:52
http://vingrad.ruhttp://www.wingrad.ruhttp://forum.vingrad.ruhttp://vingrad.ruhttp://forum.vingrad.ru/forum/http://vingrad.ru/forum

Автор: SelenIT 3.10.2007, 19:05
cruelangel, имхо, с включенным JS не прокатит, а с отключенным не понадобится smile 

Автор: fidres 3.10.2007, 19:48
на phpBB есть аддон неплохой к админке...
там просто в списке юзеров чекаешь все линки, которые вбивают юзеры при регистрации... если линк "подозрительный" - отмечаешь галкой этого "умника". понаотмечал скока влезло - и одним нажатием кнопки посылаешь их к праотцам...
правда это конечно ручной, рутинный труд...
но сколько удовольствия доставляет после долгих тяжёлых трудовых будней!.. ;)
а ваще, вариант с регулами - самый приемлемый.
правда, его бы ещё на предмет подстановочных символов бы приспособить...

Blaga, кстать! ты б осведомился у мужиков на форуме самого phpBB!
там-то народ более втянутый в эту тему. при удачном исходе - даж новый специализированный аддон поиметь запросто можно!
 smile 

Автор: Blaga 4.10.2007, 04:17
Спасибо всем кто откликнулся, сейчас пойду в институт, затем вернусь и буду шаманить. ))

fidres, банить людей мне не сложно я их просто сразу всех левых из БД удаляю. Просто спамеры сволочи достали уже.( А насчет форума мне как то Винград привычнее. )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)