在网站用户数据统计的时候,我们经常需要获取用户浏览器的类型和操作系统的类型,本文主要介绍的是基于php判断客户端类型,有需要的朋友可以来了解一下。
方法一:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
/** * * 根据php的$_SERVER['HTTP_USER_AGENT'] 中各种浏览器访问时所包含各个浏览器特定的字符串来判断是属于PC还是移动端 * @author discuz3x * @lastmodify 2014-04-09 * @return BOOL */ function checkmobile() { global $_G ; $mobile = array (); //各个触控浏览器中$_SERVER['HTTP_USER_AGENT']所包含的字符串数组 static $touchbrowser_list = array ( 'iphone' , 'android' , 'phone' , 'mobile' , 'wap' , 'netfront' , 'java' , 'opera mobi' , 'opera mini' , 'ucweb' , 'windows ce' , 'symbian' , 'series' , 'webos' , 'sony' , 'blackberry' , 'dopod' , 'nokia' , 'samsung' , 'palmsource' , 'xda' , 'pieplus' , 'meizu' , 'midp' , 'cldc' , 'motorola' , 'foma' , 'docomo' , 'up.browser' , 'up.link' , 'blazer' , 'helio' , 'hosin' , 'huawei' , 'novarra' , 'coolpad' , 'webos' , 'techfaith' , 'palmsource' , 'alcatel' , 'amoi' , 'ktouch' , 'nexian' , 'ericsson' , 'philips' , 'sagem' , 'wellcom' , 'bunjalloo' , 'maui' , 'smartphone' , 'iemobile' , 'spice' , 'bird' , 'zte-' , 'longcos' , 'pantech' , 'gionee' , 'portalmmm' , 'jig browser' , 'hiptop' , 'benq' , 'haier' , '^lct' , '320x320' , '240x320' , '176x220' ); //window手机浏览器数组【猜的】 static $mobilebrowser_list = array ( 'windows phone' ); //wap浏览器中$_SERVER['HTTP_USER_AGENT']所包含的字符串数组 static $wmlbrowser_list = array ( 'cect' , 'compal' , 'ctl' , 'lg' , 'nec' , 'tcl' , 'alcatel' , 'ericsson' , 'bird' , 'daxian' , 'dbtel' , 'eastcom' , 'pantech' , 'dopod' , 'philips' , 'haier' , 'konka' , 'kejian' , 'lenovo' , 'benq' , 'mot' , 'soutec' , 'nokia' , 'sagem' , 'sgh' , 'sed' , 'capitel' , 'panasonic' , 'sonyericsson' , 'sharp' , 'amoi' , 'panda' , 'zte' ); $pad_list = array ( 'pad' , 'gt-p1000' ); $useragent = strtolower ( $_SERVER [ 'HTTP_USER_AGENT' ]); if (dstrpos( $useragent , $pad_list )) { return false; } if (( $v = dstrpos( $useragent , $mobilebrowser_list , true))){ $_G [ 'mobile' ] = $v ; return '1' ; } if (( $v = dstrpos( $useragent , $touchbrowser_list , true))){ $_G [ 'mobile' ] = $v ; return '2' ; } if (( $v = dstrpos( $useragent , $wmlbrowser_list ))) { $_G [ 'mobile' ] = $v ; return '3' ; //wml版 } $brower = array ( 'mozilla' , 'chrome' , 'safari' , 'opera' , 'm3gate' , 'winwap' , 'openwave' , 'myop' ); if (dstrpos( $useragent , $brower )) return false; $_G [ 'mobile' ] = 'unknown' ; //对于未知类型的浏览器,通过$_GET['mobile']参数来决定是否是手机浏览器 if (isset( $_G [ 'mobiletpl' ][ $_GET [ 'mobile' ]])) { return true; } else { return false; } } /** * 判断$arr中元素字符串是否有出现在$string中 * @param $string $_SERVER['HTTP_USER_AGENT'] * @param $arr 各中浏览器$_SERVER['HTTP_USER_AGENT']中必定会包含的字符串 * @param $returnvalue 返回浏览器名称还是返回布尔值,true为返回浏览器名称,false为返回布尔值【默认】 * @author discuz3x * @lastmodify 2014-04-09 */ function dstrpos( $string , $arr , $returnvalue = false) { if ( empty ( $string )) return false; foreach (( array ) $arr as $v ) { if ( strpos ( $string , $v ) !== false) { $return = $returnvalue ? $v : true; return $return ; } } return false; } |
方法二:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<?php function isMobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ( $_SERVER [ 'HTTP_X_WAP_PROFILE' ])) { return true; } // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 if (isset ( $_SERVER [ 'HTTP_VIA' ])) { // 找不到为flase,否则为true return stristr ( $_SERVER [ 'HTTP_VIA' ], "wap" ) ? true : false; } // 脑残法,判断手机发送的客户端标志,兼容性有待提高 if (isset ( $_SERVER [ 'HTTP_USER_AGENT' ])) { $clientkeywords = array ( 'nokia' , 'sony' , 'ericsson' , 'mot' , 'samsung' , 'htc' , 'sgh' , 'lg' , 'sharp' , 'sie-' , 'philips' , 'panasonic' , 'alcatel' , 'lenovo' , 'iphone' , 'ipod' , 'blackberry' , 'meizu' , 'android' , 'netfront' , 'symbian' , 'ucweb' , 'windowsce' , 'palm' , 'operamini' , 'operamobi' , 'openwave' , 'nexusone' , 'cldc' , 'midp' , 'wap' , 'mobile' ); // 从HTTP_USER_AGENT中查找手机浏览器的关键字 if (preg_match( "/(" . implode( '|' , $clientkeywords ) . ")/i" , strtolower ( $_SERVER [ 'HTTP_USER_AGENT' ]))) { return true; } } // 协议法,因为有可能不准确,放到最后判断 if (isset ( $_SERVER [ 'HTTP_ACCEPT' ])) { // 如果只支持wml并且不支持html那一定是移动设备 // 如果支持wml和html但是wml在html之前则是移动设备 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' )))) { return true; } } return false; } ?> |
判断手机端是IOS还是Android
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
/** * 判断是否手机访问 */ function is_mobile() { static $is_mobile ; if (isset( $is_mobile )) return $is_mobile ; if ( empty ( $_SERVER [ 'HTTP_USER_AGENT' ])) { $is_mobile = false; } elseif ( strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Mobile' ) !== false // many mobile devices (all iPhone, iPad, etc.) || strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Android' ) !== false || strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Silk/' ) !== false || strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Kindle' ) !== false || strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'BlackBerry' ) !== false || strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Opera Mini' ) !== false || strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Opera Mobi' ) !== false ) { $is_mobile = true; } else { $is_mobile = false; } return $is_mobile ; } |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!