PHP的ip2long有bug,请慎用_PHP教程
程序员文章站
2022-03-16 10:21:02
...
先看看下边这段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;
}
推荐阅读
-
PHP explode()函数的几个应用和implode()函数有什么区别,explodeimplode_PHP教程
-
用php写的serv-u的web申请账号的程序,很烂,供参考,修改和删除请自己做了!这是个初稿,请多_PHP教程
-
php笔记之:有规律大文件的读取与写入的分析_PHP教程
-
php全局变量有哪些(php的安装和配置教程)
-
php全局变量有哪些(php的安装和配置教程)
-
php中判断文件空目录是否有读写权限的函数代码_PHP教程
-
PHP解析html类库simple_html_dom的转码bug_PHP教程
-
php有哪些主流的框架请大家伙儿介绍些
-
PHP驱动MongoDB整数问题的BUG和策略_PHP教程
-
今天写的一个获取fckeditor插入文章的图片函数,请高手指点一二。_PHP教程