3474

[PHP] 檢查IP是否在某個網段內 mtachcidr

“
要檢查IP是否在某個網段內,要寫幾行?10行?5行? 不用,只要2行。以下是我寫的 code /** * matchCI
„

分享此文連結 //n.sfs.tw/10170

分享連結 [PHP] 檢查IP是否在某個網段內 mtachcidr@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-25 13:16:47 最後編修
2016-11-05 11:20:04 By 張○○
 

自動目錄

要檢查IP是否在某個網段內,要寫幾行?10行?5行?不用,只要2行。

函式

/**
* matchCIDR() - 判斷兩個地址是否在某個子網内
* @param $addr 地址IP ex.. 1.2.3.4
* @param $cidr 網段範圍 ex .. 1.2.3.5/24
* @return 同網段回傳 1 否則回傳 null
*/
public function matchCIDR($addr, $cidr) {
     list($ip, $mask) = explode('/', $cidr);
     return (ip2long($addr) >> (32 - $mask) == ip2long($ip) >> (32 - $mask));
}

用法

$schcidr="163.17.40.0/24";
$ip=$_SERVER["REMOTE_ADDR"];

if( matchCIDR($ip, $schcidr) )
  //  in this net, do something...
else
  //  get out of here....

 

運算法是大家少知道的推移(shift)運算法,他的效能是乘法的10倍+,所以並不會為了精簡而輸了效能。

美中不足的,就是如果是 ipv6 的使用者,會遇到麻煩,請參考下面的連結。

 

相關連結

[PHP] IPv6檢查IP是否在某個網段內 mtachcidr6


原文 2009-11-08 20:03:51 程式於2007

END

你可能感興趣的文章

設定Google analytics API #2 -- PHP的程式安裝和撰寫 讓你的網站能夠存取你的Google analytics上面的資料

[PHP] 檢查檔案是否是圖檔 使用getimagesize函數檢查檔案是否是圖檔

[PHP] 2個程式的觀念 整理2個PHP的程式觀念,參考參考。

[PHP] 解析二進位圖片 使用php來解析png圖片,把資料寫在16進位格式

[PHP] CodeIgniter 3+pure+smarty安裝及環境設置2/2 PHP framework CodeIgniter 3+ pure CSS +smarty Template Engine的整合#2

[PHP8] 使用autoload autoload+ namespace +use 到了php7之後,namespace和use越來越重要,此篇整理autoload和namespace、use的結合使用。

隨機好文

[Win7] 燒錄 iso 檔 在Windows7 中內建燒錄程式,可以直接把檔案拉到光碟機裡,再執行燒錄。

NETCRAFT發現你的網站及作業系統 NETCRAFT可以發現你的網站及作業系統

海棉寶寶超泡杯演奏的sweet victory 章魚哥和海棉寶寶在超泡杯的演奏歌曲

[AS3] 變數型態 基本類型宣告 as3 有下列幾種基本類型:string, int, number, object, boolean, n

關閉瀏覽器表單的自動完成autocomplete 什麼是自動完成?就是當我們在網頁的輸入文字欄位中打入文字時,瀏覽器會把曾輸入過歷史記錄中找出來讓我們選擇。

精讚::