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 相关文章推荐
PHP生成随机用户名和密码的实现代码
Feb 27 PHP
PHP 观察者模式的实现代码
May 10 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
YII中assets的使用示例
Jul 31 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
隐性调用php程序的方法
Jun 13 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
php简单中奖算法(实例)
Aug 15 PHP
laravel 框架执行流程与原理简单分析
Feb 01 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 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
php实现获取文件mime类型的方法
2015/02/11 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
php车辆违章查询数据示例
2016/10/14 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
Python常用模块用法分析
2014/09/08 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
规划编制实施方案
2014/03/15 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
MySQL创建表操作命令分享
2022/03/25 MySQL
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis