吵吵   2012-03-26  阅读:2,847

世界上最痛苦的事情莫过于删除垃圾评论删到手软了,每天给你几十条垃圾评论,而且还是英文的一些不知所云的东西,你郁不郁闷?如果是偶尔的几条垃圾评论就算了,但是大规模的机器发送,你发的不累,我删除就累了。为了杜绝这些垃圾评论,吵吵再下狠心改了改代码,继续使用js控制来加入隐藏项进行叶面传值。

其实真正最好的方法莫过于是加入图片验证,如果图片够复杂,一般的图片处理算法没有办法计算出图片中的文字的话,你还真的就是没辙的。但是前提就是你得多建立一个数据库,使得图片和序号对上位,而且还要保存大量的有效的图片,吵吵并不想去做这个工作,倒也不是不愿意干,而是加入图片认证后,用户要输入一次或者多次图片中的文字,多麻烦,一般人输入邮箱,网站,昵称都觉得烦了,你还搞验证码就更郁闷了。

简单的添加隐藏的input很快就会被人给破解了,或者被人直接从网页扫描到了,那么一个伪造的post也就是轻而易举的事情了。为了搞复杂一点,我们决定把一个隐藏的input值赋值为月+日+小时。然后再在wp-comments-post.php中进行验证,正确就留下,不正确就丢弃。

当然,为了老外或者身在国外的同胞也能发,我们就用格林尼治标准时间吧。

js的代码如下:

var d = new Date();
var e3 = document.createElement("input");
e3.setAttribute("type", "text");
e3.setAttribute("name", "check");
document.getElementById('check').value=d.getUTCDate()+d.getUTCHours()+d.getUTCMonth()+1;

注:js获取的月份是从0到11的,吵吵在这里纠结了很久怎么加起来老是少一的。
wp-comments-post.php中加入的代码如下:

if(!isset($_POST['check']))
{
	wp_die( '未填写验证码!');
}
else{

    $today_month=date("m");
	$today_day=date("d");
	$hour= date("H");//获取小时数
	if($_POST['check']!= $today_month+$today_day+$hour)
	{
		wp_die( '验证码输入错误!');
	}
	
}

看看以后还会不会有人发垃圾评论,实在没辙我就真的要用图片验证了。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

10条回应:“使用js来过滤wp的垃圾评论”

  1. 湚川阁说道:

    机器发送垃圾留言太烦人了

  2. 湚川阁说道:

    有垃圾留言最起码证明你的博客流量高啊

  3. 伊夏说道:

    早上起来问吵吵好啊

  4. 影楼培训说道:

    这个方法不错啊

  5. 每天坚持更新博客还是很难得的,对于一些好的博文,
    我一般都是收藏的,在这里就先谢谢这些博主的无私分享了。

  6. 曾经左手烟说道:

    用插件吧,虽然插件用多了WP会臃肿,但是对于像我这样的新手还是用插件吧

  7. 标语大全说道:

    世界上最痛苦的事情莫过于删除垃圾评论删到手软。哈哈

  8. java博客说道:

    好吧,我也遇到师兄一样的情况了,有时候一天30多条…不过最近好点了…对了,师兄,我的链接名字改成“java博客”哦….呵呵

  9. 胡益博说道:

    虽然不动JS,还是过来友情支持下吧!~

  10. codeFarmer说道:

    submit的时候执行js代码???否则可能刚好跨小时就会出错咯…

发表评论

电子邮件地址不会被公开。 必填项已用*标注