導航:首頁 > 編程語言 > phpip獲取地理位置

phpip獲取地理位置

發布時間:2022-09-24 03:20:58

『壹』 php用IP查詢歸屬地

class ip_location
{
function init()
{
$this->wrydat = 'ip_area.dat';

$this->fp = fopen($this->wrydat, 'rb');
$this->getipnumber();
$this->getwryversion();

$this -> REDIRECT_MODE_0 = 0;
$this -> REDIRECT_MODE_1 = 1;
$this -> REDIRECT_MODE_2 = 2;
}

function get($str)
{
return $this->$str;
}

function set($str,$val)
{
$this->$str = $val;
}

function getbyte($length,$offset=null)
{
!is_null($offset) && fseek($this->fp, $offset, SEEK_SET);

return fread($this->fp, $length);
}

function packip($ip)
{
return pack('N', intval(ip2long($ip)));
}

function getlong($length=4, $offset=null)
{
$chr=null;
for($c=0;$length%4!=0&&$c<(4-$length%4);$c++)
{
$chr .= chr(0);
}
$var = unpack( 'Vlong', $this->getbyte($length, $offset).$chr);
return $var['long'];
}

function getwryversion()
{
$length = preg_match("/coral/i",$this->wrydat)?26:30;
$this->wrydat_version = $this->getbyte($length, $this->firstip-$length);
}

function getipnumber()
{
$this->firstip = $this->getlong();
$this->lastip = $this->getlong();
$this->ipnumber = ($this->lastip-$this->firstip)/7+1;
}

function getstring($data='', $offset=NULL)
{
$char = $this->getbyte(1,$offset);
while(ord($char) > 0)
{
$data .= $char;
$char = $this->getbyte(1);
}
return $data;
}

function iplocaltion($ip)
{
$ip = $this->packip($ip);
$low = 0;
$high = $this->ipnumber-1;
$ipposition = $this->lastip;
while($low <= $high)
{
$t = floor(($low+$high)/2);
if($ip < strrev($this->getbyte(4,$this->firstip+$t*7)))
$high = $t - 1;
else
{
if($ip > strrev($this->getbyte(4,$this->getlong(3))))
$low = $t + 1;
else
{
$ipposition = $this->firstip+$t*7;
break;
}
}
}
return $ipposition;
}

function getarea()
{
$b = $this->getbyte(1);
switch(ord($b))
{
case $this -> REDIRECT_MODE_0 :
return '';
break;
case $this -> REDIRECT_MODE_1:
case $this -> REDIRECT_MODE_2:
return $this->getstring('',$this->getlong(3));
break;
default:
return $this->getstring($b);
break;
}
}

function getiplocation($ip)
{
$ippos = $this->iplocaltion($ip);
$this->ip_range_begin = long2ip($this->getlong(4,$ippos));
$this->ip_range_end = long2ip($this->getlong(4,$this->getlong(3)));
$b = $this->getbyte(1);
switch(ord($b))
{
case $this -> REDIRECT_MODE_1:
$b = $this->getbyte(1,$this->getlong(3));
if(ord($b) == $this -> REDIRECT_MODE_2)
{
$countryoffset = $this->getlong(3);
$this->area = $this->getarea();
$this->country = $this->getstring('',$countryoffset);
}
else
{
$this->country = $this->getstring($b);
$this->area = $this->getarea();
}
break;
case $this -> REDIRECT_MODE_2:
$countryoffset = $this->getlong(3);
$this->area = $this->getarea();
$this->country = $this->getstring('',$countryoffset);
break;
default:
$this->country = $this->getstring($b);
$this->area = $this->getarea();
break;
}
}
}

---------------------------------------------------------------

調用方法:

$iploca = new ip_location;
$iploca -> init();
$iploca -> getiplocation($ip);

$area['country'] = str_replace(array('CZ88.NET'), '', $iploca -> get('country'));
$area['area'] = str_replace(array('CZ88.NET'), '', $iploca -> get('area'));

$area['country']=='' && $area['country']='未知';
$area['area']=='' && $area['area']='未知';
return $area;

『貳』 php的 ip 定位,經緯度至少精確到鎮,附上源碼和詳解

ip定位一般對於電腦來說的,精確到鎮有點難,淘寶的ip api服務,只能精確到區,或者市

手機的話,你需要獲取位置,位置會因為手機質量的好壞,偏差很大,蘋果和諾基亞手機定位很准,安卓各種機型,各種偏差,使用手機定位的是,html5有獲取定位的方法,然後得到經緯度,發到網路地圖 api,獲取更精確的地址,

