首页 > 编程 > PHP > 正文

php用于实现黑白名单的实用函数

2020-03-24 18:56:16
字体:
来源:转载
供稿:网友
本文给大家分享了2个php用于实现黑白名单的实用函数,分别是安全IP检测函数和获取客户端IP函数,注释里解释的非常清楚,这里我就不多废话了。

这个是一个检测ip是否非法的php函数,适应于白名单,黑名单功能开发,主要场景应用于: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 mixedfunction get_client_ip($type = 0,$adv=false) { $type = $type ? 1 : 0; html' target='_blank'>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中流的基本知识

PHP输出缓冲的简介及作用

php基于socket实现UDP通信的方法

以上就是php用于实现黑白名单的实用函数的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表