PHP利用ip白名单黑名单功能的实现方法
内容摘要
这篇文章主要为大家详细介绍了PHP利用ip白名单黑名单功能的实现方法,具有一定的参考价值,可以用来参考一下
文章正文
这篇文章主要为大家详细介绍了PHP利用ip白名单黑名单功能的实现方法,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
这个是一个检测ip是否非法的php函数,适应于白名单,黑名单功能开发,主要场景应用于:api来源限制,访问限制等.
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <code class = "language-php" > /** * 安全IP检测,支持IP段检测 * @param string $ip 要检测的IP * @param string|array $ips 白名单IP或者黑名单IP * @return boolean true 在白名单或者黑名单中,否则不在 */ // php教程 www.idcnote.com 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 ; }</code> |
获取ip地址,这里引用thinkphp内置函数
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <code class = "language-php" > //应网友要求,贴出 get_client_ip() 函数 // php教程 www.idcnote.com /** * 获取客户端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 ]; }</code> |
注:关于PHP利用ip白名单黑名单功能的实现方法的内容就先介绍到这里,更多相关文章的可以留意
代码注释