修改PHP脚本使WordPress拦截垃圾评论的方法示例
拦截英文垃圾评论由于绝大多数的垃圾评论都是英文的,所以国内不少朋友在使用 Some Chinese Please 插件,它可以有效地拦截内容中不带有中文字的comment和trackback(pingback),不写入数据库中,可有效地减小spam对blog服务器的无谓使用。虽然已经 2 年多没有更新,但还是可用的。 其实还可以简化下,直接将下面的代码添加到主题的 functions.php 文件,效果与使用 Some Chinese Please 插件相同: @Teddysun http://teddysun.com/ 经过实测反馈,Wordpress中并没有err这个函数(这个函数也许是存在于 @知更鸟 的主题里)。因此不会有提示信息出现。最好还是用wp_die函数,这样就会有提示信息。所以,上面的代码如果不生效,可以使用以下代码: 针对那些使用技术手段,比如GET、POST等方式不填写前台表单,直接读取后台程序文件的spam,只有屏蔽IP才能缓解疯狗一样的攻势,其它什么验证码、滑动解锁等等都没用。 禁止某些IP访问可以在.htaccess文件中添加: 拦截中文垃圾评论如果发现大量垃圾评论是中文,那么可以用写的小墙工具,理论上可以 100% 屏蔽机器人发出的 spam. 如果是自然人提交评论,小墙会在评论提交表单中加一个 hidden 变量,如果后台检测不到这个变量,则认定为 spam,可以选择需要审核,也可以直接过滤掉. 如果对方知道你用的 hidden 变量或者使用虚拟点击,就可以破掉小墙. 但是 spam 本来就是小成本和以量取胜的事情,除非与你与 spammer 结仇了,我相信人家不会那么无聊来破你小墙. 而且机器人 spam 的数量占了绝大多数,这个工具很有必要. 貌似 Willin 现在不用 WordPress 了,网站也正在维护,小墙代码我就贴在下面. 使用方法很简单,拷贝到 function.php 文件最后即可. 其中 wall 是隐藏关键字,有需要的请自行更改 (不改也可以). //設欄位
function w_tb() { if ( is_singular() ) { ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=(["'])comment(["'])(.+)/textarea>#","textarea$1name=$2wall$3$4/textarea><textarea name="comment" cols="50" rows="4" style="display:none">",$input);') ); } } //檢查 //處理 计算前端处理时间在输入框上方用 JavaScript 取一个时间戳作为全局变量,在提交表单的时候获取提交时间,两个时间相减,如果小于可能值,则视为机器人. 判断为机器人的评论你可以按小墙的方式处理,也可以不处理 (不占用服务器资源,但不能记录 spam 信息). 相对与小墙,这种方法更加可靠,但绝不是没有漏洞,只要 spammer 做个 setTimeout 延迟发布就破了. 时间戳老掉牙的方机器人方法,很实用,但有最大的缺点: 用户体验不好. 要求访客多填一个很难观察的数字,严重打压评论者积极性. WordPress 平台有很多这类插件可以用,但我是不建议使用的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |