//update 20120418
更新新增了**的ip庫,get請求返回的是json
這個推薦使用。
//update 20120112
本篇文章所涉及到的**已經更新到了
專案中了,大家可以從這個專案中獲取**。
buddy 你身邊的夥伴, 旨在減少我們開發者的工作,讓我們有更多的時間來學感興趣的技術,讓我們有更多的時間來陪陪家人!
<?php///*
** ip location query class
*
* $ip = iplocation::instance();
* $r = $ip->getlocation('123.120.1.160');
*
*
*/class iplocation}/*
** getlong
** @access private
* @return int
*/private
function getlong() /**
* return 3 bit
* @access private
* @return int
*/private
function getlong3() /**
* return packip address
** @access private
* @param string $ip
* @return string
*/private
function packip($ip) /**
* return read string
** @access private
* @param string $data
* @return string
*/private
function getstring($data = "")
return
$data;}/*
** return area info
** @access private
* @return string
*/private
function getarea()
return
$area;}/*
** return ip location info
* $r['contry'] $r['area']
* @access public
* @param string $ip
* @return array
*/public
function getlocation($ip='')
else
else }}
fseek($this->fp, $findip);
$location['beginip'] = long2ip($this->getlong());
$offset = $this->getlong3();
fseek($this->fp, $offset);
$location['endip'] = long2ip($this->getlong());
$byte = fread($this->fp, 1);
switch (ord($byte))
break;
case 2:
fseek($this->fp, $this->getlong3());
$location['country'] = $this->getstring();
fseek($this->fp, $offset + 8);
$location['area'] = $this->getarea();
break;
default:
$location['country'] = $this->getstring($byte);
$location['area'] = $this->getarea();
break;
}if ($location['country'] == " cz88.net")
if ($location['area'] == " cz88.net")
//change gbk to utf8
$location['country'] = mb_convert_encoding($location['country'], 'utf8','gbk');
$location['area'] = mb_convert_encoding($location['area'], 'utf8','gbk');
return
$location;}/*
** excute complete then close file handler**/
public
function __destruct()
$this->fp = 0;
}}
最近專案中用到了獲取使用者ip所在地的資訊,主要是為了從ip去判斷使用者所在的城市,現在的城市資訊基本上有分幾種
一種是用id編號來關聯城市的,還有使用縮寫的**來關聯城市的。
我們通過ip去獲取所在的使用者的 城市的詳細資訊,比如執行以下的結果得到的是 "福建省福州市 電信"
可以得到使用者的 省市及所使用的網路接入的資訊
var_dump(getaddress('202.101.98.54','福州'));
if ( preg_match('#來自:(.+)#ui', $res, $m) )
PHP獲取使用者IP位址
開發中時常需要獲取到來訪使用者的ip 位址,在php中主要通過超全域性變數 server裡邊的值來獲取,方法如下 獲取使用者ip位址 param integer type 返回型別 0 返回ip位址 1 返回ipv4位址數字 param boolean adv 是否進行高階模式獲取 有可能被偽裝 i...
獲取使用者的ip位址
程式處理中使用了方法 request.getremoteaddr 來獲取使用者的ip位址,但是這個ip位址容易被欺騙.並且在通過了apache,squid等反向 軟體就不能獲取到客戶端的真實ip位址了。或者內網服務就在域控機器上,由於安裝了域控,拓撲結構發生變化,這時這個方法獲取的ip都為伺服器自身...
nginx獲取使用者真實ip
我們有的介面牽扯到使用者資訊的變更,這些介面只允許接入方來調我們,所以我們在nginx上,關於這些介面都個ip白名單,裡面配上接入方的出口ip。下面是我們nginx的access裡的日誌。nginx取的我們這個 remote addr 當做真實ip了,而事實上,http x forwarded fo...