Антиспам для комментариев на uCoz

Антиспам для комментариев на uCoz

02016-02-2842995Денис Абдуллин

Предлагаем вам решение, которое избавит ваш сайт от ссылочного спама на сайте в системе uCoz. Вернее, два решения. Одно – мягкое, всего лишь не позволяет дописать ссылку, а второе – жесткое, просто скрывает текст комментария, в котором имеется ссылка.

Есть и такой метод, как ввод кода безопасности. Более действенен, кстати, тот вариант кода, в котором необходимо подсчитать сумму или разность чисел. А можно вовсе закрыть комментарии от гостей, именно так я и поступил.

Ну, а если это не вариант, то можно воспользоваться скриптом. Как было написано выше, их здесь два. Один поможет избавиться от тех недоброжелателей, которые набирают свой спам вручную, но от тех, кто пользуется какими-то специальными программами для рассылки комментариев, не спасет. Я же предлагаю свое решение, которое полностью скрывает текст комментария при наличии ссылки. Этот способ плох тем, что при наличии любого вида ссылки сообщение скроется, т.е. даже при наличии просто смайликов.

Установка

При написании. Данный код будет автоматически исправлять текст сообщения при его вводе.

Управление дизайном » Комментарии » Форма добавления комментариев. Ниже вставить:

Код
<script type="text/javascript">  
$(function(){$('#message').keyup(function(){  
  strpsr=$(this).val().toLowerCase(),spout='http://,.ru,.com,.net,.ua,.ucoz,www,.tv,.tk,.info,.su,//'.split(',');  
  for(srchr=0;srchr<spout.length;srchr++){if(strpsr.search(spout[srchr])!= -1){$(this).val(strpsr.replace(spout[srchr],'...'));  
return true;}}});});  
</script>

Постфактум. Следующий вариант системно скроет уже написанный текст сообщения при наличии ссылки.

В виде комментариев замените $MESSAGE$ на:

Код
<?if(strpos($MESSAGE$,'http://')!='-1' || strpos($MESSAGE$,'www')!='-1' || strpos($MESSAGE$,'.ru')!='-1' || strpos($MESSAGE$,'.com')!='-1' || strpos($MESSAGE$,'.net')!='-1' || strpos($MESSAGE$,'.ucoz')!='-1' || strpos($MESSAGE$,'.ua')!='-1' || strpos($MESSAGE$,'.рф')!='-1' || strpos($MESSAGE$,'.tk')!='-1' || strpos($MESSAGE$,'.info')!='-1' || strpos($MESSAGE$,'.su')!='-1' || strpos($MESSAGE$,'.tv')!='-1')?>Комментарий удален.<?else?>$MESSAGE$<?endif?>

Этот код в свою очередь можно переделать так, чтобы сообщение скрывалось полностью. Да и проблема со смайлами решаема, ведь можно проверять наличие в тексте кода img.


Создать сайт в uKit Нужен классный сайт для бизнеса?
Воспользуйтесь сервисом uKit. Никакого кода!
Комментарии (5)
NoNaMe 2016-03-16 в 00:40 / МатериалСпам
Если поможете с реализацией подобного рода обрезки комментария, то буду Вам безмерно благодарен, т.к. это перестанет ломать дизайн.
0
Денис Абдуллин 2016-03-01 в 20:06 / Материал
Сделайте, чтобы код обрезался до символа "<" при его наличии. Это возможно.
0
Cry Deil 2016-03-01 в 19:19 / МатериалСпам
ещё одна причина использовать emoji jquery !
0
NoNaMe 2016-03-01 в 11:30 / МатериалСпам
Вот бы сделать так, что бы в комментариях смайлы были, а в информеры не передавались. А то если стоит обрыв комментариев по количеству символов и в код информера добавляется половина <img... то все ломается... ((((
-3
Макс Власов 2016-07-30 в 07:36 / МатериалСпам
И ничего трудного. В шаблоне информера замените
Код
$MESSAGE$

на
Код
<?if(strpos($MESSAGE$,'<')!=-1)?><?substr($MESSAGE$,0,strpos($MESSAGE$,'<'))?><?else?>$MESSAGE$<?endif?>
1
Чтобы оставить комментарий или отзыв под этой публикацией, войдите или зарегистрируйтесь.