日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码

發布時間:2024/9/19 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

* 純真 IP 數據庫查詢

*

* 參考資料:

* - 純真 IP 數據庫 http://www.cz88.net/ip/

* - PHP 讀取純真IP地址數據庫 http://ju.outofmemory.cn/entry/42500

* - 純真 IP 數據庫自動更新文件教程 https://www.22vd.com/40035.html

* - IpLocation https://github.com/nauxliu/IpLocation/

* - 基于本地數據庫的 IP 地址查詢 PHP 源碼 https://mkblog.cn/?p=1951

*

* 使用示例:

* $ip = new IPQuery();

* $addr = $ip->query('IP地址');

* print_r($addr);*/

classIPQuery {private $fh; //IP數據庫文件句柄

private $first; //第一條索引

private $last; //最后一條索引

private $total; //索引總數

private $dbFile = __DIR__ . DIRECTORY_SEPARATOR . 'qqwry.dat'; //純真 IP 數據庫文件存放路徑

private $dbExpires = 86400 * 10; //數據庫文件有效期(10天)如無需自動更新 IP 數據庫,請將此值改為 0

// 構造函數

function__construct() {//IP 數據庫文件不存在或已過期,則自動獲取

if(!file_exists($this->dbFile) || ($this->dbExpires && ((time() - filemtime($this->dbFile)) > $this->dbExpires))) {$this->update();

}

}//忽略超時

private functionignore_timeout() {

@ignore_user_abort(true);

@ini_set('max_execution_time', 48 * 60 * 60);

@set_time_limit(48 * 60 * 60); //set_time_limit(0) 2day

@ini_set('memory_limit', '4000M');//4G;

}//讀取little-endian編碼的4個字節轉化為長整型數

private functiongetLong4() {$result = unpack('Vlong', fread($this->fh, 4));return $result['long'];

}//讀取little-endian編碼的3個字節轉化為長整型數

private functiongetLong3() {$result = unpack('Vlong', fread($this->fh, 3).chr(0));return $result['long'];

}//查詢位置信息

private function getPos($data = '') {$char = fread($this->fh, 1);while (ord($char) != 0) { //地區信息以 0 結束

$data .= $char;$char = fread($this->fh, 1);

}return $data;

}//查詢運營商

private functiongetISP() {$byte = fread($this->fh, 1); //標志字節

switch (ord($byte)) {case 0: $area = ''; break; //沒有相關信息

case 1: //被重定向

fseek($this->fh, $this->getLong3());$area = $this->getPos(); break;case 2: //被重定向

fseek($this->fh, $this->getLong3());$area = $this->getPos(); break;default: $area = $this->getPos($byte); break; //沒有被重定向

}return $area;

}//檢查 IP 格式是否正確

public function checkIp($ip) {$arr = explode('.', $ip);if(count($arr) != 4) return false;for ($i = 0; $i < 4; $i++) {if ($arr[$i] < '0' || $arr[$i] > '255') {return false;

}

}return true;

}//查詢 IP 地址

public function query($ip) {if(!$this->checkIp($ip)) {return false;

}$this->fh = fopen($this->dbFile, 'rb');$this->first = $this->getLong4();$this->last = $this->getLong4();$this->total = ($this->last - $this->first) / 7; //每條索引7字節

$ip = pack('N', intval(ip2long($ip)));//二分查找 IP 位置

$l = 0;$r = $this->total;while($l <= $r) {$m = floor(($l + $r) / 2); //計算中間索引

fseek($this->fh, $this->first + $m * 7);$beginip = strrev(fread($this->fh, 4)); //中間索引的開始IP地址

fseek($this->fh, $this->getLong3());$endip = strrev(fread($this->fh, 4)); //中間索引的結束IP地址

if ($ip < $beginip) { //用戶的IP小于中間索引的開始IP地址時

$r = $m - 1;

}else{if ($ip > $endip) { //用戶的IP大于中間索引的結束IP地址時

$l = $m + 1;

}else { //用戶IP在中間索引的IP范圍內時

$findip = $this->first + $m * 7;break;

}

}

}//查找 IP 地址段

fseek($this->fh, $findip);$location['beginip'] = long2ip($this->getLong4()); //用戶IP所在范圍的開始地址

$offset = $this->getlong3();fseek($this->fh, $offset);$location['endip'] = long2ip($this->getLong4()); //用戶IP所在范圍的結束地址

// 查找 IP 信息

$byte = fread($this->fh, 1); //標志字節

switch (ord($byte)) {case 1: //都被重定向

$countryOffset = $this->getLong3(); //重定向地址

fseek($this->fh, $countryOffset);$byte = fread($this->fh, 1); //標志字節

switch (ord($byte)) {case 2: //信息被二次重定向

fseek($this->fh, $this->getLong3());$location['pos'] = $this->getPos();fseek($this->fh, $countryOffset + 4);$location['isp'] = $this->getISP();break;default: //信息沒有被二次重定向

$location['pos'] = $this->getPos($byte);$location['isp'] = $this->getISP();break;

}break;case 2: //信息被重定向

fseek($this->fh, $this->getLong3());$location['pos'] = $this->getPos();fseek($this->fh, $offset + 8);$location['isp'] = $this->getISP();break;default: //信息沒有被重定向

$location['pos'] = $this->getPos($byte);$location['isp'] = $this->getISP();break;

}//信息轉碼處理

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

//$location[$k] = iconv('gb2312','utf-8',$v); //---這里一定要注意字符集$location[$k] = iconv('GBK', 'utf-8', $v);$location[$k] = preg_replace(array('/^.*CZ88\.NET.*$/isU', '/^.*純真.*$/isU', '/^.*日IP數據/'), '', $location[$k]);$location[$k] = htmlspecialchars($location[$k]);

}return $location;

}//更新數據庫 https://www.22vd.com/40035.html

