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 网站还会有批量垃圾评论留言了吗,是不是感觉整个世界都清净了!(* ̄︶ ̄)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL sysdate()函数

转载自 MySQL sysdate()函数 MySQL SYSDATE函数介绍 下面说明了SYSDATE()函数的语法&#xff1a; SYSDATE(fsp);如果函数用于字符串上下文或YYYYMMDDHHMMSS格式&#xff0c;则SYSDATE()函数将返回当前日期时间&#xff0c;格式为“YYYY-MM-DD HH:MM:SS”的值&#xff0c;以…

2018蓝桥杯省赛---java---C---2(猴子分香蕉)

题目描述 思路分析 直接采用暴力破解&#xff0c;先限定范围&#xff0c;然后依次筛选出满足条件的情况。 代码实现 package TEST;public class Main {public static void main(String[] args) {for (int i 5; i < 10000; i) {int temp i;if (temp % 5 1) {temp temp…

纯前端JS实现人脸识别眨眨眼张张嘴案例

在不久之前我发布了一个案例&#xff0c;是java通过百度云人脸识别接口实现活体检测&#xff08;张张嘴和眨眨眼&#xff09;的案例&#xff0c;大家可以去看看&#xff1a;人脸识别活体检测之眨眨眼和张张嘴&#xff0c;今天我就抽空更新一下纯JS的活体检测吧。 首先给大家看一…

年度大片:StackOverflow 2017开发者调查报告

Stack Overflow 发布了 2017 开发者调查报告&#xff0c;此次有超过 64,000 名开发人员参与调查&#xff0c;分别对其技能、工具、学习趋势等数据进行了统计&#xff0c;现将其中一些有趣的数据和趋势撷取出来分享给大家。 一、开发角色 开发类型 大约有四分之三的受访者是 we…

oracle导库需要删除原始库,导入dmp文件时,需要删除原有ORACLE数据库实例

导入dmp文件时&#xff0c;对于已存在的数据库实例及表处理方式&#xff1a;删除实例。1.以管理员身份登录sqlplus / as sysdba2.停止实例shutdown abort;执行结果&#xff1a;ORACLE instance shut down.3.启动实例独占启动的选项是exclusive&#xff0c;表示只允许一个例程使…

数组中一种数出现奇数次和两种数出现奇数次

