本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh) 本文作者: 苏洋 创建时间: 2012年01月31日 统计字数: 622字 阅读时间: 2分钟阅读 本文链接: https://soulteary.com/2012/01/31/%E8%AF%84%E8%AE%BA%E4%BF%A1%E6%81%AF%E8%BF%87%E6%BB%A4%E4%BF%9D%E6%8A%A4.html ----- # 评论信息过滤保护 怎么说呢,虽然WP默认开了Akismet和一些关键词过滤,但是对于已经存在过评论内容的人,程序似乎会网开一面,或许这就是之前大家防护TIPS里常说的,不要给垃圾评论任何一次允许。 今天看到Milk的留言,感谢之余,发现他的站是友链,但是依旧被过滤,很好奇的var_dump,发现获取的地址是用户填写的内容,而友链站点是被处理过的已保存对象. 差别在那里.数据类型? No! 差别在最后一个字符,处理过的对象被强制加上了/,也就是最后一个下划线,而用户输入的数据,有时候没有下划线,所以会出现in_array($m,$n)木有返回,知道原因,解决就好说了,检查修改用户输入的数据,然后去和对象数据里的碰,看看是否相同, 或者修改每一个对象类型中的数值,去和用户输入的碰... ```php //第一种 //处理用户输入数据 if(substr($url,-1)!='\'){$url.='\';} //然后比较即可 //或者,处理原始数据去和用户的数据碰撞 if( "\" == substr(($bookmarks[$i]->link_url) , -1)){ $bookmarks[$i]->link_url = substr(($bookmarks[$i]->link_url),0,-1); } ?> ``` 然后就是又想起来用户名可以带着COM,NET等,而且为了防止CCCOMOMOM这类循环出现..用了几个小循环来做过滤. 具体怎么写的规则就不发了.. :idea: