我用的是$_SERVER['REMOTE_ADDR'] 获取到的ip不正确,而且三个不同地区的人访问ip相同  ip显示为:118.193.199.80

解决方案 »

  1.   

    /**
     * 获取客户端IP地址
     * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
     * @return mixed
     */
    function get_client_ip($type = 0) {
    $type       =  $type ? 1 : 0;
        static $ip  =   NULL;
        if ($ip !== NULL) return $ip[$type];
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $arr    =   explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            $pos    =   array_search('unknown',$arr);
            if(false !== $pos) unset($arr[$pos]);
            $ip     =   trim($arr[0]);
        }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
            $ip     =   $_SERVER['HTTP_CLIENT_IP'];
        }elseif (isset($_SERVER['REMOTE_ADDR'])) {
            $ip     =   $_SERVER['REMOTE_ADDR'];
        }
        // IP地址合法验证
        $long = sprintf("%u",ip2long($ip));
        $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);
        return $ip[$type];
    }用这个封装好的方法获取IP吧
      

  2.   

    get_client_ip
      

  3.   


    /**
     * 获取客户端IP地址
     * @return string
     */
    function get_client_ip() { 
        if(getenv('HTTP_CLIENT_IP')){ 
            $client_ip = getenv('HTTP_CLIENT_IP'); 
        } elseif(getenv('HTTP_X_FORWARDED_FOR')) { 
            $client_ip = getenv('HTTP_X_FORWARDED_FOR'); 
        } elseif(getenv('REMOTE_ADDR')) {
            $client_ip = getenv('REMOTE_ADDR'); 
        } else {
            $client_ip = $_SERVER['REMOTE_ADDR'];
        } 
        return $client_ip; 
    }   
    /**
    * 获取服务器端IP地址
     * @return string
     */
    function get_server_ip() { 
        if (isset($_SERVER)) { 
            if($_SERVER['SERVER_ADDR']) {
                $server_ip = $_SERVER['SERVER_ADDR']; 
            } else { 
                $server_ip = $_SERVER['LOCAL_ADDR']; 
            } 
        } else { 
            $server_ip = getenv('SERVER_ADDR');
        } 
        return $server_ip; 
    }
      

  4.   

      $_SERVER['SERVER_ADDR'];才是获取服务器的地址
      

  5.   

    头信息中没有HTTP_CLIENT_IP     HTTP_X_FORWARDED_FOR
      

  6.   

    头信息中没有HTTP_CLIENT_IP     HTTP_X_FORWARDED_FOR
      

  7.   

    都给你获取的方法了,你为什么不去试试呢?能获取到IP吗?
    HTTP_CLIENT_IP     HTTP_X_FORWARDED_FOR
    是过滤代理IP获取用户的真实IP地址,你没有使用代理IP当然获取不到此参数。
      

  8.   

    用gethostip()试试
      

  9.   

    这是thinkphp里面的吧?