WordPress过滤垃圾评论的几种主要方法小结


Posted in PHP onJuly 11, 2016

由于个人博客小站的空间与mysql空间往往有限,共享服务器资源也有限,所以垃圾评论一定要拦截在写入数据库之外。

更可气的是看到空间的统计,很几千的IP访问,但基本上都是这个垃圾评论的IP,所以实在不能忍

网上找了一些方法,主要有三个,如果将这三个一块使用基本上就可以拦截绝大多数垃圾评论

一、使用Akismet插件(https://wordpress.org/plugins/akismet/),后台申请一个免费的key,可以拦截99%的垃圾评论,但是这个插件还是会将垃圾评论写入数据库的,一会几千条甚至上万条垃圾评论,虽说可以设置15天后自动删除,但是看着也别扭,于是加上第二种方法。

二、更改wp-comments-post.php名称

这种方法是先将wp-comments-post.php改为随便的名字,然后在你主题文件的comments.php中将wp-comments-post.php改为你刚才改过的名字

但是现在的spam机器人太强了,这种方法基本上没有任何作用,垃圾评论还是会进入到后台的垃圾评论里,于是采取第三种方法,过滤掉纯英语的垃圾评论,这种评论占了垃圾评论的很大一部分

三、过滤纯英文垃圾评论

在你主题的functions.php中添加以下代码

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');

其中[一-?]这个正则表达式代表所有中文,这时纯英文的垃圾评论算是过滤掉了,但是还有另外一种垃圾评论,日文的……

日文的采用同样的方法,请几个常出现的日文假名写入到正则表达式中ッ、の、ン、??、?I、グ、?

function fuckjp_comment_post( $incoming_comment ) {
  $http = '/[<|=|.|友|夜|KTV|ッ|の|ン|??|?I|グ|?|]/u';
  if(preg_match($http, $incoming_comment['comment_content'])) {
  wp_die( "日本广告离开!" );
}
  return( $incoming_comment );
}
add_filter('preprocess_comment', 'fuckjp_comment_post');
PHP 相关文章推荐
在Windows中安装Apache2和PHP4的权威指南
Oct 09 PHP
PHP 的 __FILE__ 常量
Jan 15 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
php类中的各种拦截器用法分析
Nov 03 PHP
php实现paypal 授权登录
May 28 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
php实现可运算的验证码
Nov 10 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 PHP
用PHP做了一个领取优惠券活动的示例代码
Jul 05 PHP
php处理带有中文URL的方法
Jul 11 #PHP
PHP实现JS中escape与unescape的方法
Jul 11 #PHP
php处理复杂xml数据示例
Jul 11 #PHP
php的debug相关函数用法示例
Jul 11 #PHP
php错误日志简单配置方法
Jul 11 #PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 #PHP
PHP封装的数据库保存session功能类
Jul 11 #PHP
You might like
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
2018/05/15 NodeJs
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
重命名批处理python脚本
2013/04/05 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
python编程线性回归代码示例
2017/12/07 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
Python多线程获取返回值代码实例
2020/02/17 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
会议通知范文
2015/04/15 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python