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&amp;java(三)
Oct 09 PHP
PHP和XSS跨站攻击的防范
Apr 17 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
PHP操作xml代码
Jun 17 PHP
PHP中其实也可以用方法链
Nov 10 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
关于crontab的使用详解
Jun 24 PHP
php获取新浪微博数据API实例
Nov 12 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
thinkPHP框架中执行事务的方法示例
May 31 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
thinkphp分页实现效果
2016/10/13 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
python ChainMap 合并字典的实现步骤
2019/06/11 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
python类共享变量操作
2020/09/03 Python
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
师范毕业生自荐信
2013/10/17 职场文书
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
学习雷锋倡议书
2014/04/15 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
大学生入党群众意见书
2015/06/02 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书