>  기사  >  백엔드 개발  >  PHP的ip2long有bug,请慎用_PHP教程

PHP的ip2long有bug,请慎用_PHP教程

WBOY
WBOY원래의
2016-07-13 17:38:311221검색

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

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

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

view plaincopy to clipboardprint?
echo ip2long(58.99.11.1),"
";   //输出是 979569409 
echo ip2long(58.99.011.1),"
";  //输出是 979568897 
echo ip2long(058.99.11.1),"
";  //输出是空 
?> 
echo ip2long(58.99.11.1),"
";   //输出是 979569409
echo ip2long(58.99.011.1),"
";  //输出是 979568897
echo ip2long(058.99.11.1),"
";  //输出是空
?>

 

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

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

view plaincopy to clipboardprint?
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; 
}

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/486473.htmlTechArticle先看看下边这段PHP代码。这段使用ip2long函数,对同一个IP进行转换。当然,也有人认为58.99.011.1和058.99.011.1算不上合法的 IP,那就Return,此...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.