第一步獲取用戶ip地址
/**
* 獲取用戶真實 IP
*/
public function getIP()
{
static $realip;
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
第二步通過IP地址利用百度接口獲取位置
1、申請百度ak?http://lbsyun.baidu.com/apiconsole/key
2、?開始獲取地理位置
$content =file_get_contents("http://api.map.baidu.com/location/ip?ak=27d76708ab31eed8028e135ab******&ip=".$ip."&coor=bd09ll");
php后臺邏輯直接復(fù)制修改ak和自由更換ip參數(shù)其他不變
$json = json_decode($content,true);//解析json
if($json['status']!=0)
? ? ? ? ? {
? ? ? ? ? ? ? return "定位失敗";
? ? ? ? ? ? ? exit();
? ? ? ? ? }
通過status判斷是否獲取成功,如果==0表示獲取成功,如果不等于=均為獲取失敗。調(diào)試時候可以直接打野錯誤內(nèi)容即可。
$arr = $json['content']['address_detail']['city'];//解析json獲取市級名稱,至于獲取其他參數(shù)請參考正確返回值
【{"address":"CN|\u5b89\u5fbd|\u5408\u80a5|None|CHINANET|0|0","content":{"address":"\u5b89\u5fbd\u7701\u5408\u80a5\u5e02","address_detail":{"city":"\u5408\u80a5\u5e02","city_code":127,"district":"","province":"\u5b89\u5fbd\u7701","street":"","street_number":""},"point":{"x":"117.28269909","y":"31.86694226"}},"status":0}】
if(isset($arr))
{
return str_replace("市","",$arr);//返回市級單位? ?這里是去除獲取的市級名稱中的市
}else{
return "合肥";
}
完結(jié)了,代碼直接復(fù)制就可以是喲個