public functionupdate() {$this->ignore_timeout();$copywrite = file_get_contents('http://update.cz88.net/ip/copywrite.rar');$qqwry = file_get_contents('http://update.cz88.net/ip/qqwry.rar');$key = unpack('V6', $copywrite)[6];for($i = 0; $i < 0x200; $i++) {$key *= 0x805;$key ++;$key = $key & 0xFF;$qqwry[$i] = chr(ord($qqwry[$i]) ^ $key);

}$qqwry = gzuncompress($qqwry);file_put_contents($this->dbFile, $qqwry);

}//析構函數

function__destruct() {if($this->fh) {fclose($this->fh);

}$this->fp = null;

}

}

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 综合激情婷婷 | 国产偷v| 日韩av综合 | 欧美一二三区视频 | 国产成人在线影院 | 麻豆蜜臀 | 亚洲成年人专区 | 国产欧美中文字幕 | 亚洲欧美日韩高清 | 欧美无遮挡高潮床戏 | 日韩欧美在线一区 | 久久久久国产精品熟女影院 | 黄色一级片在线播放 | 久久密 | 亚洲老妇色熟女老太 | 日韩视频久久 | 亚洲AV成人无码一二三区在线 | 人人看人人做 | 亚洲乱仑| 亚洲老女人| 日本欧美不卡 | 婷婷五月情| 日韩中文字幕不卡 | 亚洲精品电影 | 激情中文网 | 国产资源一区 | 亚洲无限看 | 亚洲一区视频 | 午夜激情欧美 | 特黄三级 | 国产真实的和子乱拍在线观看 | 五月丁香啪啪 | 黄色片aa| 国产欧美一区二区三区视频 | 性色av免费 | www.污视频 | 欧洲黄色片 | 337p亚洲精品色噜噜狠狠 | 国产高清www| 亚洲美女www午夜 | 亚洲欧美日韩精品永久在线 | 91色视频在线观看 | 伊人天天干 | 亚洲欧美www | 亚洲电影一区二区三区 | 日韩欧美卡一卡二 | 日韩激情啪啪 | 亚洲区久久 | jizz中国女人 | 日本在线一区二区 | √资源天堂中文在线视频 | 男女啪啪网站 | 日中文字幕 | 色黄大色黄女片免费中国 | 男人添女人囗交视频 | 午夜成年人 | 亚洲天堂av网 | 国产色片在线观看 | 亚色视频在线 | 欧美在线www | 在线免费视频 | 大吊一区二区三区 | 日韩一级久久 | 国产精品久久久久蜜臀 | 国产精品污网站 | 亚洲国产日韩在线一区 | 青青免费在线视频 | 97超碰碰| 亚洲一区免费在线 | 日韩女优一区 | 国外成人免费视频 | 国产亚洲综合在线 | 性爱视频日本 | 涩涩av| 在线www色| 精精国产xxxx视频在线 | 国产日韩欧美亚洲 | 亚洲男女一区二区三区 | 成人永久视频 | 青青草免费公开视频 | 久久九九久久九九 | 欧美一区二区三区免费观看 | 伊人激情在线 | 日本黄色免费 | 一级免费黄色片 | 床戏高潮做进去大尺度视频 | 国产精品久久久久免费 | 国产美女无遮挡永久免费观看 | 久草a视频 | av黄色片 | 白白色免费视频 | 成人免费毛片aaaaaa片 | 永久免费看mv网站入口78 | 国语对白对话在线观看 | 久色99| 免费观看一区二区三区视频 | 日韩成人综合网 | 国产欧美视频一区二区三区 | 在线观看免费视频一区二区 |