/
browser_check.php
92 lines (84 loc) · 2.41 KB
/
browser_check.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
/**
* Identify the browser name, version and platform from the user agent
* Looks like Rafik initially copied this code from
* http://php.net/function.get-browser.php#101125
* @return array
*/
function getBrowser() {
$u_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
# First get the platform
if( preg_match( '/linux/', $u_agent ) ) {
$platform = 'linux';
} elseif( preg_match( '/macintosh|mac os x/', $u_agent ) ) {
$platform = 'mac';
} elseif( preg_match( '/windows|win32/', $u_agent ) ) {
$platform = 'windows';
}
else {
$platform = 'Unknown';
}
# Next get the name of the useragent yes seperately and for good reason
if( preg_match( '/msie/', $u_agent ) && !preg_match( '/opera/', $u_agent ) ) {
$bname = 'Internet Explorer';
$ub = 'MSIE';
} elseif( preg_match( '/firefox/', $u_agent ) ) {
$bname = 'Mozilla Firefox';
$ub = 'Firefox';
} elseif( preg_match( '/chrome/', $u_agent ) ) {
$bname = 'Google Chrome';
$ub = 'Chrome';
} elseif( preg_match( '/safari/', $u_agent ) ) {
$bname = 'Apple Safari';
$ub = 'Safari';
} elseif( preg_match( '/opera/', $u_agent ) ) {
$bname = $ub = 'Opera';
} elseif( preg_match( '/netscape/', $u_agent ) ) {
$bname = $ub = 'Netscape';
} else {
$bname = $ub = 'Unknown';
}
# finally get the correct version number
$known = array( 'version', $ub, 'other' );
$pattern = '#(?<browser>' . join( '|', $known ) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if( !preg_match_all( $pattern, $u_agent, $matches ) ) {
# we have no matching number
$version = '?';
} else {
# see how many we have
$i = count( $matches['browser'] );
if( $i >= 1 ) {
# we will have two since we are not using 'other' argument yet
# see if version is before or after the name
if( strrpos( $u_agent, 'version' ) < strrpos( $u_agent, $ub ) ) {
$version = $matches['version'][0];
} else {
$version = $matches['version'][1];
}
} else {
$version = $matches['version'][0];
}
# check if we have a number
if( $version == '' ) {
$version = '?';
}
}
return array(
'userAgent' => $_SERVER['HTTP_USER_AGENT'],
'name' => $bname,
'version' => $version,
'platform' => $platform,
'pattern' => $pattern,
);
}
/**
* Returns true if user's browser is not supported
* @return bool
*/
function is_unsupported_browser() {
$ua = getBrowser();
if( 'Internet Explorer' == $ua['name'] && '6.0' == $ua['version'] ) {
return true;
}
return false;
}