自由屋推书网—热门的小说推荐平台!

你的位置: 首页 > wordpress分享

让wordpress留言者显示IP地址位置

2015-12-04 18:06:15

让wordpress显示评论用户的IP地址。网上有很多类似的文章,本文亲测以后整理一下,发出来!

如果让留言者用户IP地址显示对应的物理地址呢?首先你得需要一个IP数据库!我们本文用到的是纯真数据库,纯真数据库下载地址:http://yunpan.cn/c3FK5DEJNeNaE 访问密码 8a7c

更新日期:2015-11-30 21:11:05

总IP记录条数:446020

数据库大小:8.83 MB

首先把纯真数据库下载,上传至你的当前主题目录下。然后在当前主题functions.php文件中添加一下代码,引用数据库!



  1. //显示IP地址   

  2. function convertip($ip) {      

  3.     $dat_path = TEMPLATEPATH.'/qqwry.Dat';      

  4.     if(!$fd = @fopen($dat_path, 'rb')){      

  5.         return 'IP数据库文件不存在或者禁止访问或者已经被删除!';      

  6.     }      

  7.     $ip = explode('.'$ip);      

  8.     $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];      

  9.     $DataBegin = fread($fd, 4);      

  10.     $DataEnd = fread($fd, 4);      

  11.     $ipbegin = implode('', unpack('L', $DataBegin));      

  12.     if($ipbegin < 0) $ipbegin += pow(2, 32);      

  13.     $ipend = implode('', unpack('L', $DataEnd));      

  14.     if($ipend < 0) $ipend += pow(2, 32);      

  15.     $ipAllNum = ($ipend - $ipbegin) / 7 + 1;      

  16.     $BeginNum = 0;      

  17.     $EndNum = $ipAllNum;      

  18.     while($ip1num>$ipNum || $ip2num<$ipNum) {      

  19.         $Middleintval(($EndNum + $BeginNum) / 2);      

  20.         fseek($fd$ipbegin + 7 * $Middle);      

  21.         $ipData1 = fread($fd, 4);      

  22.         if(strlen($ipData1) < 4) {      

  23.             fclose($fd);      

  24.             return '系统出错!';      

  25.         }      

  26.         $ip1num = implode('', unpack('L', $ipData1));      

  27.         if($ip1num < 0) $ip1num += pow(2, 32);      

  28.         if($ip1num > $ipNum) {      

  29.             $EndNum = $Middle;      

  30.             continue;      

  31.         }      

  32.         $DataSeek = fread($fd, 3);      

  33.         if(strlen($DataSeek) < 3) {      

  34.             fclose($fd);      

  35.             return '系统出错!';      

  36.         }      

  37.         $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));      

  38.         fseek($fd$DataSeek);      

  39.         $ipData2 = fread($fd, 4);      

  40.         if(strlen($ipData2) < 4) {      

  41.             fclose($fd);      

  42.             return '系统出错!';      

  43.         }      

  44.         $ip2num = implode('', unpack('L', $ipData2));      

  45.         if($ip2num < 0) $ip2num += pow(2, 32);      

  46.         if($ip2num < $ipNum) {      

  47.             if($Middle == $BeginNum) {      

  48.                 fclose($fd);      

  49.                 return '未知';      

  50.             }      

  51.             $BeginNum = $Middle;      

  52.         }      

  53.     }      

  54.     $ipFlag = fread($fd, 1);      

  55.     if($ipFlag == chr(1)) {      

  56.         $ipSeek = fread($fd, 3);      

  57.         if(strlen($ipSeek) < 3) {      

  58.             fclose($fd);      

  59.             return '系统出错!';      

  60.         }      

  61.         $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));      

  62.         fseek($fd$ipSeek);      

  63.         $ipFlag = fread($fd, 1);      

  64.     }      

  65.     if($ipFlag == chr(2)) {      

  66.         $AddrSeek = fread($fd, 3);      

  67.         if(strlen($AddrSeek) < 3) {      

  68.             fclose($fd);      

  69.             return '系统出错!';      

  70.         }      

  71.         $ipFlag = fread($fd, 1);      

  72.         if($ipFlag == chr(2)) {      

  73.             $AddrSeek2 = fread($fd, 3);      

  74.             if(strlen($AddrSeek2) < 3) {      

  75.                 fclose($fd);      

  76.                 return '系统出错!';      

  77.             }      

  78.             $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));      

  79.             fseek($fd$AddrSeek2);      

  80.         } else {      

  81.             fseek($fd, -1, SEEK_CUR);      

  82.         }      

  83.         while(($char = fread($fd, 1)) != chr(0))      

  84.         $ipAddr2 .= $char;      

  85.         $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));      

  86.         fseek($fd$AddrSeek);      

  87.         while(($char = fread($fd, 1)) != chr(0))      

  88.         $ipAddr1 .= $char;      

  89.     } else {      

  90.         fseek($fd, -1, SEEK_CUR);      

  91.         while(($char = fread($fd, 1)) != chr(0))      

  92.         $ipAddr1 .= $char;      

  93.     

  94.         $ipFlag = fread($fd, 1);      

  95.         if($ipFlag == chr(2)) {      

  96.             $AddrSeek2 = fread($fd, 3);      

  97.             if(strlen($AddrSeek2) < 3) {      

  98.                 fclose($fd);      

  99.                 return '系统出错!';      

  100.             }      

  101.             $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));      

  102.             fseek($fd$AddrSeek2);      

  103.         } else {      

  104.             fseek($fd, -1, SEEK_CUR);      

  105.         }      

  106.         while(($char = fread($fd, 1)) != chr(0)){      

  107.             $ipAddr2 .= $char;      

  108.         }      

  109.     }      

  110.     fclose($fd);      

  111.     if(preg_match('/http/i', $ipAddr2)) {      

  112.         $ipAddr2 = '';      

  113.     }      

  114.     $ipaddr = "$ipAddr1 $ipAddr2";      

  115.     $ipaddr = preg_replace('/CZ88.Net/is', ''$ipaddr);      

  116.     $ipaddr = preg_replace('/^s*/is', ''$ipaddr);      

  117.     $ipaddr = preg_replace('/s*$/is', ''$ipaddr);      

  118.     if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {      

  119.         $ipaddr = '未知';      

  120.     }      

  121.     $ipaddr = iconv('gbk', 'utf-8//IGNORE', $ipaddr);       

  122.     if$ipaddr != '  ' )      

  123.         return $ipaddr;      

  124.     else     

  125.         $ipaddr = '评论者来自火星,无法或者其所在地!';      

  126.         return $ipaddr;      

  127. }  

添加以上代码之后,在你的评论内容引用的地方,有些主题是在functions.php中,有些主题是在comments.php中。搜索以下代码


  1. <?php comment_date('Y-m-d') ?>  

在代码后面添加以下代码



  1. <?php echo convertip(get_comment_author_ip()); ?>  

保存,然后去前台刷新一下,看看是不是显示留言者的物理地址了!

编辑推荐

热门小说