php實(shí)現(xiàn)ip白名單黑名單功能
來源:易賢網(wǎng) 閱讀:1083 次 日期:2015-03-16 11:27:00
溫馨提示:易賢網(wǎng)小編為您整理了“php實(shí)現(xiàn)ip白名單黑名單功能”,方便廣大網(wǎng)友查閱!

本文給大家分享了2個(gè)php用于實(shí)現(xiàn)黑白名單的實(shí)用函數(shù),分別是安全I(xiàn)P檢測(cè)函數(shù)和獲取客戶端IP函數(shù),注釋里解釋的非常清楚,這里我就不多廢話了。

這個(gè)是一個(gè)檢測(cè)ip是否非法的php函數(shù),適應(yīng)于白名單,黑名單功能開發(fā),主要場(chǎng)景應(yīng)用于:api來源限制,訪問限制等.

代碼如下:

/**

* 安全I(xiàn)P檢測(cè),支持IP段檢測(cè)

* @param string $ip 要檢測(cè)的IP

* @param string|array $ips 白名單IP或者黑名單IP

* @return boolean true 在白名單或者黑名單中,否則不在

*/

function is_safe_ip($ip="",$ips=""){

if(!$ip) $ip = get_client_ip(); //獲取客戶端IP

if($ips){

if(is_string($ips)){ //ip用"," 例如白名單IP:192.168.1.13,123.23.23.44,193.134.*.*

$ips = explode(",", $ips);

}

}else{ //讀取后臺(tái)配置 白名單IP

$obj = new Setting();

$ips = explode(",", $obj->getConfig("whiteip"));

}

if(in_array($ip, $ips)){

return true;

}

$ipregexp = implode('|', str_replace( array('*','.'), array('\d+','\.') ,$ips));

$rs = preg_match("/^(".$ipregexp.")$/", $ip);

if($rs) return true;

return ;

}

獲取ip地址,這里引用thinkphp內(nèi)置函數(shù)

代碼如下:

//應(yīng)網(wǎng)友要求,貼出 get_client_ip() 函數(shù)

/**

* 獲取客戶端IP地址

* @param integer $type 返回類型 0 返回IP地址 1 返回IPV4地址數(shù)字

* @param boolean $adv 是否進(jìn)行高級(jí)模式獲取(有可能被偽裝)

* @return mixed

*/

function get_client_ip($type = 0,$adv=false) {

$type = $type ? 1 : 0;

static $ip = NULL;

if ($ip !== NULL) return $ip[$type];

if($adv){

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

$pos = array_search('unknown',$arr);

if(false !== $pos) unset($arr[$pos]);

$ip = trim($arr[0]);

}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {

$ip = $_SERVER['HTTP_CLIENT_IP'];

}elseif (isset($_SERVER['REMOTE_ADDR'])) {

$ip = $_SERVER['REMOTE_ADDR'];

}

}elseif (isset($_SERVER['REMOTE_ADDR'])) {

$ip = $_SERVER['REMOTE_ADDR'];

}

// IP地址合法驗(yàn)證

$long = sprintf("%u",ip2long($ip));

$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);

return $ip[$type];

}

以上就是本文的全部?jī)?nèi)容了,希望對(duì)大家理解php檢測(cè)IP有所幫助。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:php實(shí)現(xiàn)ip白名單黑名單功能
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)