php批量评价,彻底杜绝 WordPress 批量垃圾评论留言的三步曲

本文将详细介绍如何采取三步曲彻底告别烦人的 WordPress 批量垃圾评论问题,还你一个干净清爽的后台评论区。

刚开始使用 WordPress 程序建站的朋友们肯定或多或少都被其批量垃圾评论困扰过。然后大家就开始寻思解决的办法,找到的网上说法大都是 Akismet Anti-Spam 等类似 WP 插件或者是添加一些代码。

这些方法像 WP自带的 Akismet Anti-Spam 插件要么需要去第三方注册还会给数据库增加垃圾数据拖慢网站,要么就是代码功能不全面还有大量的“漏网之鱼”,总之就是效果都不尽如人意。

721f0a5410bc128e8b2dc20f39eef429.png

防止 WordPress 垃圾评论留言

下面将遇到的不同类型的 wordpress 批量垃圾评论留言采取针对性的反制三步曲,争取彻底告别批量的垃圾评论留言。

首先,限制访问 WP 网站根目录下 wp-comments-post 文件

为什么很多人安装了各种添加数字、图片或滑动按钮等类似验证码功能的插件而批量垃圾评论没见明显减少呢,就是因为这类垃圾评论不用填写表单直接 post wp-comments-post 文件而来,所以再多的验证码也无济于事,所以限制 wp-comments-post 文件的访问权限就能基本防止这类垃圾评论了。

禁止访问 wp-comments-post 文件的方法因网站安装环境不同而有多种,这里就说一下 Apache 下利用 .htaccess 限制 IP 访问的办法。

在根目录的 .htaccess 文件中添加以下代码:

Order deny,allow

Deny from All

Allow from 127.0.0.1

其中,第4行可以更改添加你所允许的特定 IP 地址或者删除什么都不加。

第二步,非插件代码式的添加计算结果验证码

限制直接 post wp-comments-post 文件的批量垃圾评论后还有机器人批量导入表单的垃圾留言需要解决,这就需要简单的验证码来实现了,但这么一个简单的功能还要安装一个插件消耗网站资源,怎么想都不是很划算,所以这里就用添加代码的方法来实现了。

在你主题目录下的 funtions.php 文件加入以下代码:

//自定义算术验证函数

function spam_protection_math(){

//获取两个随机数, 范围0~9

$num1=rand(0,9);

$num2=rand(0,9);

//最终网页中的具体内容

echo

""

.""

."";

}

function spam_protection_pre($commentdata){

$sum=$_POST['sum'];//用户提交的计算结果

switch($sum){

//得到正确的计算结果则直接跳出

case $_POST['num1']+$_POST['num2']:break;

//未填写结果时的错误讯息

case null:err('抱歉: 请输入下面框中的计算结果.');break;

//计算错误时的错误讯息

default:err('错误: 输入的计算结果不正确,请重新输入!');

}

return $commentdata;

}

if(!is_user_logged_in() && $comment_data['comment_type']==''){

add_filter('preprocess_comment','spam_protection_pre');

}

并在你的主题文件夹下 commenter.php 文件的相应位子加入调用代码:(一般就是就是昵称和邮箱下面和提交评论按钮前的地方)

注意:可以适当修改 css 从而配合你的主题样式(一般就是套用昵称和邮箱的 css样式即可),如有什么不清楚的地方可下面留言共同探讨!

最后,再完善一下,禁止非汉字评论和限制评论字数

还是在当前 WP 主题目录下的 funtions.php 文件中加入代码:

// WordPress留言禁止非汉字评论

function BYMT_comment_post( $incoming_comment ) {

$pattern = '/[一-龥]/u';

$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';

if(!preg_match($pattern, $incoming_comment['comment_content'])) {

err( "抱歉,您的评论必须含有汉字" );

}

if(preg_match($jpattern, $incoming_comment['comment_content'])){

err( "抱歉,您的评论必须含有汉字" );

}

return( $incoming_comment );

}

