如何將IP地址轉換為純真IP數據庫,織夢文章
導讀:織夢文章織夢文章大家知道織夢CMS的后臺可以查詢發布文章和評論的IP地址,系統默認的IP地址庫卻不是現在最流行純真IP數據庫,那么如何將織夢系統的IP地址轉換為純真IP數據庫的dede網站模板織夢模板。
大家知道織夢CMS的后臺可以查詢發布文章和評論的IP地址,系統默認的IP地址庫卻不是現在最流行純真IP數據庫,那么如何將織夢系統的IP地址轉換為純真IP數據庫的函數呢?在網上搜索一下,還真的找到實現的方法。
來看看實現的方法吧。
1)函數編寫 本來是以前的版本,我是通過JS方式來調用的,但這種方式在有些頁面可能會不兼容。后來就升級了函數方式,但一直沒更新。好了,我們來看看具體的函數編寫方法: 在/include/extend.func.php 文件中的?>的上面加入以下函數代碼:
function convertip($ip){
$dat_path = DEDEDATA.'/ip/QQWry.dat';
if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$", $ip)){
return 'IP格式錯誤';
}
if(!$fd = @fopen($dat_path, 'rb')){
return '無法打開IP數據庫';
}
$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
$DataBegin = fread($fd, 4);
$DataEnd = fread($fd, 4);
$ipbegin = implode('', unpack('L', $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = 0;
$EndNum = $ipAllNum;
while($ip1num>$ipNum || $ip2num<$ipNum) {
$Middle= intval(($EndNum + $BeginNum) / 2);
fseek($fd, $ipbegin + 7 * $Middle);
$ipData1 = fread($fd, 4);
if(strlen($ipData1) < 4) {
fclose($fd);
return 'System Error';
}
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
if($ip1num > $ipNum) {
$EndNum = $Middle;
continue;
}
$DataSeek = fread($fd, 3);
if(strlen($DataSeek) < 3) {
fclose($fd);
return 'System Error';
}
$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
fseek($fd, $DataSeek);
$ipData2 = fread($fd, 4);
if(strlen($ipData2) < 4) {
fclose($fd);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
if($ip2num < $ipNum) {
if($Middle == $BeginNum) {
fclose($fd);
return 'Unknown';
}
$BeginNum = $Middle;
}
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(1)) {
$ipSeek = fread($fd, 3);
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-07-21 ,文章如何將IP地址轉換為純真IP數據庫,織夢文章主要講述轉換為,如何將,IP網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_32476.html
為你推薦與如何將IP地址轉換為純真IP數據庫,織夢文章相關的文章
