|
1、打开 require 目录下的 postfunc.php ,找到(这部分代码不知道PW还有没有在用,改改也无妨):
- function cvipfrom($ip,$txt=null){
- if ($ip==Unknown) return Unknown;
- $d_ip = explode(.,$ip);
- if ($txt!=0.txt) {
- $onlineip = $ip;
- $ip = substr($ip,strpos($ip,.)+1);
- $txt = $d_ip[0]..txt;
- $d_ip[0] = $d_ip[1]; $d_ip[1] = $d_ip[2]; $d_ip[2] = $d_ip[3]; $d_ip[3] = ;
- }
- if ($db = @fopen(R_P.ipdata/.$txt,rb)) {
- flock($db,LOCK_SH);
- $f = $l_d = ;
- $d = "\\n".fread($db,filesize(R_P.ipdata/.$txt));
- $wholeIP = $d_ip[0]...$d_ip[1]...$d_ip[2];
- $d_ip[3] && $wholeIP .= ..$d_ip[3];
- $wholeIP = str_replace(255,*,$wholeIP);
- if (($s = strpos($d,"\\n$wholeIP\\t"))!==false) {
- fseek($db,$s,SEEK_SET);
- $l_d = substr(fgets($db,100),0,-1); fclose($db);
- $ip_a = explode("\\t",$l_d);
- $ip_a[3] && $ip_a[2] .= .$ip_a[3];
- return $ip_a[2];
- }
- $ip = d_ip($d_ip);
- while (!$f && !$l_d && $wholeIP) {
- if (($s = strpos($d,"\\n".$wholeIP..))!==false) {
- list($l_d,$f) = s_ip($db,$s,$ip);
- if ($f) return $f;
- while ($l_d && preg_match("/^\\n$wholeIP/i","\\n".$l_d)!==false) {
- list($l_d,$f) = s_ip($db,$s,$ip,$l_d);
- if ($f) return $f;
- }
- }
- if (strpos($wholeIP,.)!==false) {
- $wholeIP = substr($wholeIP,0,strrpos(substr($wholeIP,0,-1),.));
- } else {
- if ($txt==0.txt) return Unknown;
- $wholeIP--;
- }
- }
- fclose($db);
- }
- if ($txt!=0.txt) {
- $f = cvipfrom($onlineip,0.txt);
- if (!$f) return Unknown;
- return $f;
- }
- return Unknown;
- }
复制代码
替换为:- function cvipfrom($ip,$txt=null){
- $type=0; //1:纯真IP库 0:珊瑚虫IP库
- $dat_path=$type?R_P.ipdata/QQWry.Dat:R_P.ipdata/CoralWry.Dat;
- $fd = @fopen($dat_path, rb);
- $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 未知;
- }
- $BeginNum = $Middle;
- }
- }
- $ipFlag = fread($fd, 1);
- if($ipFlag == chr(1)) {
- $ipSeek = fread($fd, 3);
- if(strlen($ipSeek) < 3) {
- fclose($fd);
- return System Error;
- }
- $ipSeek = implode(, unpack(L, $ipSeek.chr(0)));
- fseek($fd, $ipSeek);
- $ipFlag = fread($fd, 1);
- }
- if($ipFlag == chr(2)) {
- $AddrSeek = fread($fd, 3);
- if(strlen($AddrSeek) < 3) {
- fclose($fd);
- return System Error;
- }
- $ipFlag = fread($fd, 1);
- if($ipFlag == chr(2)) {
- $AddrSeek2 = fread($fd, 3);
- if(strlen($AddrSeek2) < 3) {
- fclose($fd);
- return System Error;
- }
- $AddrSeek2 = implode(, unpack(L, $AddrSeek2.chr(0)));
- fseek($fd, $AddrSeek2);
- } else {
- fseek($fd, -1, SEEK_CUR);
- }
- while(($char = fread($fd, 1)) != chr(0))
- $ipAddr2 .= $char;
- $AddrSeek = implode(, unpack(L, $AddrSeek.chr(0)));
- fseek($fd, $AddrSeek);
- while(($char = fread($fd, 1)) != chr(0))
- $ipAddr1 .= $char;
- } else {
- fseek($fd, -1, SEEK_CUR);
- while(($char = fread($fd, 1)) != chr(0))
- $ipAddr1 .= $char;
- $ipFlag = fread($fd, 1);
- if($ipFlag == chr(2)) {
- $AddrSeek2 = fread($fd, 3);
- if(strlen($AddrSeek2) < 3) {
- fclose($fd);
- return System Error;
- }
- $AddrSeek2 = implode(, unpack(L, $AddrSeek2.chr(0)));
- fseek($fd, $AddrSeek2);
- } else {
- fseek($fd, -1, SEEK_CUR);
- }
- while(($char = fread($fd, 1)) != chr(0)){
- $ipAddr2 .= $char;
- }
- }
- fclose($fd);
- if(preg_match(/http/i, $ipAddr2)) {
- $ipAddr2 = ;
- }
- $ipaddr = $ipAddr1.$ipAddr2;
- $ipaddr = preg_replace(/CZ88.Net/is, , $ipaddr);
- $ipaddr = preg_replace(/^s*/is, , $ipaddr);
- $ipaddr = preg_replace(/s*$/is, , $ipaddr);
- if(preg_match(/http/i, $ipaddr) || $ipaddr == ) {
- $ipaddr = 未知;
- }
- return $ipaddr;
- }
复制代码
2、打开 lib 目录下的 iptable.class.php ,找到:- function getIpFrom($ip) {
- $unknowIp = "Unknown";
- if ($ip == $unknowIp)
- return $unknowIp;
- $d_ip = explode ( ., $ip );
- $dir = R_P . "ipdata/";
- $txt = $dir . $d_ip [0] . .txt;
- $tag_1 = $d_ip [0];
- $tag_2 = $d_ip [1];
- if (! file_exists ( $txt )) {
- $tag_1 = 0;
- $tag_2 = $d_ip [0];
- $txt = $dir . 0.txt;
- } else {
- $d_ip [0] = $d_ip [1];
- $d_ip [1] = $d_ip [2];
- $d_ip [2] = $d_ip [3];
- $d_ip [3] = ;
- }
- $ipIndex = $this->getIPIndex ( $tag_1, $tag_2 );
- if (empty ( $ipIndex )) {
- return $unknowIp;
- } elseif ($ipIndex [0] == - 1) {
- $offset = 0;
- $offsize = filesize ( $txt );
- } else {
- $offset = $ipIndex [0];
- $offsize = $ipIndex [1] - $ipIndex [0];
- }
- if ($handle = @fopen ( $txt, rb )) {
- flock ( $handle, LOCK_SH );
- fseek ( $handle, $offset, SEEK_SET );
- $d = fread ( $handle, $offsize );
- $d .= fgets ( $handle, 100 );
- $wholeIP = $d_ip [0] . . . $d_ip [1] . . . $d_ip [2];
- $d_ip [3] && $wholeIP .= . . $d_ip [3];
- $wholeIP = str_replace ( 255, *, $wholeIP );
- if (($s = strpos ( $d, "$wholeIP\\t" )) !== false) {
- $s = $s + $offset;
- fseek ( $handle, $s, SEEK_SET );
- $l_d = substr ( fgets ( $handle, 100 ), 0, - 1 );
- $ip_a = explode ( "\\t", $l_d );
- $ip_a [3] && $ip_a [2] .= . $ip_a [3];
- fclose ( $handle );
- return $ip_a [2];
- }
- $ip = $this->d_ip( $d_ip );
- while ( ! $f && ! $l_d && $wholeIP ) {
- if (($s = strpos ( $d, "\\n" . $wholeIP . . )) !== false) {
- $s = $s + $offset;
- list ( $l_d, $f ) = $this->s_ip ( $handle, $s, $ip );
- if ($f)
- return $f;
- while ( $l_d && preg_match ( "/^\\n$wholeIP/i", "\\n" . $l_d ) !== false ) {
- list ( $l_d, $f ) = $this->s_ip ( $handle, $s, $ip, $l_d );
- if ($f)
- return $f;
- }
- }
- if (strpos ( $wholeIP, . ) !== false) {
- $wholeIP = substr ( $wholeIP, 0, strrpos ( substr ( $wholeIP, 0, - 1 ), . ) );
- } else {
- if ($txt == 0.txt)
- return Unknown;
- $wholeIP --;
- }
- }
- }
- return $unknowIp;
- }
复制代码
替换为:- function getIpFrom($ip){
- $type=0; //1:纯真IP库 0:珊瑚虫IP库
- $dat_path=$type?R_P.ipdata/QQWry.Dat:R_P.ipdata/CoralWry.Dat;
- $fd = @fopen($dat_path, rb);
- $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 未知;
- }
- $BeginNum = $Middle;
- }
- }
- $ipFlag = fread($fd, 1);
- if($ipFlag == chr(1)) {
- $ipSeek = fread($fd, 3);
- if(strlen($ipSeek) < 3) {
- fclose($fd);
- return System Error;
- }
- $ipSeek = implode(, unpack(L, $ipSeek.chr(0)));
- fseek($fd, $ipSeek);
- $ipFlag = fread($fd, 1);
- }
- if($ipFlag == chr(2)) {
- $AddrSeek = fread($fd, 3);
- if(strlen($AddrSeek) < 3) {
- fclose($fd);
- return System Error;
- }
- $ipFlag = fread($fd, 1);
- if($ipFlag == chr(2)) {
- $AddrSeek2 = fread($fd, 3);
- if(strlen($AddrSeek2) < 3) {
- fclose($fd);
- return System Error;
- }
- $AddrSeek2 = implode(, unpack(L, $AddrSeek2.chr(0)));
- fseek($fd, $AddrSeek2);
- } else {
- fseek($fd, -1, SEEK_CUR);
- }
- while(($char = fread($fd, 1)) != chr(0))
- $ipAddr2 .= $char;
- $AddrSeek = implode(, unpack(L, $AddrSeek.chr(0)));
- fseek($fd, $AddrSeek);
- while(($char = fread($fd, 1)) != chr(0))
- $ipAddr1 .= $char;
- } else {
- fseek($fd, -1, SEEK_CUR);
- while(($char = fread($fd, 1)) != chr(0))
- $ipAddr1 .= $char;
- $ipFlag = fread($fd, 1);
- if($ipFlag == chr(2)) {
- $AddrSeek2 = fread($fd, 3);
- if(strlen($AddrSeek2) < 3) {
- fclose($fd);
- return System Error;
- }
- $AddrSeek2 = implode(, unpack(L, $AddrSeek2.chr(0)));
- fseek($fd, $AddrSeek2);
- } else {
- fseek($fd, -1, SEEK_CUR);
- }
- while(($char = fread($fd, 1)) != chr(0)){
- $ipAddr2 .= $char;
- }
- }
- fclose($fd);
- if(preg_match(/http/i, $ipAddr2)) {
- $ipAddr2 = ;
- }
- $ipaddr = $ipAddr1.$ipAddr2;
- $ipaddr = preg_replace(/CZ88.Net/is, , $ipaddr);
- $ipaddr = preg_replace(/^s*/is, , $ipaddr);
- $ipaddr = preg_replace(/s*$/is, , $ipaddr);
- if(preg_match(/http/i, $ipaddr) || $ipaddr == ) {
- $ipaddr = 未知;
- }
- return $ipaddr;
- }
复制代码
备注:其中$type=0;为IP库配置,1为纯真IP库,0为珊瑚虫IP库,请根据需要配置好IP数据库,为了避免消耗太多资源,建议使用珊瑚虫IP数据库。
3、清空论坛 ipdata目录,再下载最新珊瑚虫或纯真IP数据库上传到 ipdata 目录(用什么IP数据库就下载上传什么IP数据库)。
下载后别忘记忘记解压出IP数据库再上传。珊瑚虫IP数据库文件名为:CoralWry.Dat,纯真IP数据库文件名为:QQWry.Dat。 |
-
-
CoralWry.rar
312 KB, 下载次数: 0, 下载积分: 体力 -1 点
最新珊瑚虫IP数据库官方下载
-
-
qqwry.rar
2.87 MB, 下载次数: 0, 下载积分: 体力 -1 点
最新纯真IP数据库官方下载
|