题目描述 思路分析 代码实现 package class01;/*** 创建人 wdl* 创建时间 2021/4/10* 描述*/ public class num1ornum2 {public static void main(String[] args) {int arr1[]{1,2,2,2,1,3,3};printOddTimesNum1(arr1);int arr2[]{1,2,2,2,1,3,3,5};printOddTimesNum2(arr2);}…

基于微软开发平台构建和使用私有NuGet托管库

本篇blog包含使用TFS2017&#xff0c;VS2017等平台和工具搭建和使用NuGet库等基本过程&#xff0c;为团体提供更加自动化和高效的研发活动支持。 作为以产品线或者以专属业务为扩展的项目类型的软件研发团体&#xff0c;都会有自己的基础软件框架和功能模块的软件产品智力资产库…

你真的理解CAP理论吗?

最近在学习消息中间件的时候&#xff0c;接触到了分布式系统&#xff0c;进而接触到CAP理论&#xff0c;上一次接触还是在年初的时候公司的技术分享会上&#xff0c;有人在介绍项目的时候简单介绍了这个CAP理论&#xff0c;但并没有深入研究。这次&#xff0c;该是时候研究一下…

264. 丑数 II---LeetCode---JAVA(动态规划)

class Solution { public int nthUglyNumber(int n) {int[] nums new int[n];//初始化数组int index2 0;int index3 0;int index5 0;int tmp 1;nums[0] 1;//初始化第一个值&#xff0c;当n等于1的时候直接是1int cnt 1;while (cnt < n) {tmp Math.min(nums[index2] …

老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)

上篇中&#xff0c;我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理&#xff0c;编译和部署镜像&#xff0c;并且设置容器的自动启动。但是&#xff0c;还有一些重要的问题没有解决&#xff0c;这些问题不解决&#xff0c;就完全谈不上运维&#xff1a;…

2018蓝桥杯省赛---java---C---4( 第几个幸运数)

题目描述 思路分析 直接暴力 代码实现 package TEST;public class Main {public static void main(String[] args) {long n 59084709587505L, cnt 0;for (long a 1; a < n; a * 3)for (long b 1; b < n; b * 5)for (long c 1; c < n; c * 7)if (a * b * c <…

MySQL year()函数

转载自 MySQL year()函数 MySQL YEAR函数简介 YEAR()函数接受date参数&#xff0c;并返回日期的年份。请参阅YEAR()函数的语法&#xff1a; YEAR(date);YEAR()函数返回一个指定日期的年份值&#xff0c;范围为1000到9999&#xff0c;如果日期为零&#xff0c;YEAR()函数返回…

MySQL协议.NET Core实现(一)

一个有技术追求的研发团对&#xff0c;无论使用什么框架、什么工具、什么语言&#xff0c;团队里应该有人有能力把控所使用框架、工具、语言的每一个核心功能的实现细节。团队里的每个成员应该根据自身所长挑选其中一块做深入研究&#xff0c;并把研究成果分享给团队&#xff0…

2018蓝桥杯省赛---java---C---7(缩位求和)

题目描述 问题描述在电子计算机普及以前&#xff0c;人们经常用一个粗略的方法来验算四则运算是否正确。 比如&#xff1a;248 * 15 3720 把乘数和被乘数分别逐位求和&#xff0c;如果是多位数再逐位求和&#xff0c;直到是1位数&#xff0c;得 2 4 8 14 > 1 4 5; 1 …

龙芯linux内核,龙芯的linux kernel,内核开发与编译

在很久很久以前&#xff0c;linux被视为geek极客的玩具。自行升级Linux内核&#xff0c;对普通用户来说&#xff0c;简直是天方夜谭。曾经的曾经&#xff0c;升级内核需要很多纷繁复杂的步骤&#xff0c;也需要花费很多的时间。但是&#xff0c;现在不一样了。内核的安装可以方…

2018蓝桥杯省赛---java---C---8(等腰三角形)

题目描述 问题描述本题目要求你在控制台输出一个由数字组成的等腰三角形。 具体的步骤是&#xff1a;先用1,2,3&#xff0c;…的自然数拼一个足够长的串 用这个串填充三角形的三条边。从上方顶点开始&#xff0c;逆时针填充。 比如&#xff0c;当三角形高度是8时&#xff1a;1…

Git,Git Flow,GitLab使用指南

高效利用一次蹲坑时间&#xff0c;看看如何使用Git Flow进行高效开发&#xff0c;什么才是Git提交的正确姿势&#xff0c;怎样使用GitLab进行Code Review&#xff1a; 使用Git Flow高效开发&#xff1b;Git提交正确姿势&#xff0c;Commit message编写指南&#xff1b;使用Git…

arm linux gcc 编译,Linux arm-linux-gcc交叉编译环境配置

Linux下的arm-linux-gcc交叉编译环境安装安装arm-linux-gcc(1) 打开终端&#xff0c;使用sudo命令进入从超级管理员&#xff1a;sudo su输入超级管理员密码。(2) 使用cd命令进入桌面&#xff1a;cd Desktop(3)复制arm-linux-gcc-4.4.3.tar.gz安装包到Ubuntu桌面下面(4)打开终端…

2019蓝桥杯省赛---java---C---1(求和)

题目描述 代码实现 package TEST;public class Main {public static void main(String[] args) {int cnt 0;for (int i 1; i < 2019; i)if (check(i)) cnt i;System.out.print(cnt);}static boolean check(int n) {String an"";if (a.contains("2")…

使用EntityFrameworkCore实现Repository, UnitOfWork,支持MySQL分库分表

昨天&#xff08;星期五&#xff09;下班&#xff0c;19&#xff1a;00左右回到家&#xff0c;洗个澡&#xff0c;然后20&#xff1a;30左右开始写代码&#xff0c;写完代码之后&#xff0c;上床看了《生活大爆炸10季》17、18两集&#xff0c;发现没有更新到19集&#xff0c;瞄…