php 最新ip库文件夹,ecshop最新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';

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值