×
  官方微博: 腾讯   新浪
ECSHOP模板 
食品保健 家居化妆 家电数码 综合通用 珠宝配饰
VIP免费模板 
家居化妆 综合通用 服装饰品 食品保健 家电数码
ECSHOP插件 
ECSHOP插件 SHOPEX插件
EC教程中心
安装使用网店运营
首页 > ECSHOP教程 > ecshop最新纯真网络IP库和升级补丁

帮助目录

有问必答

您可以加入我们的官方QQ群。

加入官方QQ群

可以将问题或建议反馈给我们。

提交在线客服

猜您感兴趣

ecshop最新纯真网络IP库和升级补丁

网站开发中心/ 2015-02-25/ 关注人气:2880

ECSHOP系统官方更新了多个版本,但是针对IP库一直没更新,版本为20071024,相当鸡肋,导至很多地区IP无法显示或显示不正确,本升级程序读取纯真网络IP数据库,独有高压缩比和快速检索算法。

 

 

升级指南

 

一、下载纯真IP数据库,地址一:官方下载,地址二:本站下载(注:本站下载后,解压后直接上传到ECSHOP根目录即可)纯真官网下载的请重命名为ipdata.dat,覆盖至/includes/codetable/。

 

二、编辑/includes/lib_base.php,将函数ecs_geoip($ip)替换为

 

/**

 * 获取IP对应的地理位置 

 * @param   string      $ip        字符串

 * @return  string

 */

function ecs_geoip($ip)

{

$return = '';

if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip))

{

$iparray = explode('.', $ip);

 

if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31)))

{

$return = 'LAN';

elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255)

{

$return = 'Invalid IP Address';

}

else

{

$tinyipfile = ROOT_PATH . 'includes/codetable/ipdata.dat'; //ipdata.dat-纯真网络IP库

 

if(@file_exists($tinyipfile))

{

$return = convertip_tiny($ip, $tinyipfile);

}

}

}

return $return;

}

 

function convertip_tiny($ip, $ipdatafile)

{

 

static $fp = NULL, $offset = array(), $index = NULL;

 

$ipdot = explode('.', $ip);

$ip    = pack('N', ip2long($ip));

 

$ipdot[0] = (int)$ipdot[0];

$ipdot[1] = (int)$ipdot[1];

 

if($fp === NULL && $fp = @fopen($ipdatafile, 'rb'))

{

$offset = @unpack('Nlen', @fread($fp, 4));

$index  = @fread($fp, $offset['len'] - 4);

}

elseif($fp == FALSE)

{

return  'Invalid IP data file';

}

 

$length = $offset['len'] - 1028;

$start  = @unpack('Vlen', $index[$ipdot[0] * 4] . $index[$ipdot[0] * 4 + 1] . $index[$ipdot[0] * 4 + 2] . $index[$ipdot[0] * 4 + 3]);

 

for ($start = $start['len'] * 8 + 1024; $start < $length; $start += 8)

{

if ($index{$start} . $index{$start + 1} . $index{$start + 2} . $index{$start + 3} >= $ip)

{

$index_offset = @unpack('Vlen', $index{$start + 4} . $index{$start + 5} . $index{$start + 6} . "\x0");

$index_length = @unpack('Clen', $index{$start + 7});

break;

}

}

 

@fseek($fp, $offset['len'] + $index_offset['len'] - 1024);

if($index_length['len'])

{

return @fread($fp, $index_length['len']);

}

else

{

return 'Unknown';

}

}

 

订阅本站、注册会员可免费获取技术支持,尊重劳动成果,转载请注明ECSHOP网站开发中心

分享到:
下一篇:ecshop2.73系统整合Discuz! X3论坛详细图文教程
上一篇:ECSHOP首页调用市场价格的详细的方法