phpSniff.class.php
6.83 KB
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?php
/*******************************************************************************
$Id: phpSniff.class.php,v 1.11 2002/09/13 21:40:34 epsilon7 Exp $
phpSniff: HTTP_USER_AGENT Client Sniffer for PHP
Copyright (C) 2001 Roger Raymond ~ epsilon7@users.sourceforge.net
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*******************************************************************************/
require_once('phpSniff.core.php');
class phpSniff extends phpSniff_core
{ var $_version = '2.1.1';
/**
* Configuration
*
* $_temp_file_path
* default : /tmp/
* desc : directory writable by the server to store cookie check files.
* : trailing slash is needed. only used if you use the check cookie routine
*
* $_check_cookies
* default : null
* desc : Allow for the script to redirect the browser in order
* : to check for cookies. In order for this to work, this
* : class must be instantiated before any headers are sent.
*
* $_default_language
* default : en-us
* desc : language to report as if no languages are found
*
* $_allow_masquerading
* default : null
* desc : Allow for browser to Masquerade as another.
* : (ie: Opera identifies as MSIE 5.0)
*
* $_browsers
* desc : 2D Array of browsers we wish to search for
* : in key => value pairs.
* : key = browser to search for [as in HTTP_USER_AGENT]
* : value = value to return as 'browser' property
*
* $_javascript_versions
* desc : 2D Array of javascript version supported by which browser
* : in key => value pairs.
* : key = javascript version
* : value = search parameter for browsers that support the
* : javascript version listed in the key (comma delimited)
* : note: the search parameters rely on the values
* : set in the $_browsers array
*
* $_browser_features
* desc : 2D Array of browser features supported by which browser
* : in key => value pairs.
* : key = feature
* : value = search parameter for browsers that support the
* : feature listed in the key (comma delimited)
* : note: the search parameters rely on the values
* : set in the $_browsers array
*
* $_browser_quirks
* desc : 2D Array of browser quirks present in which browser
* : in key => value pairs.
* : key = quirk
* : value = search parameter for browsers that feature the
* : quirk listed in the key (comma delimited)
* : note: the search parameters rely on the values
* : set in the $_browsers array
**/
var $_temp_file_path = '/tmp/'; // with trailing slash
var $_check_cookies = NULL;
var $_default_language = 'en-us';
var $_allow_masquerading = NULL;
var $_php_version = '';
var $_browsers = array(
'microsoft internet explorer' => 'ie',
'msie' => 'ie',
'netscape6' => 'ns',
'netscape' => 'ns',
'mozilla' => 'moz',
'opera' => 'op',
'konqueror' => 'konq',
'icab' => 'icab',
'lynx' => 'lynx',
'links' => 'links',
'ncsa mosaic' => 'mosaic',
'amaya' => 'amaya',
'omniweb' => 'ow',
'hotjava' => 'hj'
);
var $_javascript_versions = array(
'1.5' => 'IE5.5UP,NS5UP',
'1.4' => '',
'1.3' => 'NS4.05UP,OP5UP,IE5UP',
'1.2' => 'NS4UP,IE4UP',
'1.1' => 'NS3UP,OP,KQ',
'1.0' => 'NS2UP,IE3UP',
'0' => 'LN,LX,HJ'
);
var $_browser_features = array(
/**
* the following are true by default
* (see phpSniff.core.php $_feature_set array)
* browsers listed here will be set to false
**/
'html' => '',
'images' => 'LN,LX',
'frames' => 'LN,LX',
'tables' => '',
'java' => 'OP3,LX,LN,NS1,MO,IE1,IE2',
'plugins' => 'IE1,IE2,LX,LN',
/**
* the following are false by default
* (see phpSniff.core.php $_feature_set array)
* browsers listed here will be set to true
**/
'css2' => 'NS5UP,IE5UP',
'css1' => 'NS4UP,IE4UP',
'iframes' => 'IE3UP,NS5UP',
'xml' => 'IE5UP,NS5UP',
'dom' => 'IE5UP,NS5UP',
'hdml' => '',
'wml' => ''
);
var $_browser_quirks = array(
'must_cache_forms' => 'NS',
'avoid_popup_windows' => 'IE3,LX,LN',
'cache_ssl_downloads' => 'IE',
'break_disposition_header' => 'IE5.5',
'empty_file_input_value' => 'KQ',
'scrollbar_in_way' => 'IE6'
);
function phpSniff($UA='',$settings = true)
{ // populate the HTTP_USER_AGENT string
// 20020425 :: rraymond
// routine for easier configuration of the client at runtime
if(is_array($settings)) {
$run = true;
extract($settings);
$this->_check_cookies = $check_cookies;
$this->_default_language = $default_language;
$this->_allow_masquerading = $allow_masquerading;
} else {
// for backwards compatibility with 2.0.x series
$run = $settings;
}
// 20020425 :: besfred
if(empty($UA)) $UA = getenv('HTTP_USER_AGENT');
if(empty($UA)) {
$pv = explode(".", PHP_VERSION);
$UA = ( $pv[0] > 3 && $pv[1] > 0 ) ? $_SERVER['HTTP_USER_AGENT'] : $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
}
// 20020910 :: rraymond
if(empty($UA)) return false;
$this->_set_browser('ua',$UA);
if($run) $this->init();
}
}
?>