智慧型架構系列 PHP獲取使用者IP所在地的資訊

2021-09-06 03:58:08 字數 3268 閱讀 4641

//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...