成都公司:成都市成華區(qū)建設南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓
請慎用PHP的ip2long有bug
先看看下邊這段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'),"
"; //輸出是 979569409
echo ip2long('58.99.011.1'),"
"; //輸出是 979568897
echo ip2long('058.99.11.1'),"
"; //輸出是空
?>
<?php
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轉換的后果都不準確。
處理方法,運用寫本人的函數:
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;
}