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

我这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/,转载时必须以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!

本想买个虚拟主机体验一下 LiteSpeed 和 HTTP/3

去去年就看到博友 KN007 小试 HTTP3,今天看到一个博友虚拟主机居然上 HTTP3 了,看完评论发现是老薛主机,虚拟主机居然上 LiteSpeed 了,腻害啊。 而2021年跨年活动还没结束,最便宜的美国主机¥78/两年,没多想就买了。买完,看了几圈,才发现并不是 LiteSpeed,只是 Apache,再找找,目前也…
浏览: 155 标签:  ,  , 

WordPress 官方主题简单优化增强

截至 2021-01-16,WordPress 一共发布了 13 款主题:Twenty Twenty-One、Twenty Twenty、Twenty Nineteen、Twenty Seventeen、Twenty Sixteen、Twenty Fifteen、Twenty Fourteen、Twenty Thirteen、Twenty Twelve、Twenty Eleven、Twenty Ten、Classic、Default。 个人偏向于双栏并且侧栏在右…

Adobe Flash Player 34.0.0.92 及可用 Flash Player 模拟扩展 [Windows]

Adobe 在2020年12月31日后将不再支持 Adobe Flash Player,从2021年1月12日开始,阻止 Flash 内容在 Flash Player 中运行。截图 虽然不喜欢 Adobe Flash Player,但是有些网站目前仍然离不开 Adobe Flash Player,过渡解决方法是:安装中国特供版 Adobe Flash Player 或者安装网友修改 Adobe Flash…

CentOS 7 编译安装 PHP 7.4 提示 No package oniguruma found

在编译安装 PHP 7.4 时,如果使用 --with-mbstring 参数,则需要安装 oniguruma。oniguruma 是一个处理正则表达式库,php7.4 中,mbstring 正则表达式处理功能对这个包有依赖。所以,安装 php7.4 前需要安装 oniguruma 和 oniguruma-devel 两个软件包。 一般安装epel 然后安装即可: yum instal…
浏览: 112 标签:  ,  ,  , 
浏览: 115 标签: 

Comments:2

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

    2015.08.29 10:17 # 回复
    1楼

发表留言

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