Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)

Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.

Борьба со спамом. Хаки и трюки WordPress

Больше
10 года 6 мес. назад - 10 года 6 мес. назад #1 от serge
Несколько примеров крайне полезных в борьбе со спамом на WordPress кодов, хаков и трюков. Все нижеперечисленное, кроме последнего примера, относится к редактуре файла functions.php.


Автомаркируем как спам комментарии, содержащие длинный url. Попросту вставьте данный код в ваш functions.php. Длина url (50 знаков) может быть изменена в строчке кода:

Code:
<?php function rkv_url_spamcheck( $approved , $commentdata ) { return ( strlen( $commentdata['comment_author_url'] ) > 50 ) ? 'spam' : $approved; } add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 ); ?>


Идем далее. Возможно, вы посчитаете необходимым попросту удалить поле url из формы добавления комментариев? Это очень несложно: добавьте в ваш functions.php этот код:

Code:
function remove_comment_fields($fields) { unset($fields['url']); return $fields; } add_filter('comment_form_default_fields','remove_comment_fields');


Теперь - попытаемся объединить первое и второе. Удалим поле url и в дальнейшем будем маркировать как спам любую попытку вставки url в комментах! Все то же самое, редактируем functions.php :

Code:
function remove_comment_fields($fields) { unset($fields['url']); return $fields; } add_filter('comment_form_default_fields','remove_comment_fields'); <?php function rkv_url_spamcheck( $approved , $commentdata ) { return ( strlen( $commentdata['comment_author_url'] ) > 1 ) ? 'spam' : $approved; } add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 ); ?>


Разрываем ссылку в тексте комментария:

Code:
remove_filter('comment_text', 'make_clickable', 9);


Если описанные выше мероприятия представляются вам чересчур суровыми - вы можете просто добавить тег nofollow (начиная с 2011 года Яндекс понимает nofollow) к ссылкам, ничего при этом внешне не меняя. Старый трюк:

Code:
add_filter('comment_text', 'auto_nofollow'); function auto_nofollow($content) { //return stripslashes(wp_rel_nofollow($content)); return preg_replace_callback('/<a>]+/', 'auto_nofollow_callback', $content); } function auto_nofollow_callback($matches) { $link = $matches[0]; $site_link = get_bloginfo('url'); if (strpos($link, 'rel') === false) { $link = preg_replace("%(href=S(?!$site_link))%i", 'rel="nofollow" $1', $link); } elseif (preg_match("%href=S(?!$site_link)%i", $link)) { $link = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $link); } return $link; }



Автомаркировка as spam комментариев на основе списка слов:

Code:
function in_comment_post_like($string, $array) { foreach($array as $ref) { if(strstr($string, $ref)) { return true; } } return false; } function drop_bad_comments() { if (!empty($_POST['comment'])) { $post_comment_content = $_POST['comment']; $lower_case_comment = strtolower($_POST['comment']); $bad_comment_content = array( 'viagra', 'hydrocodone', 'hair loss', '[url=http', '[link=http', 'xanax', 'tramadol', 'russian girls', 'amoxicillin' ); if (in_comment_post_like($lower_case_comment, $bad_comment_content)) { $comment_box_text = wordwrap(trim($post_comment_content), 80, "\n ", true); $txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a'); fwrite($txtdrop, " --------------\n [COMMENT] = " . $post_comment_content . "\n --------------\n"); fwrite($txtdrop, " [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "\n"); fwrite($txtdrop, " [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "\n"); fwrite($txtdrop, " [REFERER ] = " . $_SERVER['HTTP_REFERER'] . "\n"); fwrite($txtdrop, " [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "\n"); fwrite($txtdrop, '--------------**********------------------'."\n"); header("HTTP/1.1 406 Not Acceptable"); header("Status: 406 Not Acceptable"); header("Connection: Close"); wp_die( __('bang bang.') ); } } } add_action('init', 'drop_bad_comments');


И напоследок - весьма полезное правило, реализующее запрет всех запросов, берущих начало не из вашего домена. Крайне неприятная штуковина для спам-ботов. Разместите в вашем htaccess следующие строчки:

Code:
# block comment spam by denying access to no-referrer requests RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*catswhocode.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule ^(.*)$ ^http://the-site-where-you-want-to-send-spammers.com/$ [R=301,L]

Надеюсь, вам это поможет. :)

А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 10 года 6 мес. назад пользователем serge.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 1
Работает на Kunena форум