无需插件实现拦截无中文或有日文垃圾评论

2013.05.17 | | 2 Comments

我这BLOG只是个自娱自乐的地方,要啥没啥,可是时不时被spam,真是烦人。

所以一直在用广受中国人民喜爱的 Some Chinese Please 插件,外加自带的黑名单。这插件可以直接拦截无中文的评论(无中文无法提交),而且不写数据库,可以减少大量的资源消耗。

当然,这插件也有缺点——只能拦截在前台填写表单提交的评论,对于其他更高级的spam就无能为力了。

转入正题吧——无需插件实现拦截无中文留言。下面的代码改自Some Chinese Please插件的核心内容,直接丢主题的functions.php就可以用。

* refused spam */    
function refused_spam_comments( $comment_data ) {
$pattern = '/[一-龥]/u';
if(!preg_match($pattern,$comment_data['comment_content'])) {
wp_die('评论必须含中文!');
}
return( $comment_data );
}
add_filter('preprocess_comment','refused_spam_comments');

PS:WordPress官方的防垃圾插件Akismet通过不断学习可以即时判断出是spam,但仍会将垃圾留言数据写入到数据库中,会消耗大量的资源,而且有时候误判率也高。所以还是别用它为妙。

拦截包含日文的评论代码:

// 禁止日文评论
function refuse_comment_jp_post( $incoming_comment ) {
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(preg_match($jpattern, $incoming_comment['comment_content'])){
wp_die( "禁止有日文字符的评论 You should type some Chinese word" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'refuse_comment_jp_post');

集合:拦截新读者无中文或有日文垃圾评论、禁止新用户黑名单关键词评论提交。

// 拦截新读者无中文或有日文垃圾评论、禁止新用户黑名单关键词评论提交。登录用户不受影响。
//如用ajax提交评论 需将 wp_die() 改成 ajax 错误提示函数 如 err。
if ( !is_user_logged_in() ) {
function refused_spam_comments( $comment_data ) {
$pattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
$cau=$comment_data['comment_author'] ;
$cem=$comment_data['comment_author_email'] ;
$comment_data['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', "",$_SERVER['REMOTE_ADDR'] );
$comment_data['comment_agent'] = isset($_SERVER['HTTP_USER_AGENT'] ) ? substr($_SERVER['HTTP_USER_AGENT'], 0, 254 ) : "";
global $wpdb;
$ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$cau' AND comment_author_email = '$cem' and comment_approved = '1' LIMIT 1");
if(0 == $ok_to_comment){
if(!preg_match($pattern,$comment_data['comment_content'])) { // 禁止无中文评论
wp_die( __('Error: 评论必须含中文!You should type some Chinese word (like “你好”) in your comment to pass the spam-check!') );
}
else if(preg_match($jpattern, $comment_data['comment_content'])){ // 禁止日文评论
wp_die( __('Error: 评论不能包含日文!') );
}
else if( wp_blacklist_check($comment_data['comment_author'],$comment_data['comment_author_email'],$comment_data['comment_author_url'], $comment_data['comment_content'], $comment_data['comment_author_IP'], $comment_data['comment_agent'] )){
wp_die( __('Error: 评论关键词或者IP黑名单!') );// 禁止黑名单提交评论
}
}
return( $comment_data );
}
add_filter('preprocess_comment','refused_spam_comments');
}
——最近更新:2015年7月29日
支付宝扫码打赏微信打赏

如果文章对您有帮助,欢迎移至上方按钮打赏老杨

声明: 除非注明,常阳时光文章均为原创,转载请以链接形式标明本文地址
本文地址:https://cyhour.com/42/

Comments:2

  1. 汐枫3 QQbrowser Android 4.4.4

    这个不错,收下回头能嵌到主题就嵌进去

    2015.08.29 10:17 # 回复
    1楼

发表留言