PHP 中檢查或過濾IP地址的實(shí)現(xiàn)代碼
<?php
/**
* PHP 中檢查或過濾 IP 地址
*
* 支持 IP 區(qū)間、CIDR(Classless Inter-Domain Routing)及單個(gè) IP 格式
* 整理:http://www.CodeBit.cn
* 參考:
* - {@link http://us2.php.net/manual/zh/function.ip2long.php#70055}
* - {@link http://us2.php.net/manual/zh/function.ip2long.php#82397}
*
* @param string $network 網(wǎng)段,支持 IP 區(qū)間、CIDR及單個(gè) IP 格式
* @param string $ip 要檢查的 IP 地址
* @return boolean
*/
function netMatch($network, $ip) {
$network = trim($network);
$ip = trim($ip);
$result = false;
// IP range : 174.129.0.0 - 174.129.255.255
if (false !== ($pos = strpos($network, "-"))) {
$from = ip2long(trim(substr($network, 0, $pos)));
$to = ip2long(trim(substr($network, $pos+1)));
$ip = ip2long($ip);
$result = ($ip >= $from and $ip <= $to);
// CIDR : 174.129.0.0/16
} else if (false !== strpos($network,"/")) {
list ($net, $mask) = explode ('/', $network);
$result = (ip2long($ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($net);
// single IP
} else {
$result = $network === $ip;
}
return $result;
}
// 174.129.0.0 - 174.129.255.255
var_dump(netMatch(' 174.129.0.0 - 174.129.255.255 ', '174.129.1.31')); // True
var_dump(netMatch(' 174.129.0.0/16 ', '174.139.1.31')); // False
var_dump(netMatch(' 174.129.1.32 ', '174.129.1.31')); // False
?>
由于中國使用的大多數(shù)都是動(dòng)態(tài) IP 地址,所以通過 IP 地址限制訪問具有一定的局限性,使用的時(shí)候需要謹(jǐn)慎,但是對于應(yīng)急限制訪問來說,還是非常有用的。
相關(guān)文章
PHP+Mysql日期時(shí)間如何轉(zhuǎn)換(UNIX時(shí)間戳和格式化日期)
UNIX時(shí)間戳和格式化日期是我們常打交道的兩個(gè)時(shí)間表示形式,Unix時(shí)間戳存儲(chǔ)、處理方便,但是不直觀,格式化日期直觀,但是處理起來不如Unix時(shí)間戳那么自如,所以有的時(shí)候需要互相轉(zhuǎn)換,下面給出互相轉(zhuǎn)換的幾種轉(zhuǎn)換方式2012-07-07ThinkPHP中公共函數(shù)路徑和配置項(xiàng)路徑的映射分析
這篇文章主要介紹了ThinkPHP中公共函數(shù)路徑和配置項(xiàng)路徑的映射,較為通俗的分析了ThinkPHP中公共函數(shù)路徑和配置項(xiàng)路徑的映射關(guān)系與對應(yīng)修改位置,有助于更好的理解ThinkPHP底層代碼原理,需要的朋友可以參考下2014-11-11php簡單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法
這篇文章主要介紹了php簡單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法,涉及curl及sleep等操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02如何從一個(gè)php文件向另一個(gè)地址post數(shù)據(jù),不用表單和隱藏的變量的
如何從一個(gè)php文件向另一個(gè)地址post數(shù)據(jù),不用表單和隱藏的變量的...2007-03-03PHP實(shí)現(xiàn)通過二維數(shù)組鍵值獲取一維鍵名操作示例
這篇文章主要介紹了PHP實(shí)現(xiàn)通過二維數(shù)組鍵值獲取一維鍵名操作,涉及php數(shù)組遍歷、判斷、搜索等相關(guān)操作技巧,需要的朋友可以參考下2019-10-10Windows上PHP安裝redis擴(kuò)展和igbinary擴(kuò)展
php擴(kuò)展就是php核心并不支持的功能,通過安裝擴(kuò)展增加PHP的功能,在Windows上有兩種加載PHP擴(kuò)展的方式:把擴(kuò)展編譯進(jìn)?PHP,或者加載?DLL,加載預(yù)編譯的擴(kuò)展是更簡單更被推薦的方式,要加載某擴(kuò)展,需要在系統(tǒng)中有其相對應(yīng)的“.dll”文件2023-10-10備份mysql數(shù)據(jù)庫的php代碼(一個(gè)表一個(gè)文件)
用php實(shí)現(xiàn)的備份MySQL數(shù)據(jù)庫的代碼,需要的朋友可以參考下。2010-05-05php+html優(yōu)化頁面顯示速度的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了php結(jié)合html優(yōu)化頁面顯示速度的一些常見方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12