《PHP教程:php實現ip白名單黑名單功能》要點:
本文介紹了PHP教程:php實現ip白名單黑名單功能,希望對您有用。如果有疑問,可以聯系我們。
這個是一個檢測ip是否非法的php函數,適應于白名單,黑名單功能開發,主要場景應用于:api來源限制,拜訪限制等.PHP編程
代碼如下:
/**
?* 平安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內置函數PHP編程
代碼如下:
//應網友要求,貼出 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有所贊助.PHP編程
維易PHP培訓學院每天發布《PHP教程:php實現ip白名單黑名單功能》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/11824.html