ewg777
Мой дом здесь!
- Регистрация
- 6 Авг 2007
- Сообщения
- 764
- Реакции
- 334
- Автор темы
- #1
Защищаемся от спам-комментариев
В последнее время заметил, что приходят комментарии выстроеные следующим образом: пишут текст (например, "Спасибо!"), делают к каждой букве ссылку на разные сайты и меняют цвет на белый (цвет фона), потом выравнивают по правому краю и этот текст становится фактически не отображаемым.
Как же с этим бороться?
А очень просто! Сейчас мы сделаем так, чтоб ссылки попадали в noindex и nofollow (кроме ссылок с под/домена сайта).
Открываем "/engine/modules/addcomments.php" и ищем:
После этого вставляем:
Возможно, в новых версиях что-то подобное уже проделано.
По материалу сайта 4dle.ru
В последнее время заметил, что приходят комментарии выстроеные следующим образом: пишут текст (например, "Спасибо!"), делают к каждой букве ссылку на разные сайты и меняют цвет на белый (цвет фона), потом выравнивают по правому краю и этот текст становится фактически не отображаемым.
Как же с этим бороться?
А очень просто! Сейчас мы сделаем так, чтоб ссылки попадали в noindex и nofollow (кроме ссылок с под/домена сайта).
Открываем "/engine/modules/addcomments.php" и ищем:
PHP:
if ($config['allow_comments_wysiwyg'] != "yes")
$comments = $db->safesql($parse->BB_Parse($parse->process($_POST['comments']), false));
else{
$parse->wysiwyg = true;
$parse->ParseFilter(Array('div', 'a', 'span', 'p', 'br'), Array(), 0, 1);
$comments = $db->safesql($parse->BB_Parse($parse->process($_POST['comments'])));
}
$comments = word_filter($comments);
После этого вставляем:
PHP:
function preg_link($a1, $a2, $a3) {
global $is_logged, $config;
$a1 = str_replace(array('"', "'"), '', $a1);
$a2 = stripslashes(trim($a2));
$a2 = ($a2 != '') ? ' ' . $a2 : '';
/*########
Небольшая фича: если хотите, чтоб ссылки от зарегистрированных пользователей не попадали под ноуиндекс и ноуфоллоу, то стерите начальный комментарий "//#", но текст после их не трогайте!
########*/
//# if (!$is_logged) {
$home = str_replace(array('http://', 'www.'), '', $config['http_home_url']);
$home = substr($home, 0, strpos($home, '/'));
if (stristr($a1, $home) === false) {
return '<noindex><a href="' . $a1 . '"' . $a2 . ' rel="nofollow">' . $a3 . '</a></noindex>';
} else {
return '<a href="' . $a1 . '"' . $a2 . '>' . $a3 . '</a>';
}
//# } else {
//# return '<a href="' . $a1 . '"' . $a2 . '>' . $a3 . '</a>';
//# }
}
function clear_hrefs($string) {
return preg_replace('#<a.*href="(.*)"([^>]*)>(.*)</a>#iUes', "preg_link('$1', '$2', '$3')", stripslashes($string));
}
$comments = addslashes(clear_hrefs($comments));
Возможно, в новых версиях что-то подобное уже проделано.
По материалу сайта 4dle.ru