PHP的ip2long有bug,慎用

來源:互聯網
上載者:User

先看看下邊這段PHP代碼。這段使用ip2long函數,對同一個IP進行轉換。當然,也有人認為58.99.011.1和058.99.011.1算不上合法的

IP,那就Return,此文對你沒有協助。

 

為什麼要使用帶前置字元為零的ip:為了在資料庫中查詢,這個可以在IP庫中定位到ip所對應的位置資訊。雖然沒有整型的IP查詢效率高,但畢竟直觀啊。

 

<?php<br />echo ip2long('58.99.11.1'),"<br/>"; //輸出是 979569409<br />echo ip2long('58.99.011.1'),"<br/>"; //輸出是 979568897<br />echo ip2long('058.99.11.1'),"<br/>"; //輸出是空<br />?> </p><p>

 

在PHP 4.x,5.x中, 有前置字元為零的ip轉換的結果都不正確。

 

解決辦法,使用寫自己的函數:

 

function myip2long($ip){<br /> $ip_arr = split('/.',$ip);<br /> $iplong = (16777216 * intval($ip_arr[0])) + (65536 * intval($ip_arr[1])) + (256 * intval($ip_arr[2])) + intval($ip_arr[3]);<br /> return $iplong;<br />}

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.