ip定位想要那麼精確,有點難,你得找個好點的ip庫服務,達到你要的精讀就行

『叄』 php獲取了ip地址,用php怎麼獲取ip的地理位置請大蝦賜教!

用純真ip資料庫啊,這里有個資料是介紹php操作純真ip資料庫的,是原查詢吧query8.com里提取出來的,用時先去網上搜純真ip資料庫下載,查詢吧php版讀取純真ip資料庫源碼http://www.phperz.com/code/php-class/060913H20081372.html

『肆』 php怎麼獲取當前地理位置

採用PHP向騰訊發送http get request,然後獲取相應,獲得相應結果後,將結果用正則表達式將需要的地理位置信息提取出來就OK了。當然,PHP發送get請求的方法有很多,我用curl來模擬http請求的方法

Curl是PHP的一個擴展,進行測試之前,先確認PHP已經載入了curl擴展。打開PHP配置文件php.ini,搜索 「extension=php_curl.dll」,將其前面的分號(;)去掉,然後重啟HTTP伺服器,查看phpinfo(),若能看到curl的信 息,說明PHP擴展curl成功

『伍』 php 怎麼獲取記錄ip所在地

<?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('123.125.114.144'); //.com IP地址
var_mp($ipInfos);
使用了新浪的開放API

『陸』 php獲取地理信息

新浪的是在 微博應用中有地理信息介面,通過經緯度查詢來獲取,不過需要先建立一個微博應用才可以使用(根據地理信息坐標返回實際地址 )
網路/google 的是在地圖介面裡面提供的
簡單的說就是程序通過它們(網路、sina )的介面查詢指定地理位置信息,至於地理信息數據從哪裡得來就不知道了,也沒有發現規律。

『柒』 php 怎麼通過ip來獲取所在位置

可以使用第三方介面 比如網路地圖 它可以通過ip來定位用戶的經緯度坐標 有了坐標就可以直接定位用戶所在城市和具體位置

『捌』 php根據經緯度獲取地理位置

這種功能,只能調用第三方的介面了,網路地圖API就有這個介面addressComponents,逆地址解析,參考方法如下:

<GeocoderSearchResponse>

<status>OK</status>

<result>

<location>

<lat>38.990998</lat>

<lng>103.645966</lng>

</location>

<formatted_address>甘肅省武威市民勤縣</formatted_address>

<business/>

<addressComponent>

<streetNumber/>

<street/>

<district>民勤縣</district>

<city>武威市</city>

<province>甘肅省</province>

</addressComponent>

<cityCode>118</cityCode>

</result>

</GeocoderSearchResponse>

『玖』 php利用第三方介面獲取真實ip地址輸出

不是我不想給你復制代碼是網路不讓我提交,你自己照著打吧

『拾』 php如何實現通過ip獲取地理位置

通過ip地址定位介面,調用的網路地圖介面,每人每天有30000次免費調用機會。。

你可以調用我的介面,但不要多次調用。最好是按照我這篇文章中的方法自己搭建一個介面,畢竟我的介面很有可能無法實現你的要求。

著作權歸作者所有。

商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
作者:caijun
鏈接:https://www.bangbangcat.com/index.php/PHP/73.html
來源:https://www.bangbangcat.com/
閱讀全文

與phpip獲取地理位置相關的資料

熱點內容
程序員留學移民 瀏覽:47
梁中間部位箍筋加密區 瀏覽:117
頻譜分析pdf 瀏覽:750
樂2怎麼升級安卓70 瀏覽:172
java中獲取日期 瀏覽:506
單片機74hc245 瀏覽:272
美國歷史上的總統pdf 瀏覽:751
程序員脫單實驗室靠不靠譜 瀏覽:458
php中間四位手機號 瀏覽:869
永旺app怎麼樣了 瀏覽:516
壓縮空氣流量計算軟體 瀏覽:649
智慧聊天app怎麼激活 瀏覽:924
一加換機備份到哪個文件夾 瀏覽:735
支撐pdf 瀏覽:417
java空文件夾刪除 瀏覽:587
安卓9跟81有什麼區別 瀏覽:912
n1藍寶書pdf 瀏覽:244
為什麼安卓機拍照那麼丑 瀏覽:695
伺服器綁定雲產品實例 瀏覽:314
程序員認真工作被開除 瀏覽:454