加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php实现ip白名单黑名单功能

发布时间:2020-12-13 02:28:01 所属栏目:PHP教程 来源:网络整理
导读:《php实现ip白名单黑名单功能》要点: 本文介绍了php实现ip白名单黑名单功能,希望对您有用。如果有疑问,可以联系我们。 这个是一个检测ip是否非法的php函数,适应于白名单,黑名单功能开发,主要场景应用于:api来源限制,拜访限制等. PHP编程 代码如下: /** ?

《php实现ip白名单黑名单功能》要点:
本文介绍了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实现ip白名单黑名单功能》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读