В сегодняшней статье я расскажу, как защитить свой сайт от спамеров. Правда речь пойдет больше о самописном сайте, т.к. я не знаю способа внедрить свой код в какую-либо CMS. И так, поехали.
Код защиты от спамеров:
$i = 0;
$fp = fopen("stopwords.txt", "r");
if($fp)
{
while (!feof($fp))
{
$stopword = fgets($fp, 10000);
$pos = strpos(strtolower($text), strtolower(trim($stopword)));
if ($pos !== false)
$i++;
}
}
if($i>0)
{
exit('вы нарушили правила добавления комментариев');
}
А теперь давайте в кратце разберем его (только то, что необходимо знать)
stopwords.txt - это файл, в котором записаны стоп-слова каждый с новой строчки (регистр не важен). Тут могут быть совершенно любые слова, включая маты и код ссылок. Вот очень краткий список моего файла:
- </a>
- [url
- **й
- ***да
- ну и другие любые слова
А вообще лучше исправлять защищаться о спамеров на берегу моря в Таиланде:)
$text - в этой переменной хранится текст вашего комментария. Именно с ним в нем мы будем искать стоп-слова
exit('вы нарушили правила добавления комментариев'); - эта функция (а точнее не функция, но не важно) завершает загрузку страницы, если стоп-слова есть в комментарии. Тут вы можете придумать что-нибудь свое, как вариант просто не добавлять его в базу и вывести обычное сообщение с ошибкой.
Вот и все, ничего сложного. Зато позволит избежать на вашем сайте матов, ругательств, а так же ссылок в комментариях. Только http:// не надо в стоп-слова заносить, т.к. некоторые юзеры могут захотеть поделиться полезной ссылкой, а не смогут. Просто не делайте ее активной и все.
А самое хорошее, что никаких каптч нет на сайте, а это только способствует увеличению комментариев.