用户
 找回密码
 入住 CI 中国社区
搜索
查看: 17463|回复: 6
收起左侧

[已解决] 如何获取客户端真实IP?

[复制链接]
发表于 2012-4-12 10:23:07 | 显示全部楼层 |阅读模式
在system/helpers/common_helper.php文件

if ( ! function_exists('get_ip'))
{
    function get_ip()
    {
        $CI =& get_instance();
        if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
            $ip=$_SERVER['HTTP_CLIENT_IP'];
        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
         }else {
            $ip=$_SERVER['REMOTE_ADDR'];
         }
        return $ip;
    }
}

不知道这个方法获取的IP地址是否真实?

发表于 2012-4-12 11:16:46 | 显示全部楼层
$this->input->ip_address();
发表于 2012-4-12 11:30:30 | 显示全部楼层
public function getInfo ()
        {
                $proxy="";
                $IP = "";
                if (isSet($_SERVER))
                {
                        if (isSet($_SERVER["HTTP_X_FORWARDED_FOR"]))
                        {
                                $IP = $_SERVER["HTTP_X_FORWARDED_FOR"];
                                $proxy  = $_SERVER["REMOTE_ADDR"];
                        }
                        elseif (isSet($_SERVER["HTTP_CLIENT_IP"]))
                        {
                                $IP = $_SERVER["HTTP_CLIENT_IP"];
                        }
                        else
                        {
                                $IP = $_SERVER["REMOTE_ADDR"];
                        }
                }
                else
                {
                        if ( getenv( 'HTTP_X_FORWARDED_FOR' ) )
                        {
                                $IP = getenv( 'HTTP_X_FORWARDED_FOR' );
                                $proxy = getenv( 'REMOTE_ADDR' );
                        }
                        elseif ( getenv( 'HTTP_CLIENT_IP' ) )
                        {
                                $IP = getenv( 'HTTP_CLIENT_IP' );
                        }
                        else
                        {
                                $IP = getenv( 'REMOTE_ADDR' );
                        }
                }
                if (strstr($IP, ','))
                {
                   $ips = explode(',', $IP);
                   $IP = $ips[0];
                }
                $RemoteInfo[0]=$IP;
                $RemoteInfo[1]=@GetHostByAddr($IP);
                $RemoteInfo[2]=$proxy;
                return $RemoteInfo;
        }
 楼主| 发表于 2012-4-12 11:31:48 | 显示全部楼层
steven_mlc 发表于 2012-4-12 11:16
$this->input->ip_address();

额,原来CI已经有了啊!
 楼主| 发表于 2012-4-12 11:35:29 | 显示全部楼层
lynn.wang 发表于 2012-4-12 11:30
public function getInfo ()
        {
                $proxy="";

谢谢,不过CI已经自带有了! 呵呵~
发表于 2012-4-12 15:39:02 | 显示全部楼层
呵呵

本版积分规则