✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Найкраще ефективне антиспамове виявлення коду PHP для WordPress

18

Блог WordPress може отримувати більше 100 спам-коментарів (створених спам-роботами) на день, що дратує.

Найкраще ефективне антиспамове виявлення коду PHP для Wordpress

wordpress-спам

Як правило, вони можуть бути отримані плагінами, такими як Akismet, однак ці дані все ще зберігаються в базі даних до того, як їх буде видалено вручну або після закінчення терміну дії.

LEONA пропонує розумне рішення для запобігання потраплянню спам-коментарів навіть у базу даних. Він заснований на розміщенні прихованого поля у формі та встановленні значення, коли користувач натискає клавішу (onkeyup). Отже, якщо значення не збігаються, ми вважаємо, що це не надіслано людиною.

wordpress надає фільтр preprocess_comment, тому ви можете перевірити коментарі та вийти зі сторінки за допомогою wp_die() раніше.

Офіційний API WP повідомляє (https://codex.wordpress.org/Plugin_API/Filter_Reference/preprocess_comment ), $commentdata містить таку інформацію:

'comment_post_ID'      - The post to which the comment will apply
   'comment_author'       - (may be empty)
   'comment_author_email' - (may be empty)
   'comment_author_url'   - (may be empty)
   'comment_content'      - The text of the proposed comment
   'comment_type'         - 'pingback', 'trackback', or empty for regular comments
   'user_ID'              - (empty if not logged in)

Потім ми можемо використовувати цей плагін, щоб дозволити pingback/trackback (що, на мою думку, корисно) і ефективно позбутися спам-коментарів.

$leonax_magic_lower = 328;
$leonax_magic_upper = 3450709;
 
function leonax_anti_spam_form($fields){
    global $leonax_magic_lower, $leonax_magic_upper;
    $leonax_magic = mt_rand($leonax_magic_lower, $leonax_magic_upper);
    $fields['leonax_magic'] = <<<EOT
        <input type="hidden" id="leonax-magic" name="leonax-magic" value="0">
        <script type="text/javascript">
          jQuery(function() {
            jQuery("#comment").on("keyup", function() {
              jQuery("#leonax-magic").val("$leonax_magic");
            });
          })
        </script>
EOT;
    return $fields;
}
 
add_filter('comment_form_default_fields', 'leonax_anti_spam_form');
 
function leonax_anit_spam_caught() {
  wp_die('<strong>ERROR</strong>: Looks like you are a spam bot. Please stop doing this.');
}
 
function leonax_anti_spam_check( $commentdata) {
  $comment_type = '';
  if (isset($commentdata['comment_type'])) {
    $comment_type = trim($commentdata['comment_type']);
  }   
  
 if (($comment_type == 'pingback') || ($comment_type == 'trackback')) {
    return $commentdata;
  }
  $content = '';
  if (isset($commentdata['comment_content'])) {
    $content = trim($commentdata['comment_content']);
  }   
  if (!strlen($content)) {
    leonax_anit_spam_caught();
  }
  
  if (preg_match("/[a-e0-9]{25,}/i", $content)) { // To capture the strange IDs
    leonax_anit_spam_caught();  
  }
 
  global $leonax_magic_lower, $leonax_magic_upper;  
  
  if (isset($commentdata['user_ID']) && $commentdata['user_ID']) { // Login-users are not bad
    return $commentdata;
  }
  
  if (!isset($_POST['leonax-magic'])) {
    leonax_anit_spam_caught();
  }
  $magic = intval($_POST['leonax-magic']);
  if ($magic < $leonax_magic_lower || $magic > $leonax_magic_upper) {
    leonax_anit_spam_caught();
  }
  return $commentdata;
}
 
add_filter( 'preprocess_comment', 'leonax_anti_spam_check' );

Якщо ми перевіримо функцію/фільтр, навмисно ввівши дивні ідентифікатори, ми отримаємо наступне (і коментар не буде введено в область очікування).

Примітка. Розмістіть наведений вище код у кінці шаблону functions.php (або дочірньої теми).

Найкраще ефективне антиспамове виявлення коду PHP для Wordpress

wordpress-спам-виявлення

Це працює як магія!

Джерело запису: helloacm.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі