色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

PHP基于ip2long實現IP轉換整形

瀏覽:57日期:2022-09-08 14:38:03

如何將四個字段以點分開的IP網絡址協議地址轉換成整數呢?PHP里有這么一個函數ip2long.比如

<?phpecho ip2long('10.2.1.3');?>

我們將得到

167903491

這是如何計算的,目前我知道有兩個算法。其一

<?phpfunction ip2int($ip){ //我們先把ip分為四段,$ip1,$ip2,$ip3,$ip4 list($ip1,$ip2,$ip3,$ip4)=explode('.',$ip); //然后第一段乘以256的三次方,第二段乘以256的平方,第三段乘以256 //這即是我們得到的值 return $ip1*pow(256,3)+$ip2*pow(256,2)+$ip3*256+$ip4;}?>

其二,用位運算

<?phpfunction ip2int($ip){ list($ip1,$ip2,$ip3,$ip4)=explode('.',$ip); return ($ip1<<24)|($ip2<<16)|($ip3<<8)|($ip4);}?>

我們會發現,有些ip轉化成整數后,是負的,這是因為得到的結果是有符號整型,最大值是2147483647.要把它轉化為無符號的,可以用sprintf('%u',ip2long($ip);

就能轉換為正整數。而且得到的結果用long2ip也可以正常轉換回原來的ip地址。也可以用ip2long來驗證一個ip是否是有效的,如

<?phpfunction chk_ip($ip){ if(ip2long($ip)=='-1') { return false; } return true;}//應用var_export(chk_ip('10.111.149.42'));var_export(chk_ip('10.111.256.42'));?>

將輸出true和false

把ip數據保存在數據庫(MySQL)中時候,我們習慣用ip2long函數生成整型,然后存放在一個int(11)類型的字段中,但是,在不同的系統平臺上,ip2long函數得到的值是不同的,因此可能造成在從數據庫中讀出數據,用long2ip得到ip的時候產生錯誤,說一下我們碰到的情況:

我們用一個int(11)類型(范圍-2147483648 - 2147483647)來保存把一個ip地址用ip2long處理得到的結果,例如ip是’202.105.77.179′,那么在32位機器上得到的結果是:-899068493,而在64位機器上卻得到3395898803.然后把它寫入數據庫,由于超過int(11)的范圍,因此64位機器上的結果被保存為int(11)的最大值:2147483647.于是在從數據庫中取出的時候,便得到了錯誤的結果,會得到”127.255.255.255″這個ip地址.

解決的辦法很多,比如可以用mysql的函數:INET_ATON和INET_NTOA來處理ip地址;或者把保存ip地址的字段改為bigint類型,這樣在64位機器上雖然保存的是3395898803,使用long2ip函數仍能得到正確的結果.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: PHP
相關文章:
主站蜘蛛池模板: 成人在线免费视频 | 激情欧美一区二区三区 | 国产免费一区二区三区在线 | 久久国产美女免费观看精品 | 亚洲欧美成人综合在线 | 99久久精品免费精品国产 | 加勒比毛片 | 亚洲国产精品久久久天堂 | 九九精品久久久久久噜噜 | 成人首页 | 午夜精品免费 | 亚洲综合黄色 | 欧美日韩中文字幕在线视频 | 步兵精品手机在线观看 | 国产高清在线精品二区一 | 成人国产一区二区三区 | 毛片免费视频网站 | 欧美一级专区免费大片野外交 | 玖玖香蕉视频 | 亚洲mm8成为人影院 亚洲m男在线中文字幕 | 毛茸茸年轻成熟亚洲人 | 亚洲综合一区二区精品久久 | 日本三级成人中文字幕乱码 | 末成年娇小性色xxxxx | 波多野结衣一区二区三区在线观看 | 国产成人cao在线 | 波多野结衣视频在线观看 | 国产精品7m凸凹视频分类大全 | 午夜性刺激免费视频观看不卡专区 | 久久亚洲精品国产精品777777 | 欧美人在线 | 99在线精品免费视频 | 国产欧美一区二区三区在线 | 久久精品99精品免费观看 | 国内黄色一级精品 | 成人公开视频 | 欧美 日韩 国产 在线 | 国模肉肉人体大尺度啪啪 | 国产日产欧产精品精品推荐在线 | 国产成人久久精品推最新 | 欧美另类精品一区二区三区 |