WordPress 用户评论的真实IP地址

如果使用了反向代理的,HTTP头中REMOTE_ADDR就不是用户的地址,反而是上一级代理的地址了。一般我们都会在代理服务器中设置X-Real-IP和X-Forwarded-For来追踪用户的IP地址。那么在PHP中就是用$_SERVER[‘HTTP_X_REAL_IP’]和$_SERVER[‘HTTP_X_FORWARDED_FOR’]来获取相应的地址。

WordPress中修改comment.php的function wp_new_comment( $commentdata ) 函数,将

$commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '',$_SERVER['REMOTE_ADDR'] );

修改为

$commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '',$_SERVER['HTTP_X_REAL_IP'] );

这样就能解决用户IP地址的问题。