PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 开发技巧 >> 

PHP的ip2long有bug,请慎用

PHP的ip2long有bug,请慎用

来源:phpchina.com  作者:  发布时间:2009-10-09
先看看下边这段PHP代码。这段使用ip2long函数,对同一个IP进行

先看看下边这段PHP代码。这段使用ip2long函数,对同一个IP进行转换。当然,也有人认为58.99.011.1和058.99.011.1算不上合法的

IP,那就Return,此文对你没有帮助。

为什么要使用带前导零的ip:为了在数据库中查询,这个可以在IP库中定位到ip所对应的位置信息。虽然没有整型的IP查询效率高,但毕竟直观啊。

code:

以下为引用的内容:
<?php 
echo ip2long('58.99.11.1'),"<br/>";   //输出是 979569409 
echo ip2long('58.99.011.1'),"<br/>";  //输出是 979568897 
echo ip2long('058.99.11.1'),"<br/>";  //输出是空 
?> 
<?php
echo ip2long('58.99.11.1'),"<br/>";   //输出是 979569409
echo ip2long('58.99.011.1'),"<br/>";  //输出是 979568897
echo ip2long('058.99.11.1'),"<br/>";  //输出是空
?>

在PHP 4.x,5.x中, 有前导零的ip转换的结果都不正确。

解决办法,使用写自己的函数:

code:

以下为引用的内容:
function myip2long($ip){ 
   $ip_arr = split('\.',$ip); 
   $iplong = (16777216 * intval($ip_arr[0])) + (65536 * intval($ip_arr[1])) + (256 * intval($ip_arr[2])) + intval($ip_arr[3]); 
   return $iplong; 
}


延伸阅读:
16%开放源码项目bug重重
php版读取纯真ip数据库源码
查询吧php版读取纯真ip数据库源码
Tags: ip2long   bug   php   ip  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号