Passed
Push — master ( a68137...f0b2de )
by ma
02:12
created

Tool::getTreeStructure()   A

Complexity

Conditions 5
Paths 2

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 9
nc 2
nop 4
dl 0
loc 14
rs 9.6111
c 1
b 0
f 0
1
<?php
2
namespace tinymeng\tools;
3
4
/**
5
 * Name: Tool.php.
6
 * Author: JiaMeng <[email protected]>
7
 * Date: 2018/8/17 14:20
8
 * Description: Tool.php.
9
 */
10
11
class Tool{
12
13
    /**
14
     * Description:  获取ip
15
     * Author: JiaMeng <[email protected]>
16
     * Updater:
17
     * @return string
18
     */
19
    public static function getIp(){
20
        if(!empty($_SERVER["HTTP_CLIENT_IP"])){
21
            $cip = $_SERVER["HTTP_CLIENT_IP"];
22
        }else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
23
            $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
24
        }else if(!empty($_SERVER["REMOTE_ADDR"])){
25
            $cip = $_SERVER["REMOTE_ADDR"];
26
        }else{
27
            $cip = '';
28
        }
29
        preg_match("/[\d\.]{7,15}/", $cip, $cips);
30
        $cip = isset($cips[0]) ? $cips[0] : 'unknown';
31
        unset($cips);
32
33
        return $cip;
34
    }
35
36
37
    /**
38
     * Description:  是否是移动端
39
     * Author: JiaMeng <[email protected]>
40
     * Updater:
41
     * @return bool
42
     */
43
    public static function isMobile()
44
    {
45
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
46
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
47
            return true;
48
        }
49
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
50
        if (isset ($_SERVER['HTTP_VIA'])) {
51
            // 找不到为flase,否则为true
52
            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
53
        }
54
        // 脑残法,判断手机发送的客户端标志,兼容性有待提高
55
        if (isset ($_SERVER['HTTP_USER_AGENT'])) {
56
            $clientKeyWords = array(
57
                'nokia',
58
                'sony',
59
                'ericsson',
60
                'mot',
61
                'samsung',
62
                'htc',
63
                'sgh',
64
                'lg',
65
                'sharp',
66
                'sie-',
67
                'philips',
68
                'panasonic',
69
                'alcatel',
70
                'lenovo',
71
                'iphone',
72
                'ipod',
73
                'blackberry',
74
                'meizu',
75
                'android',
76
                'netfront',
77
                'symbian',
78
                'ucweb',
79
                'windowsce',
80
                'palm',
81
                'operamini',
82
                'operamobi',
83
                'openwave',
84
                'nexusone',
85
                'cldc',
86
                'midp',
87
                'wap',
88
                'mobile'
89
            );
90
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
91
            if (preg_match("/(" . implode('|', $clientKeyWords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
92
                return true;
93
            }
94
        }
95
        // 协议法,因为有可能不准确,放到最后判断
96
        if (isset ($_SERVER['HTTP_ACCEPT'])) {
97
            // 如果只支持wml并且不支持html那一定是移动设备
98
            // 如果支持wml和html但是wml在html之前则是移动设备
99
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
100
                return true;
101
            }
102
        }
103
        return false;
104
    }
105
106
    /**
107
     * Description:  判断是否微信内置浏览器访问
108
     * Author: JiaMeng <[email protected]>
109
     * Updater:
110
     * @return bool
111
     */
112
    public static function isWeiXin() {
113
        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
114
            return true;
115
        }
116
        return false;
117
    }
118
119
    /**
120
     * Description:  判断是否支付宝内置浏览器访问
121
     * Author: JiaMeng <[email protected]>
122
     * Updater:
123
     * @return bool
124
     */
125
    public static function isAliPay() {
126
        if (strpos($_SERVER['HTTP_USER_AGENT'], 'Alipay') !== false) {
127
            return true;
128
        }
129
        return false;
130
    }
131
132
}
133