欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php IP轉(zhuǎn)換整形(ip2long)的詳解

 更新時(shí)間:2013年06月06日 09:46:25   作者:  
本篇文章是對(duì)php中IP轉(zhuǎn)換整形(ip2long)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

如何將四個(gè)字段以點(diǎn)分開(kāi)的IP網(wǎng)絡(luò)址協(xié)議地址轉(zhuǎn)換成整數(shù)呢?PHP里有這么一個(gè)函數(shù)ip2long.比如

復(fù)制代碼 代碼如下:

<?php
echo ip2long("10.2.1.3");
?>

我們將得到
167903491

這是如何計(jì)算的,目前我知道有兩個(gè)算法。其一
復(fù)制代碼 代碼如下:

<?php
function 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;
}
?>

其二,用位運(yùn)算
復(fù)制代碼 代碼如下:

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

我們會(huì)發(fā)現(xiàn),有些ip轉(zhuǎn)化成整數(shù)后,是負(fù)的,這是因?yàn)榈玫降慕Y(jié)果是有符號(hào)整型,最大值是2147483647.要把它轉(zhuǎn)化為無(wú)符號(hào)的,可以用
sprintf("%u",ip2long($ip);

就能轉(zhuǎn)換為正整數(shù)。而且得到的結(jié)果用long2ip也可以正常轉(zhuǎn)換回原來(lái)的ip地址。也可以用ip2long來(lái)驗(yàn)證一個(gè)ip是否是有效的,如

復(fù)制代碼 代碼如下:

<?php
function chk_ip($ip){
   if(ip2long($ip)=="-1") {
      return false;
    }
    returntrue;
}
//應(yīng)用
var_export(chk_ip("10.111.149.42"));
var_export(chk_ip("10.111.256.42"));
?>

將輸出true和false

把ip數(shù)據(jù)保存在數(shù)據(jù)庫(kù)(MySQL)中時(shí)候,我們習(xí)慣用ip2long函數(shù)生成整型,然后存放在一個(gè)int(11)類(lèi)型的字段中,但是,在不同的系統(tǒng)平臺(tái)上,ip2long函數(shù)得到的值是不同的,因此可能造成在從數(shù)據(jù)庫(kù)中讀出數(shù)據(jù),用long2ip得到ip的時(shí)候產(chǎn)生錯(cuò)誤,說(shuō)一下我們碰到的情況:
我們用一個(gè)int(11)類(lèi)型(范圍-2147483648 -2147483647)來(lái)保存把一個(gè)ip地址用ip2long處理得到的結(jié)果,例如ip是'202.105.77.179′,那么在32位機(jī)器上得到的結(jié)果是:-899068493,而在64位機(jī)器上卻得到3395898803.然后把它寫(xiě)入數(shù)據(jù)庫(kù),由于超過(guò)int(11)的范圍,因此64位機(jī)器上的結(jié)果被保存為int(11)的最大值:2147483647.于是在從數(shù)據(jù)庫(kù)中取出的時(shí)候,便得到了錯(cuò)誤的結(jié)果,會(huì)得到”127.255.255.255″這個(gè)ip地址.
解決的辦法很多,比如可以用mysql的函數(shù):INET_ATON和INET_NTOA來(lái)處理ip地址;或者把保存ip地址的字段改為bigint類(lèi)型,這樣在64位機(jī)器上雖然保存的是3395898803,使用long2ip函數(shù)仍能得到正確的結(jié)果.

相關(guān)文章

  • php 設(shè)計(jì)模式之 工廠模式

    php 設(shè)計(jì)模式之 工廠模式

    用工廠模式設(shè)計(jì)數(shù)據(jù)庫(kù)操作類(lèi),本程序要運(yùn)行在PHP5.0以上,使用本程序可以方便的更換數(shù)據(jù)庫(kù),并且可擴(kuò)展到其它數(shù)據(jù)庫(kù)平臺(tái);在換數(shù)據(jù)庫(kù)平臺(tái)時(shí),只是簡(jiǎn)單的修改數(shù)據(jù)庫(kù)類(lèi)型就可以了。
    2008-12-12
  • 關(guān)于頁(yè)面優(yōu)化和偽靜態(tài)

    關(guān)于頁(yè)面優(yōu)化和偽靜態(tài)

    頁(yè)面優(yōu)化和偽靜態(tài)的說(shuō)明。
    2009-10-10
  • PHP+iframe模擬Ajax上傳文件功能示例

    PHP+iframe模擬Ajax上傳文件功能示例

    這篇文章主要介紹了PHP+iframe模擬Ajax上傳文件功能,結(jié)合實(shí)例形式分析了iframe模擬Ajax上傳文件與后臺(tái)php接收處理相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • PHP采用XML-RPC構(gòu)造Web Service實(shí)例教程

    PHP采用XML-RPC構(gòu)造Web Service實(shí)例教程

    這篇文章主要介紹了PHP采用XML-RPC構(gòu)造Web Service,需要的朋友可以參考下
    2014-07-07
  • Could not load type System.ServiceModel.Activation.HttpModule解決辦法

    Could not load type System.ServiceModel.Activation.HttpModul

    本文章來(lái)詳細(xì)介紹關(guān)于Could not load type System.ServiceModel.Activation.HttpModule from assembly System.ServiceModel解決辦法,有需要的朋友可參考
    2012-12-12
  • php簡(jiǎn)單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法

    php簡(jiǎn)單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了php簡(jiǎn)單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法,涉及curl及sleep等操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 批量修改RAR文件注釋的php代碼

    批量修改RAR文件注釋的php代碼

    下面的代碼就是我通過(guò)我的數(shù)據(jù)庫(kù)讀取出文件路徑并最終實(shí)現(xiàn)批量修改RAR文件注釋的方法.因?yàn)閿?shù)據(jù)庫(kù)是ACCESS,我新建了一個(gè)ODBC源.同時(shí)RAR.exe及CMD.EXE都在1.PHP同目錄下
    2010-11-11
  • PHP Stream_*系列函數(shù)

    PHP Stream_*系列函數(shù)

    流(stream)是一種數(shù)據(jù)抽象。使用流包裝數(shù)據(jù)源后,數(shù)據(jù)都將會(huì)獲得統(tǒng)一的操作,不管數(shù)據(jù)源是文件、網(wǎng)絡(luò)連接、壓縮數(shù)據(jù)中的哪一種。PHP中的stream_*系列函數(shù)就是用來(lái)獲取、管理流的一組函數(shù)。
    2010-08-08
  • PHP通過(guò)iconv將字符串從GBK轉(zhuǎn)換為UTF8字符集

    PHP通過(guò)iconv將字符串從GBK轉(zhuǎn)換為UTF8字符集

    PHP通過(guò)iconv將字符串從GBK轉(zhuǎn)換為UTF8字符集的方法,需要的朋友可以參考下。
    2011-07-07
  • PHP及Zend Engine的線程安全模型分析

    PHP及Zend Engine的線程安全模型分析

    在閱讀PHP源碼和學(xué)習(xí)PHP擴(kuò)展開(kāi)發(fā)的過(guò)程中,我接觸到大量含有“TSRM”字眼的宏。通過(guò)查閱資料,知道這些宏與Zend的線程安全機(jī)制有關(guān),而絕大多數(shù)資料中都建議按照既定規(guī)則使用這些宏就可以,而沒(méi)有說(shuō)明這些宏的具體作用
    2011-11-11

最新評(píng)論