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

我这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');
}

除非注明,垃圾站文章均为网络收集,本文地址 https://cyhour.com/42/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

Gravatar 头像被墙及解决方案 Gravatar 头像国内镜像地址大全

Gravatar 头像真是一言难尽,时而正常时而抽风时而无法访问……就一个 Gravatar 头像,这有啥好强(现代通假字)的呢?(据说是被其它服务连累?) 解决办法 - 调用 ssl/cn 头像链接 历史解决办法:调用 ssl 头像链接——https还是没被墙的,而且速度还不错,直接调用这个最简单了。主题 functi…
浏览: 127 标签: 

斐讯 K3 路由器刷 OpenWRT LEDE 及固件收集下载

K3 上车已四个(多)月了,因为是三星闪存,梅林支持不好,折腾完就闲置。后来看网友说 K3 会漏油,觉得不可思议,就更加不想折腾它,只希望能顺利成功下车(K3)(2018.8 已翻车)。 斐讯 K3 OpenWrt LEDE 梅林固件大全:点击直达!!! 2019 斐讯K3 全版本 免降级、免拆机、免TTL 开启telnet …
浏览: 34 标签: 

斐讯 K2 路由器 OpenWRT Padavan PandoraBox 潘多拉固件收集分享

如题,斐讯 K2 路由器 OpenWRT Padavan PandoraBox 潘多拉固件收集分享。斐讯 K2 路由器比较旧了,但是日常备用或者百兆家庭宽带(偶尔回去的农村家里)使用还是绰绰有余,性价比也不错。 ye61123 K2P 超精简 padavan 帖子:回归纯粹,多机型超精简padavan,K2仅2.99MB 简介:无任何扩展,只…
浏览: 70 标签:  ,  ,  ,  ,  ,  , 
浏览: 99 标签: 

Comments:4

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

    2015.08.29 10:17 # 回复
    1楼
  2. 请教个问题,如果ajax提交评论用err函数,虽说可用,但会报调用未定义函数的错误,小白问下咋解决。😂

    2021.02.28 11:04 # 回复
    2楼
    • @简单生活 err 函数得自定义,一般 ajax 提交都会有类似函数:

      if(!function_exists('err')) :
      function err($a) {
      header('HTTP/1.0 500 Internal Server Error');
      header('Content-Type: text/plain;charset=UTF-8');
      echo $a;
      exit;
      }
      endif;
      2021.02.28 12:00 # 回复

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息