Emlog显示评论者IP地理位置

emlog教程 2020-08-25

  为你的评论区加入 已评论者的IP地理位置显示 也不算什么有用的功能 想为你的博客加上这个小功能的 那就继续阅读哦 不想加的右上角X 不废话了 直接开始吧

  你的模版/module.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

  $ipend = implode(”, unpack(‘L’, $DataEnd));

  if($ipend

  $ipAllNum = ($ipend – $ipbegin) / 7 + 1;

  $BeginNum = 0;

  $EndNum = $ipAllNum;

  while($ip1num>$ipNum || $ip2num

  $Middle= intval(($EndNum + $BeginNum) / 2);

  fseek($fd, $ipbegin + 7 * $Middle);

  $ipData1 = fread($fd, 4);

  if(strlen($ipData1)

  fclose($fd);

  return ‘系统出错!’;

  }

  $ip1num = implode(”, unpack(‘L’, $ipData1));

  if($ip1num

  if($ip1num > $ipNum) {

  $EndNum = $Middle;

  continue;

  }

  $DataSeek = fread($fd, 3);

  if(strlen($DataSeek)

  fclose($fd);

  return ‘系统出错!’;

  }

  $DataSeek = implode(”, unpack(‘L’, $DataSeek.chr(0)));

  fseek($fd, $DataSeek);

  $ipData2 = fread($fd, 4);

  if(strlen($ipData2)

  fclose($fd);

  return ‘系统出错!’;

  }

  $ip2num = implode(”, unpack(‘L’, $ipData2));

  if($ip2num

  if($ip2num

  if($Middle == $BeginNum) {

  fclose($fd);

  return ‘未知’;

  }

  $BeginNum = $Middle;

  }

  }

  $ipFlag = fread($fd, 1);

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

  $ipSeek = fread($fd, 3);

  if(strlen($ipSeek)

  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)

  fclose($fd);

  return ‘系统出错!’;

  }

  $ipFlag = fread($fd, 1);

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

  $AddrSeek2 = fread($fd, 3);

  if(strlen($AddrSeek2)

  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)

  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

  放在你要显示的评论区就行 包括子评论列表哦

  

评论 (0)
    Top