ip地址分两种ipv4和ipv6
ipv4地址在php代码中使用ip2long()函数实现将ip地址转化成10位整数
$ip = $_SERVER['REMOTE_ADDR'];
$ipnum = ip2long($ip);
echo $ipnum;
以整数存储,查询较快
将转化后的数字转换回ip地址使用long2ip()函数
echo long2ip($ipnum);
ipv6的地址不能使用ip2long(),需将php.ini文件中php_gmp.dll扩展打开之后重启服务
$ipv6 = '******';//自己的ipv6地址
$ip_n = inet_pton($ipv6);
$bits = 15; // 16 x 8 bit = 128bit
$ipv6long='';
while ($bits >= 0) {
$bin = sprintf("%08b",(ord($ip_n[$bits])));
$ipv6long = $bin.$ipv6long;
$bits--;
}
echo gmp_strval(gmp_init($ipv6long,2),10); // 结果为:**************
// 把转的数字反转义成ip
function long2ip_v6($dec) {
if (function_exists('gmp_init')) {
$bin = gmp_strval(gmp_init($dec, 10), 2);
} elseif (functi