不明白tp系統(tǒng)內(nèi)置接口卻不及時更新UTFWry.dat這給很多新手小伙伴帶來疑惑,所以我在這里直接拒絕大家使用這個方法
系統(tǒng)默認是這樣的
$ip = get_client_ip();
$Ip = new \Org\Net\IpLocation('UTFWry.dat'); // 實例化類 參數(shù)表示IP地址庫文件
$area = $Ip->getlocation('203.34.5.66'); // 獲取某個IP地址所在的位置
我的更改方法如下
第一步:$AderssIp = get_client_ip(); //獲取客戶端ip tp系統(tǒng)插件獲取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;
}
直接復(fù)制上面的代碼應(yīng)用到自己邏輯中即可
$location = $this->baiduIP('112.32.92.118'); // 獲取某個IP地址所在的位置
第二步:使用百度api獲取客戶端地址信息
public function baiduIP($clientIP){
? ? ? ? $baiduIP = "http://api.map.baidu.com/location/ip?ak=百度spi&ip=".$clientIP."&coor=bd09ll";
? ? ? ? $IPinfo = json_decode(file_get_contents($baiduIP));
? ? ? ? //print_r($IPinfo) ;使用打印數(shù)組來查看返回的所有地址信息獲取自己想要的即可到涂。
? ? ? ? if($IPinfo->status!=0)
? ? ? ? ? {
? ? ? ? ? ? ? return "定位失敗";
? ? ? ? ? ? ? exit();
? ? ? ? ? }else
? ? ? ? ? {
? ? ? ? ? ? $arr = $IPinfo->content->address_detail->city;//解析json
? ? ? ? ? ? return str_replace("市","",$arr);//返回市級單位
? ? ? ? ? }?
? ? }
第三步:$location = $this->baiduIP('112.32.92.118'); // 獲取某個IP地址所在的位置
最后打颖弁狻:echo '定位'.print_r($location) ;