add_filter('preprocess_comment', 'BYMT_comment_post');

//WordPress留言评论字数限制

function Paopao_comment_length( $commentdata ) {

$minCommentlength = 5; //最少输入2个字

$maxCommentlength = 100; //最多输入100个字

$pointCommentlength = mb_strlen($commentdata['comment_content'],'UTF8'); //mb_strlen 1个中文字符当作1个长度

if ( $pointCommentlength < $minCommentlength )

{

err( __('抱歉,您的评论太短了,请至少输入'. $minCommentlength .'个字(已输入'. $pointCommentlength .'个字)') );

}

if ( $pointCommentlength > $maxCommentlength )

{

err( __('抱歉,您的评论太长了,请不要超过'. $maxCommentlength .'个字(已输入'. $pointCommentlength .'个字)') );

}

return $commentdata;

}

add_filter( 'preprocess_comment', 'Paopao_comment_length' );

以上代码都可以根据自己的需要适当修改,如提示语言和限制字数的多少。

好了,完成上面的三步曲后,一段时间后你再看看你的 wordpress 网站还会有批量垃圾评论留言了吗,是不是感觉整个世界都清净了!(* ̄︶ ̄)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WordPress屏蔽国外垃圾留言评论,将文件里的代码放到当前主题的 functions.php 中; 的前面就可以了。代码参考:https://boke112.com/bkwd/4209.html 和https://loomob.com/57.html 将以下代码放到当前主题的 functions.php 文件最后一个 ?> 的前面: //国外灌水 function scp_comment_post( $incoming_comment ) { // 禁止全英文评论 $pattern = '/[x7f-xff]/'; if(!preg_match($pattern, $incoming_comment['comment_content'])) { wp_die( "您的评论中必须包含汉字! <br /> You should type some Chinese word (like "你好") in your comment to pass the spam-check, thanks for your patience! " ); } //禁止 A 链接 if(strstr($incoming_comment['comment_content'], "<a")){ wp_die( "您的评论中不能有 A 链接,请直接填写 URL 地址" ); } // 判断 中文字符占比 $len_all = strlen($incoming_comment['comment_content']); $len_st = mb_strlen($incoming_comment['comment_content'], 'UTF-8'); if(($len_all-$len_st)/(2*$len_st) < 0.5){ wp_die( "中文字符少于百分之五十" ); } return( $incoming_comment ); } add_filter('preprocess_comment', 'scp_comment_post'); //屏蔽关键词,email,url,ip function Shield_fuckspam($comment) { if (wp_blacklist_check($comment['comment_author'], $comment['comment_author_email'], $comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'])) { header("Content-type: text/html; charset=utf-8"); err(__('不好意思,您的评论违反画里网站评论规则')); } else { return $comment; } } add_filter('preprocess_comment', 'Shield_fuckspam'); //过滤外文评论 function refused_spam_comments($comment_data) { $pattern = '/[一-龥]/u'; $jpattern = '/[ぁ-ん]+|[ァ-ヴ]+/u'; if (!preg_match($pattern, $comment_data['comment_content'])) { err(__('来一波汉字吧,博主只认识汉字!You should type some Chinese word!')); } if (preg_match($jpattern, $comment_data['comment_content'])) { err(__('原谅博主吧,只听得懂岛国神片的一两句雅蠛蝶 Japanese Get out!日本语出て行け! You should type some Chinese word!')); } return ($comment_data); } add_filter('preprocess_comment', 'refused_spam_comments'); //屏蔽带连接的 function Shield_link($comment_data) { $links = '/http:\/\/|https:\/\/|www\./u'; if (preg_match($links, $comment_data['comment_author']) || preg_match($links, $comment_data['comment_content'])) { err(__('别啊,昵称和评论里面添加链接会怀孕的哟!!')); } return ($comment_data); } add_filter('preprocess_comment', 'Shield_link');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值