function antispam_check_spam($arg = array()) { $options_key = 'plugin_antispam'; $options = mso_get_option($options_key, 'plugins', array()); // все опции if (!isset($options['antispam_on'])) { $options['antispam_on'] = false; } // включен ли антиспам if (!$options['antispam_on']) { return; } if (!isset($options['logging'])) { $options['logging'] = false; } // разрешено ли логирование? if (!isset($options['moderation_links'])) { $options['moderation_links'] = true; } // модерировать все ссылки if (!isset($options['logging_file'])) { $options['logging_file'] = ''; } // разрешено ли логирование? if (!isset($options['black_ip'])) { $options['black_ip'] = ''; } // черный список IP if (!isset($options['black_words'])) { $options['black_words'] = ''; } // черный список слов if (!isset($options['moderation_words'])) { $options['moderation_words'] = ''; } // список слов модерации $black_ip = explode("\n", trim($options['black_ip'])); if (in_array($arg['comments_author_ip'], $black_ip)) { if ($options['logging']) { antispam_log($options['logging_file'], 'BLACK_IP: ' . $arg['comments_author_ip'] . NR . 'PAGE_ID: ' . $arg['comments_page_id'] . NR . 'DATE: ' . $arg['comments_date'] . NR . 'CONTENT: ' . NR . $arg['comments_content']); } return array('check_spam' => true, 'message' => t('Для вашего IP комментирование запрещено!')); } $black_words = explode("\n", trim($options['black_words'])); foreach ($black_words as $word) { if ($word and mb_stristr($arg['comments_content'], $word, false, 'UTF-8') or $word and $arg['comments_author'] and mb_stristr($arg['comments_author'], $word, false, 'UTF-8')) { if ($options['logging']) { antispam_log($options['logging_file'], 'BLACK WORD: ' . $word . NR . 'IP: ' . $arg['comments_author_ip'] . NR . 'PAGE_ID: ' . $arg['comments_page_id'] . NR . 'DATE: ' . $arg['comments_date'] . NR . 'CONTENT: ' . NR . $arg['comments_content']); } return array('check_spam' => true, 'message' => t('Вы используете запрещенные слова!')); } } if ($options['moderation_links']) { // Если в комментарии хоть одна ссылка - сразу на модерацию $check_a = strpos($arg['comments_content'], '<a') === false ? false : true; if ($check_a) { return array('moderation' => 1); } // отправим на модерацию } $moderation_words = explode("\n", trim($options['moderation_words'])); foreach ($moderation_words as $word) { if ($word and mb_stristr($arg['comments_content'], $word, false, 'UTF-8')) { return array('moderation' => 1); } } }
function antispam_check_comment($commentdata) { global $antispam_settings; $rn = "\r\n"; // .chr(13).chr(10) extract($commentdata); $antispam_pre_error_message = '<p><strong><a href="javascript:window.history.back()">Go back</a></strong> and try again.</p>'; $antispam_error_message = ''; if ($antispam_settings['send_spam_comment_to_admin'] || $antispam_settings['log_spam_comment']) { // if sending email to admin is enabled or loging $post = get_post($comment->comment_post_ID); $antispam_message_spam_info = 'Spam for post: "' . $post->post_title . '"' . $rn; $antispam_message_spam_info .= get_permalink($comment->comment_post_ID) . $rn . $rn; $antispam_message_spam_info .= 'IP: ' . $_SERVER['REMOTE_ADDR'] . $rn; $antispam_message_spam_info .= 'User agent: ' . $_SERVER['HTTP_USER_AGENT'] . $rn; $antispam_message_spam_info .= 'Referer: ' . $_SERVER['HTTP_REFERER'] . $rn . $rn; $antispam_message_spam_info .= 'Comment data:' . $rn; // lets see what comment data spammers try to submit foreach ($commentdata as $key => $value) { $antispam_message_spam_info .= '$commentdata[' . $key . '] = ' . $value . $rn; } $antispam_message_spam_info .= $rn . $rn; $antispam_message_spam_info .= 'Post vars:' . $rn; // lets see what post vars spammers try to submit foreach ($_POST as $key => $value) { $antispam_message_spam_info .= '$_POST[' . $key . '] = ' . $value . $rn; } $antispam_message_spam_info .= $rn . $rn; $antispam_message_spam_info .= 'Cookie vars:' . $rn; // lets see what cookie vars spammers try to submit foreach ($_COOKIE as $key => $value) { $antispam_message_spam_info .= '$_COOKIE[' . $key . '] = ' . $value . $rn; } $antispam_message_spam_info .= $rn . $rn; $antispam_message_append = '-----------------------------' . $rn; $antispam_message_append .= 'This is spam comment rejected by Anti-spam plugin - wordpress.org/plugins/anti-spam/' . $rn; $antispam_message_append .= 'You may edit "anti-spam.php" file and disable this notification.' . $rn; $antispam_message_append .= 'You should find "$antispam_send_spam_comment_to_admin" and make it equal to "false".' . $rn; } if (!is_user_logged_in() && $comment_type != 'pingback' && $comment_type != 'trackback') { // logged in user is not a spammer $spam_flag = false; if (trim($_POST['antspm-q']) != date('Y')) { // year-answer is wrong - it is spam if (trim($_POST['antspm-d']) != date('Y')) { // extra js-only check: there is no js added input - it is spam $spam_flag = true; if (empty($_POST['antspm-q'])) { // empty answer - it is spam $antispam_error_message .= 'Error: empty answer. [' . esc_attr($_POST['antspm-q']) . ']<br> ' . $rn; } else { $antispam_error_message .= 'Error: answer is wrong. [' . esc_attr($_POST['antspm-q']) . ']<br> ' . $rn; } } } if (!empty($_POST['antspm-e-email-url-website'])) { // trap field is not empty - it is spam $spam_flag = true; $antispam_error_message .= 'Error: field should be empty. [' . esc_attr($_POST['antspm-e-email-url-website']) . ']<br> ' . $rn; } if ($spam_flag) { // it is spam $antispam_error_message .= '<strong>Comment was blocked because it is spam.</strong><br> '; if ($antispam_settings['send_spam_comment_to_admin']) { $antispam_subject = 'Spam comment on site [' . get_bloginfo('name') . ']'; // email subject $antispam_message = ''; $antispam_message .= $antispam_error_message . $rn . $rn; $antispam_message .= $antispam_message_spam_info; // spam comment, post, cookie and other data $antispam_message .= $antispam_message_append; @wp_mail($antispam_settings['admin_email'], $antispam_subject, $antispam_message); // send spam comment to admin email } if ($antispam_settings['log_spam_comment']) { $antispam_message = $rn . $rn . '========== ========== ==========' . $rn . $rn; $antispam_message .= $antispam_error_message . $rn . $rn; $antispam_message .= $antispam_message_spam_info; // spam comment, post, cookie and other data antispam_log($antispam_message); } antispam_counter_stats(); wp_die($antispam_pre_error_message . $antispam_error_message); // die - do not send comment and show errors } } if (!$antispam_settings['allow_trackbacks']) { // if trackbacks are blocked (pingbacks are alowed) if ($comment_type == 'trackback') { // if trackbacks ( || $comment_type == 'pingback') $antispam_error_message .= 'Error: trackbacks are disabled.<br> '; if ($antispam_settings['send_spam_comment_to_admin']) { // if sending email to admin is enabled $antispam_subject = 'Spam trackback on site [' . get_bloginfo('name') . ']'; // email subject $antispam_message = ''; $antispam_message .= $antispam_error_message . $rn . $rn; $antispam_message .= $antispam_message_spam_info; // spam comment, post, cookie and other data $antispam_message .= $antispam_message_append; @wp_mail($antispam_settings['admin_email'], $antispam_subject, $antispam_message); // send trackback comment to admin email } antispam_counter_stats(); wp_die($antispam_pre_error_message . $antispam_error_message); // die - do not send trackback } } return $commentdata; // if comment does not looks like spam }