php 通过ip获取地理位置

来源:互联网 发布:centos 6.4 登陆 编辑:程序博客网 时间:2024/06/01 08:23

代码

        <?php        header('Content-Type:text/html;Charset=utf-8');        function GetIp(){            $realip = '';            $unknown = 'unknown';            if (isset($_SERVER)){                if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown)){                    $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);                    foreach($arr as $ip){                        $ip = trim($ip);                        if ($ip != 'unknown'){                            $realip = $ip;                            break;                        }                    }                }else if(isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SERVER['HTTP_CLIENT_IP'], $unknown)){                    $realip = $_SERVER['HTTP_CLIENT_IP'];                }else if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown)){                    $realip = $_SERVER['REMOTE_ADDR'];                }else{                    $realip = $unknown;                }            }else{                if(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), $unknown)){                    $realip = getenv("HTTP_X_FORWARDED_FOR");                }else if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), $unknown)){                    $realip = getenv("HTTP_CLIENT_IP");                }else if(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), $unknown)){                    $realip = getenv("REMOTE_ADDR");                }else{                    $realip = $unknown;                }            }            $realip = preg_match("/[\d\.]{7,15}/", $realip, $matches) ? $matches[0] : $unknown;            return $realip;        }        function GetIpLookup($ip = ''){            if(empty($ip)){                $ip = GetIp();            }            $res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip);            if(empty($res)){ return false; }            $jsonMatches = array();            preg_match('#\{.+?\}#', $res, $jsonMatches);            if(!isset($jsonMatches[0])){ return false; }            $json = json_decode($jsonMatches[0], true);            if(isset($json['ret']) && $json['ret'] == 1){                $json['ip'] = $ip;                unset($json['ret']);            }else{                return false;            }            return $json;        }    $ipInfos = GetIpLookup('1.1.1.1'); //维多利亚的 IP地址      var_dump($ipInfos);
0 0