王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

Emlog显现评论者IP地理位置

教程演示

教程简介

为你的批评区到场 已批评者的IP地理位置显现 也不算什么有效的功用 想为你的博客加上这个小功用的 那就继承浏览哦 不想加的右上角X 不空话了 直接入手下手吧

第一步

你的模版/module.php增添以下代码 

<?php//批评IP显现          function convertip($ip) {            $dat_path = EMLOG_ROOT.'/ip.dat'; //*数据库途径*//        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 '体系失足!';               }               $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 '体系失足!';               }               $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));               fseek($fd, $DataSeek);               $ipData2 = fread($fd, 4);               if(strlen($ipData2) < 4) {                   fclose($fd);                   return '体系失足!';               }               $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 '体系失足!';               }               $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 '体系失足!';               }               $ipFlag = fread($fd, 1);               if($ipFlag == chr(2)) {                   $AddrSeek2 = fread($fd, 3);                   if(strlen($AddrSeek2) < 3) {                       fclose($fd);                       return '体系失足!';                   }                   $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 '体系失足!';                   }                   $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 = '未知';           }           $ipaddr = iconv('gbk', 'utf-8//IGNORE', $ipaddr);            if( $ipaddr != '  ' )               return $ipaddr;           else              $ipaddr = '批评者来自火星,没法或许其所在地!';               return $ipaddr;       }?>

第二步

下载ip.dat 放到你的程根目录哦 不是模板根目录看清楚了啊

下载地点https://www.tx47.cn/ip.dat

第三步

放在你要显现的批评区就行 包含子批评列表哦
<?php echo convertip($comment['ip']); ?>


下一篇: 14局域网手艺

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。