純真IP庫PHP查詢

2021-07-09 17:25:13 字數 1616 閱讀 8502

class ip

/* 檢查ip的合法性 */

public function checkip($ip)

} return true;

} /* 讀取little-endian編碼的4個位元組轉化為長整型數 */

public function getlong4()

/* 讀取little-endian編碼的3個位元組轉化為長整型數 */

public function getlong3()

/* 獲取位置資訊 */

public function getinfo($data = "")

return $data;

} /* 獲取所屬地區 */

public function getarea()

return $area;

} /* 獲取位址 */

public function ip2addr($ip)

$ip = pack('n', intval(ip2long($ip)));

//二分查詢

$l = 0;

$r = $this->total;

while($l <= $r) elseelse

}} //查詢國家地區資訊

fseek($this->fh, $findip);

$location['beginip'] = long2ip($this->getlong4()); //使用者ip所在範圍的開始位址

$offset = $this->getlong3();

fseek($this->fh, $offset);

$location['endip'] = long2ip($this->getlong4()); //使用者ip所在範圍的結束位址

$byte = fread($this->fh, 1); //標誌位元組

switch (ord($byte))

break;

case 2: //國家資訊被重定向

fseek($this->fh, $this->getlong3());

$location['country'] = $this->getinfo();

fseek($this->fh, $offset + 8);

$location['area'] = $this->getarea();

break;

default: //國家資訊沒有被重定向

$location['country'] = $this->getinfo($byte);

$location['area'] = $this->getarea();

break;

} //gb2312 to utf-8(去除無資訊時顯示的cz88.net)

foreach ($location as $k => $v)

return $location;

} //析構函式

function __destruct()

}/* 呼叫例項 */

$ip = new ip();

$addr = $ip -> ip2addr('117.136.30.178');

print_r($addr);

用Python指令碼查詢純真IP庫

usr bin env python coding utf 8 用python指令碼查詢純真ip庫 qqwry.dat的格式如下 檔案頭 8位元組 記錄區 不定長 索引區 大小由檔案頭決定 檔案頭 4位元組開始索引偏移值 4位元組結尾索引偏移值 對於國家記錄,可以有三種表示方式 字串形式 ip記錄第...

使用mysql查詢純真IP庫的方法

為了把點格式的ip位址轉換成整數表示的ip位址,建立如下mysql函式 create function ip calc ip varchar 20 returns bigint 20 return substring index ip,1 256 256 256 substring index su...

解析純真IP位址庫

一周以來,一直在做 ip位址庫的解析。從調研到編碼到優化,大概花了有七八天的時間。感覺很好玩。總結一下整個做的過程。1 關於ip 位址庫的解析方式 目前主要的解析方式有兩種 通過api,或通過ip資料庫。ip資料庫方式相對來講複雜一點,需要有完善的資料庫,還要建立相應的查詢服務。優缺點則跟api方式...