在网站用户数据统计的时候,我们经常需要获取用户浏览器的类型和操作系统的类型,本文主要介绍的是基于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 ;
}
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!