• 判断ip是内网还是*, 判断请求来之pc还是mobile


    判断内网ip

    function is_internal_id($ip_address)
        {
    
            $get_ip_number = function($ip)
            {
                $ip_segment = explode('.', $ip);
                if(!is_array($ip_segment) || count($ip_segment) != 4)
                    return -1;
    
                $ip_num = $ip_segment[0] * 256 * 256 * 256 + $ip_segment[1] * 256 * 256 + $ip_segment[2] * 256 + $ip_segment[3];
                return $ip_num;
            };
    
            $process_ip = $get_ip_number($ip_address);
    
            /**
             * 私有IP:A类  10.0.0.0    -10.255.255.255
             *       B类  172.16.0.0  -172.31.255.255
             *       C类  192.168.0.0 -192.168.255.255
             *       D类   127.0.0.0   -127.255.255.255(环回地址)
             */
            $a_begin = $get_ip_number("10.0.0.0");
            $a_end = $get_ip_number("10.255.255.255");
            if($process_ip >= $a_begin && $process_ip <= $a_end)
                return true;
    
            $b_begin = $get_ip_number("172.16.0.0");
            $b_end = $get_ip_number("172.31.255.255");
            if($process_ip >= $b_begin && $process_ip <= $b_end)
                return true;
    
            $c_begin = $get_ip_number("192.168.0.0");
            $c_end = $get_ip_number("192.168.255.255");
            if($process_ip >= $c_begin && $process_ip <= $c_end)
                return true;
    
            $d_begin = $get_ip_number("127.0.0.0");
            $d_end = $get_ip_number("127.255.255.255");
            if($process_ip >= $d_begin && $process_ip <= $d_end)
                return true;
    
            return false;
        }
    

    PHP 自带判断私有ip 方法

    function is_private_ip($ip) { 
        return !filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE); 
    } 
    

    判断Mobile,还是pc

    function ismobile() {
        $is_mobile = '0';
    
        if(preg_match('/(android|up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
            $is_mobile=1;
        }
    
        if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
            $is_mobile=1;
        }
    
        $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
        $mobile_agents = array('w3c ','acs-','alav','alca','amoi','andr','audi','avan','benq','bird','blac','blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno','ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-','maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-','newt','noki','oper','palm','pana','pant','phil','play','port','prox','qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar','sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-','tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp','wapr','webc','winw','winw','xda','xda-');
    
        if(in_array($mobile_ua,$mobile_agents)) {
            $is_mobile=1;
        }
    
        if (isset($_SERVER['ALL_HTTP'])) {
            if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
                $is_mobile=1;
            }
        }
    
        if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
            $is_mobile=0;
        }
    
        return $is_mobile;
    }
    
    var_dump(ismobile());
    
  • 相关阅读:
    leetcode1161 Maximum Level Sum of a Binary Tree
    leetcode1162 As Far from Land as Possible
    leetcode107 Binary Tree Level Order Traversal II
    leetcode100 Same Tree
    spring常用注解的使用
    内部bean和级联属性的用法
    spring中ref标签的用法
    spring的依赖注入
    spring中的bean标签详解
    spring中BeanFactory和ApplicationContext的区别
  • 原文地址:https://www.cnblogs.com/luowen/p/4797878.html
Copyright © 2020-2023  润新知