编程语言
首页 > 编程语言> > PHPJN0005:PHP服务器端获取客户端的IP 省份 城市

PHPJN0005:PHP服务器端获取客户端的IP 省份 城市

作者:互联网

1,

// 获取客户端的IP地址
function getClientIP()
{
if (isset($_SERVER)) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
foreach ($arr AS $ip) {
$ip = trim($ip);
if ($ip != 'unknown') {
$realip = $ip;
break;
}
}
if(!isset($realip)){
$realip = "0.0.0.0";
}
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
if (isset($_SERVER['REMOTE_ADDR'])) {
$realip = $_SERVER['REMOTE_ADDR'];
} else {
$realip = '0.0.0.0';
}
}
} else {
if (getenv('HTTP_X_FORWARDED_FOR')) {
$realip = getenv('HTTP_X_FORWARDED_FOR');
} elseif (getenv('HTTP_CLIENT_IP')) {
$realip = getenv('HTTP_CLIENT_IP');
} else {
$realip = getenv('REMOTE_ADDR');
}
}
preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
$realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $realip;
};


// echo getClientIP();


// php获取省份和城市数据类型

// {
//     "address":"CN|\u5e7f\u4e1c|\u6df1\u5733|None|CHINANET|0|0",
//     "content":{
//             "address":"\u5e7f\u4e1c\u7701\u6df1\u5733\u5e02",
//             "address_detail":{
//                    "city":"\u6df1\u5733\u5e02",
//                    "city_code":340,
//                    "district":"",
//                    "province":"\u5e7f\u4e1c\u7701",
//                    "street":"",
//                    "street_number":""},
//             "point":{"x":"114.02597366","y":"22.54605355"}
//     },
//     "status":0
// }

//获取所在省份和城市
function getCity()
{
    // 获取当前位置所在城市
    $getIp = getClientIP();
    // echo $getIp;

    $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=2TGbi6zzFm5rjYKqPPomh9GBwcgLW5sS&ip={$getIp}&coor=bd09ll");
    $json = json_decode($content);
    // echo $content;

    // $address = $json->{'content'}->{'address'};// 得到如: 广东省深圳市
    // $data['address'] = $address;
    // $return['province'] = mb_substr($data['address'],0,3,'utf-8');
    // $return['city'] = mb_substr($data['address'],3,3,'utf-8');

    // 获取省份和市区信息
    $return['province'] = $json->{'content'}->{'address_detail'}->{'province'};
    $return['city'] = $json->{'content'}->{'address_detail'}->{'city'};
    // echo $json->{'content'}->{'address_detail'}->{'city'};

    return $return;

};


// 打印省份和市区
echo getCity()['province'], getCity()['city'];
// var_dump(json_decode($json));

 

标签:HTTP,服务器端,realip,IP,return,content,json,address,PHPJN0005
来源: https://www.cnblogs.com/eliteboy/p/14069972.html