Делаем сайты для людей

Предотвращаем спам в комментариях в RUNCMS 2.2

Можете считать меня параноиком, но не люблю я когда без моего ведома любой может поставить свою ссылку. Раньше это просто делалось из-за любви к другому ресурсу, теперь скорее из-за любви к баблу :)

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

В комментах 3 места где может появится левая ссылка

1. Тело комментария.

2. Иконка www под комментарием.

3. Подпись юзера. 

Делаем файлик redirect.php в корне сайта с таким содержимым
 

<? 
foreach ($_GET as $url=>$a) { 
$url = str_replace('http://','',$url); 
$url = str_replace('_','.',$url); 

header("Location: http://$url"); 
echo "<html><head><meta http-equiv='Refresh' content='0; URL=http://$url'></meta></head><body></body></html>"; 
print $url; 
break; 
} 
?>

 

Далее лезем в файл www\class\rcxcomments.php и кромсаем по списку

Находим строки

  if ($poster->getVar("url") != "") {
    $www_image = "<a href='".$poster->getVar("url")."'><img src='".RCX_URL."/images/icons/www.gif' alt='"._VISITWEBSITE."' target='_blank'        /></a>";
  }

 

Меняем на
 

  if ($poster->getVar("url") != "") {
$str = base64_encode($poster->getVar("url"));

$www_image = "<a href='/redirect.php?".$str."' target='_blank'       /><img src='".RCX_URL."/images/icons/www.gif' alt='"._VISITWEBSITE."'></a>";
  }

 

Находим строки

 $subject = $this->getVar("subject");
  $comment = $this->getVar("comment");

  if ( ($poster->getVar("attachsig") == 1) && ($poster->getVar("user_sig") != "") ) {
    $comment .= "--";
    $comment .= $myts->makeTareaData4Show($poster->getVar("user_sig", "N"), 0, 1, 1);
  }

  $username = 'getVar("uid").'">'.$poster->getVar("uname").'';
  showThread($color_num, $subject_image, $subject, $comment, $post_date, $ip_image, $reply_image, $edit_image, $delete_image, $username, 
$rank['title'], $rank['image'], $avatar_image, $reg_date, 
$posts, $user_from, $online_image, $profile_image, $pm_image, $email_image, $www_image, $icq_image, $aim_image, $yim_image, $msnm_image);
  } else {
    $subject = $this->getVar("subject");
    $comment = $this->getVar("comment");
    showThread($color_num, $subject_image, $subject, $comment, $post_date, $ip_image, $reply_image, $edit_image, $delete_image, $rcxConfig['anonymous']);

Меняем на

$subject = $this->getVar("subject");
$comment = $this->getVar("comment");

$rcx_url_arr = parse_url(RCX_URL); 
$comment = preg_replace('#hrefs*=s*('|")http://(?!' . preg_quote($rcx_url_arr['host']) . ')([^"']*)('|")#iUse', "'href="/redirect.php?'.base64_encode('http://$2').'"'", 

$comment);


  if ( ($poster->getVar("attachsig") == 1) && ($poster->getVar("user_sig") != "") ) {
    $comment .= "

<hr style=""border-style:" border-width:="" size=""0,5""            />
";
$comment .= $myts->makeTareaData4Show($poster->getVar("user_sig", "N"), 0, 0, 0);
    

  }

  $username = 'getVar("uid").'">'.$poster->getVar("uname").'';
  showThread($color_num, $subject_image, $subject, $comment, $post_date, $ip_image, $reply_image, $edit_image, $delete_image, $username, $rank['title'], $rank['image'], 

$avatar_image, $reg_date, $posts, $user_from, $online_image, 
$profile_image, $pm_image, $email_image, $www_image, $icq_image, $aim_image, $yim_image, $msnm_image);
  } else {
$subject = $this->getVar("subject");
$comment = $this->getVar("comment");

$rcx_url_arr = parse_url(RCX_URL); 
$comment = preg_replace('#hrefs*=s*('|")http://(?!' . preg_quote($rcx_url_arr['host']) . ')([^"']*)('|")#iUse', "'href="/redirect.php?'.base64_encode('http://$2').'"'", 

$comment);

    showThread($color_num, $subject_image, $subject, $comment, $post_date, $ip_image, $reply_image, $edit_image, $delete_image, $rcxConfig['anonymous']);

 

Все сохраняем и в файле robots.txt делаем запись

Disallow: /redirect.php

P.S. Как вы видите, я не использую встроенные комментарии RUNCMS, это платный (7 баксов) скрипт, покупать тут yourcommentit.ru

 

Рубрика: Эксперименты с RUNCMS

26.09.2010


Vinni 2011-01-24
Спасибо за предложение. С фтп проблематично,т.к.у меня привязка к ip.

[Ответить] [Ответить с цитатой]
Vinni 2011-01-23
Вроде все сделал правильно, но не работает(
Более того, перестает работать сайт-пропадают центральные блоки и правые

[Ответить] [Ответить с цитатой]
pan 2011-01-24
rcx то заменяешь на xoops ?

[Ответить] [Ответить с цитатой]
Vinni 2011-01-24
rcx то заменяешь на xoops ?

да, конечно

[Ответить] [Ответить с цитатой]
pan 2011-01-24
Пиши на форуме в личку с данными фтп, покопаюсь.
Я просто на 1.4 не ставил, а тут на двойке сайт делаю, вот и понадобилось :)

[Ответить] [Ответить с цитатой]
Vinni 2011-01-24
rcx то заменяешь на xoops ?

менял

[Ответить] [Ответить с цитатой]
Vinni 2011-01-22
Спасибо за статью.
А для более ранних версий подойдет? типа 1.4?

[Ответить] [Ответить с цитатой]
pan 2011-01-23
Это для любой версии подойдет, в принципе все строки примерно одинаковы.

[Ответить] [Ответить с цитатой]

Страницы: 1

RSS
Оставить комментарий
Ваше имя: *
Ваша почта:

Комментарий: *

Введите символы: *
captcha
Обновить


Разделы блога

Рекомендую для заработка

Финансы

Место для сайта


Самые читаемые посты

- Генерация страницы: 0.379304 секунд | 20 Запросов | 60 Файлов: 364.85 КБ | HTML: 26.87 КБ -