最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP基于ip2long實(shí)現(xiàn)IP轉(zhuǎn)換整形

 更新時(shí)間:2020年12月11日 09:52:27   作者:ノGHJ  
這篇文章主要介紹了PHP基于ip2long實(shí)現(xiàn)IP轉(zhuǎn)換整形,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

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

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

我們將得到

167903491

這是如何計(jì)算的,目前我知道有兩個(gè)算法。其一

<?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)算

<?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)化為無符號(hào)的,可以用
sprintf("%u",ip2long($ip);

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

<?php
function chk_ip($ip){
  if(ip2long($ip)=="-1") {
    return false;
  }
  return true;
}
//應(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)類型的字段中,但是,在不同的系統(tǒng)平臺(tái)上,ip2long函數(shù)得到的值是不同的,因此可能造成在從數(shù)據(jù)庫(kù)中讀出數(shù)據(jù),用long2ip得到ip的時(shí)候產(chǎn)生錯(cuò)誤,說一下我們碰到的情況:

我們用一個(gè)int(11)類型(范圍-2147483648 - 2147483647)來保存把一個(gè)ip地址用ip2long處理得到的結(jié)果,例如ip是'202.105.77.179′,那么在32位機(jī)器上得到的結(jié)果是:-899068493,而在64位機(jī)器上卻得到3395898803.然后把它寫入數(shù)據(jù)庫(kù),由于超過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來處理ip地址;或者把保存ip地址的字段改為bigint類型,這樣在64位機(jī)器上雖然保存的是3395898803,使用long2ip函數(shù)仍能得到正確的結(jié)果.

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • PHP下載文件的函數(shù)實(shí)例代碼

    PHP下載文件的函數(shù)實(shí)例代碼

    本文通過實(shí)例代碼給大家介紹php下載文件的函數(shù)相關(guān)知識(shí),介紹的非常詳解,具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • main.php

    main.php

    main.php...
    2006-12-12
  • PHP explode()函數(shù)的幾個(gè)應(yīng)用和implode()函數(shù)有什么區(qū)別

    PHP explode()函數(shù)的幾個(gè)應(yīng)用和implode()函數(shù)有什么區(qū)別

    這篇文章主要介紹了PHP explode()函數(shù)的幾個(gè)應(yīng)用和implode()函數(shù)有什么區(qū)別,需要的朋友可以參考下
    2015-11-11
  • 淺談Laravel模板實(shí)體轉(zhuǎn)義帶來的坑

    淺談Laravel模板實(shí)體轉(zhuǎn)義帶來的坑

    今天小編就為大家分享一篇淺談Laravel模板實(shí)體轉(zhuǎn)義帶來的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • PHP微信支付開發(fā)實(shí)例

    PHP微信支付開發(fā)實(shí)例

    這篇文章主要為大家詳細(xì)介紹了PHP微信支付開發(fā)過程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • php in_array() 檢查數(shù)組中是否存在某個(gè)值詳解

    php in_array() 檢查數(shù)組中是否存在某個(gè)值詳解

    php有時(shí)候需要判斷某一個(gè)值是否存在于數(shù)組中,我們可以直接使用php內(nèi)置函數(shù)in_array()來實(shí)現(xiàn)判斷。php in_array 函數(shù)用于檢查數(shù)組中是否存在某個(gè)值,如果存在,則返回true,否則返回false。本文章向大家介紹in_array函數(shù)的基本語法及使用實(shí)例,感興趣的朋友可以參考一下。
    2016-11-11
  • PHP URL參數(shù)獲取方式的四種例子

    PHP URL參數(shù)獲取方式的四種例子

    這篇文章主要介紹了PHP URL參數(shù)獲取方式的四種例子,php url參數(shù)解析的4種方法,需要的朋友可以參考下
    2014-02-02
  • ThinkPHP實(shí)現(xiàn)簡(jiǎn)單登陸功能

    ThinkPHP實(shí)現(xiàn)簡(jiǎn)單登陸功能

    這篇文章主要為大家詳細(xì)介紹了ThinkPHP實(shí)現(xiàn)簡(jiǎn)單登陸功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • PHP7.0版本備注

    PHP7.0版本備注

    這篇文章主要介紹了PHP7.0版本備注,新版本發(fā)布在性能方面大大提升,同時(shí)在語言特性方面也改變了不少,以下內(nèi)容是LCT翻譯對(duì)官方版本升級(jí)備注,需要的朋友可以參考下
    2015-07-07
  • dedecms中使用php語句指南

    dedecms中使用php語句指南

    dedecms是廣大站長(zhǎng)們比較喜歡也經(jīng)常使用的一款文章管理系統(tǒng),使用方便,今天我們來研究下dedecms中如何使用php語句,有相同需求的小伙伴們可要看仔細(xì)了。
    2014-11-11

最新評(píng)論

济阳县| 库伦旗| 太仓市| 庆云县| 北流市| 临泉县| 海原县| 綦江县| 阿城市| 会东县| 巴里| 米易县| 延津县| 双城市| 恩平市| SHOW| 广饶县| 大新县| 尼勒克县| 眉山市| 肃南| 张家港市| 顺义区| 闽清县| 西峡县| 黔江区| 彝良县| 石阡县| 宜宾县| 天全县| 安顺市| 马尔康县| 云浮市| 娄底市| 万安县| 如东县| 磐石市| 根河市| 昌黎县| 中宁县| 会昌县|