emlog博客系统有些服务器获取不到正确的客户IP解决办法

飘逸的风13年前 (2013-06-18)程序10354
有些情况下,emlog博客系统自带的获取IP的函数无法获取到正确的客户端IP(本站就是),比如站点启用CDN服务器之后emlog就会无法正确的获取到访客的IP地址, 解决这个问题我们需要修改一下emlog内核的代码来解决问题.
用编辑器打开 include/lib/function.base.php, 在60行左右能找到以下的代码:
/**
* 获取用户ip地址
*/
function getIp() {
    $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
    if (!ip2long($ip)) {
        $ip = '';
    }
     return $ip;
}

将其替换为:
/**
* 获取用户ip地址
*/
function getIp() {
    $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $ip = $list[0];
    }        
    if (!ip2long($ip)) {
        $ip = '';
    }
    return $ip;
}

修改完毕,保存即可。

相关文章

如何修改PHP的memory_limit限制

如何修改PHP的memory_limit限制

在运行PHP程序,通常会遇到“Fatal Error: Allowed memory size of xxxxxx bytes exhausted”的错误, 这个意味着PHP脚本使用了过多的内存,并超...

PHP中正则表达式的几则使用技巧归总

PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使用PHP正则表达式需要综合考虑。 我的PHP正则入门,是起源于网上的一篇...

如何实现PHP的计划(定时)任务和暂停任务

如果在服务器做计划任务是件很简单的事情,但是有的时候收条件限制无法使用服务器自带的计划任务,比如买的空间,这时候想要让网站定时执行某些操作(处理数据、生成静态文件、清除缓存...),该怎么办呢? &...

龙圆 php 判断是否为搜索引擎蜘蛛函数 转载

/**  *    判断是否为搜索引擎蜘蛛  *  *    @author&nbs...

PHP Apache2.2 虚拟主机配置

APACHE+PHP+MYSQL 基本环境设好了之后,今天在此基础之上设置 多个虚拟主机,即一个IP,可以有多个域名访问,也可以说一个WEB SERVER 上架设多个网站(在网上找了很久,都没有找...

PHP一些代码收藏:验证身份号、根据身份证号获取星座和生肖等

<?php // PHP根据身份证号,自动获取对应的星座函数 function get_xingzuo($cid) { // 根据身份证号,自动返回对应的星座 if (!isIdCard...

评论列表

飘逸的风
13年前 (2013-06-18)

测试IP评论。

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。