WordPress获取垃圾回复IP地址的方法

2014年09月24日

原创内容,转载清注明出处:http://www.myzhenai.com.cn/post/1875.html http://www.myzhenai.com/thread-16324-1-1.html
这个方法的前提是安装了akismet过滤插件,我的思路是这样的,因为WordPress的垃圾回复比较多,就算安装了akismet拦截也有好多被写入数据库,所以就想着有没有方法把这些垃圾回复的IP提取出来,然后用iptables封禁掉.这样一来就可以减少Mysql数据库的读写和降低服务器的资源占用.一直以来我以为这个功能需要在akismet中更改代码,但是在一朋友的提示下才知道这个是WordPress的内置功能.我们需要用到的函数是 get_comment_author_IP() 这个在官方文本中的注释是返回评论者IP.但是WordPress里还有一个comment_author_IP()函数也能获取评论者IP,但是我们在这里添加却没有办法获得它的返回值,所以要用 get_comment_author_IP(). 我们将下边的代码添加到 /wp-admin/includes/class-wp-comments-list-table.php这个文件中,在comment_author_IP();下边插入代码保存并上传覆盖原文件即可.修改前请先备份这个文件.

    $aip = get_comment_author_IP(); /** 得到ip地址 */
    $txt = file_get_contents("/spam.log"); /** 对比ip地址是否存在文件内,防止重复输入 */
    if (strpos($txt,$aip) === false) /** 如果文件内找不到这个ip地址 */
    {
    $handle = fopen("/spam.log","a+"); /** 打开文件并得到一个句柄,据说a+是写入? */
    fwrite($handle,$aip."/n"); /** 将获得的ip地址添加到文件中 */
    }
    fclose($handle); /** 关闭句柄 */

WordPress 获取 垃圾 回复 IP 地址 方法

WordPress获取垃圾回复IP地址的方法


WordPress spam 获取 垃圾 回复 IP 地址 方法

WordPress获取垃圾回复IP地址的方法


WordPress 函数 get_comment_author_IP 注释

WordPress函数get_comment_author_IP注释


本来我想将代码添加到当前主题中的评论模块comments.php文件中的,但因为我还搞不懂如何判断是否为垃圾回复,为了避免所有回复用户的IP都被收录过滤,所以暂时先不把它加到这个文件中了. 我查找了WordPress官方文档,好像用wp_allow_comment()和wp_get_comment_status()还有wp_blacklist_check()这三个函数可以判断是否为垃圾回复,但是因为我还不懂得如何写这些代码的参数.所以先不弄了,如果您懂得的,欢迎您指点,谢谢了.


sicnature ---------------------------------------------------------------------
Your current IP address is: 54.144.73.205
Your IP address location: 美国
Your IP address country and region: 美国 美国
Your current browser is:
Your current system is:
Original content, please indicate the source:
同福客栈论坛 | 海南仙岛海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source http://www.myzhenai.com.cn/post/1875.html

1 评论

  • 海南胡说 2016年08月13日在3:48 上午

    新版的wordpress 是添加在

    printf( '<a href="%1$s" rel="nofollow">%2$s</a>', esc_url( $author_ip_url ), esc_html( $author_ip ) );
    

    这行下面.

发表评论

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