1. 程式人生 > 實用技巧 >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));