解决emlog使用加速乐(CDN)后不能记录真实IP
emlog博客系统(http://nctoro.com)使用加速乐(CDN)后发现评论人和在线统计插件显示的IP都是加速乐(CDN)的节点IP,查阅了很多资料终于找到了解决办法:
打开\include\lib\function.base.php这个文件,找到
/**
* 获取用户ip地址
*/
function getIp() {
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
在下面插入:
if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',
$_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',
$_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',
$_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
修改成功后保存,emlog就能正常显示评论人的真实IP了,当然在线统计插件也统计的真实IP而不是加速乐(CDN)的节点IP。
发表评论