zoukankan      html  css  js  c++  java
  • 限制非安全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.1,123.23.23.1,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 ;
     }
    
    
     function get_client_ip() {
      if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
         $ip = getenv('HTTP_CLIENT_IP');
      } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
         $ip = getenv('HTTP_X_FORWARDED_FOR');
      } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
         $ip = getenv('REMOTE_ADDR');
      } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
         $ip = $_SERVER['REMOTE_ADDR'];
      }
      return preg_match ( '/[d.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
     }
  • 相关阅读:
    文件上传,跨浏览器统一的样式
    JAVA与JSON的序列化、反序列化
    错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009)
    45个非常有用的 Oracle 查询语句小结
    三分钟学会不吃球
    Linux命令:TOP
    【Oracle】Oracle官方文档
    【MySQL】MySQL官方文档
    【oracle】处理oracle用户密码中的特殊字符$和@
    【shell】整数运算,小数运算
  • 原文地址:https://www.cnblogs.com/qhorse/p/4838204.html
Copyright © 2011-2022 走看看