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

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

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

代碼如下:

/**

* 安全IP檢測,支持IP段檢測

* @param string $ip 要檢測的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{ //讀取后臺配置 白名單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內置函數

代碼如下:

//應網友要求,貼出 get_client_ip() 函數

/**

* 獲取客戶端IP地址

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

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

* @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地址合法驗證

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

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

return $ip[$type];

}

以上就是本文的全部內容了,希望對大家理解php檢測IP有所幫助。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:php實現ip白名單黑名單功能

2025國考·省考課程試聽報名

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