31733e08 |
1 | <?php |
2 | class userAgent { |
3 | // userAgent PHP class |
4 | // get user agent and tell us what Browser is accessing |
5 | // |
1defa974 |
6 | // function userAgent([$ua_string]) |
7 | // CONSTRUCTOR; reads UA string (or takes the optional given UA string) and gets info from that into our variables. |
31733e08 |
8 | // |
9 | // var $uastring |
10 | // the plain User Agent string |
11 | // var $brand |
12 | // returns the User Agent brand name |
13 | // var $version |
14 | // the User Agent version |
15 | // |
16 | // function isns() |
17 | // returns true if User Agent seems to be Netscape brand, false if not |
18 | // function isns4() |
19 | // returns true if User Agent seems to be Netscape Communicator 4.x, false if not |
20 | // function isie() |
21 | // returns true if User Agent seems to be a version of Internet Exploder, false if not |
22 | // function geckobased() |
23 | // returns true if User Agent seems to be a Gecko-based browser, false if not |
24 | // function geckodate() |
25 | // returns the Gecko date when it's a Gecko-based browser, 0 if not |
1defa974 |
26 | // function khtmlbased() |
27 | // returns true if User Agent seems to be a KHTML-based browser, false if not |
28 | |
29 | // collection of some known User Agent Strings: |
30 | // Mozilla/5.0 (compatible; Konqueror/3; Linux 2.4.18; X11; i686) |
31 | // Mozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.3b) Gecko/20030114 |
32 | // Mozilla/4.0 (compatible; MSIE 5.0; Windows 95; DigExt) |
33 | // Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90) |
34 | // Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) |
35 | // Mozilla/4.75 [de] (Win98; U) |
36 | // Opera/5.12 (Windows 2000; U) [de] |
37 | // Mozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; m18) Gecko/20010131 Netscape6/6.01 |
38 | // Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0 |
39 | // Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/51 (like Gecko) Safari/51 |
40 | // Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6g |
41 | // Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.1) Gecko/20021109 Chimera/0.6+ |
42 | // Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.3a) Gecko/20021207 Phoenix/0.5 |
43 | // Mozilla/5.0 Galeon/1.2.7 (X11; Linux i686; U;) Gecko/20021204 |
44 | // Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.05 [ja] |
45 | // Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC) OmniWeb/4.1.1-v424.6 |
31733e08 |
46 | |
31733e08 |
47 | var $uastring; |
48 | var $brand; |
49 | var $version; |
50 | |
1defa974 |
51 | function userAgent($ua_string = "") { |
31733e08 |
52 | // *** constructor *** |
1defa974 |
53 | if (strlen($ua_string)) { |
54 | $this->uastring = $ua_string; |
55 | } |
56 | else { |
57 | // read raw UA string |
58 | $this->uastring = $_SERVER["HTTP_USER_AGENT"]; |
59 | } |
31733e08 |
60 | |
61 | // get UA brand and version |
62 | $this->brand = "Unknown"; $this->version = 0; |
1defa974 |
63 | if (ereg("([0-9a-zA-Z\.]+)/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
64 | $this->brand = $regs[1]; // this is a reasonable default :) |
31733e08 |
65 | $this->version = $regs[2]; // this is a reasonable default :) |
66 | } |
1defa974 |
67 | if (ereg("Netscape6/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
31733e08 |
68 | $this->brand = "Netscape"; |
69 | $this->version = $regs[1]; |
31733e08 |
70 | } |
1defa974 |
71 | elseif (ereg("Netscape/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
31733e08 |
72 | $this->brand = "Netscape"; |
73 | $this->version = $regs[1]; |
74 | } |
1defa974 |
75 | elseif (ereg("Chimera/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
76 | $this->brand = "Chimera"; |
77 | $this->version = $regs[1]; |
78 | } |
79 | elseif (ereg("Phoenix/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
80 | $this->brand = "Phoenix"; |
81 | $this->version = $regs[1]; |
82 | } |
83 | elseif (ereg("Galeon/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
84 | $this->brand = "Galeon"; |
31733e08 |
85 | $this->version = $regs[1]; |
86 | } |
1defa974 |
87 | elseif (ereg("rv:([0-9a-zA-Z\.+]+)", $this->uastring, $regs) && strstr($this->uastring, "Mozilla/") && strstr($this->uastring, "Gecko/")) { |
31733e08 |
88 | $this->brand = "Mozilla"; |
89 | $this->version = $regs[1]; |
90 | } |
1defa974 |
91 | elseif (ereg("Opera[ /]([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
31733e08 |
92 | $this->brand = "Opera"; |
93 | $this->version = $regs[1]; |
94 | } |
1defa974 |
95 | elseif (ereg("OmniWeb/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
96 | $this->brand = "OmniWeb"; |
97 | $this->version = $regs[1]; |
98 | } |
99 | elseif (ereg("Konqueror/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
31733e08 |
100 | $this->brand = "Konqueror"; |
101 | $this->version = $regs[1]; |
102 | } |
1defa974 |
103 | elseif (ereg("Safari/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
104 | $this->brand = "Safari"; |
105 | $this->version = $regs[1]; |
106 | } |
107 | elseif (ereg("AppleWebKit/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
108 | $this->brand = "AppleWebKit"; |
109 | $this->version = $regs[1]; |
110 | } |
111 | elseif (ereg("MSIE ([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { |
31733e08 |
112 | $this->brand = "Microsoft Internet Explorer"; |
113 | $this->version = $regs[1]; |
114 | } |
1defa974 |
115 | elseif (ereg("Mozilla/([0-9a-zA-Z\.+]+)", $this->uastring, $regs) && !strstr($this->uastring, "compatible;") && !strstr($this->uastring, "Gecko/")) { |
116 | $this->brand = "Netscape"; |
117 | $this->version = $regs[1]; |
118 | if (intval($this->version) == 4) { $this->brand .= " Communicator"; } |
119 | } |
31733e08 |
120 | } |
121 | |
122 | function isns() { |
123 | // set it static so that we don't have to call it that often |
124 | static $is_ns; |
125 | if (!isset($is_ns)) { |
126 | $is_ns = false; |
127 | if (strstr($this->brand, "Netscape")) { |
128 | $is_ns = true; |
129 | } |
130 | } |
131 | return $is_ns; |
132 | } |
133 | |
134 | function isns4() { |
135 | // set it static so that we don't have to call it that often |
136 | static $is_ns4; |
137 | if (!isset($is_ns4)) { |
138 | $is_ns4 = false; |
139 | if (strstr($this->brand, "Netscape") && (intval($this->version) == 4)) { |
140 | $is_ns4 = true; |
141 | } |
142 | } |
143 | return $is_ns4; |
144 | } |
145 | |
146 | function isie() { |
147 | // set it static so that we don't have to call it that often |
148 | static $is_ie; |
149 | if (!isset($is_ie)) { |
150 | $is_ie = false; |
151 | if (strstr($this->brand, "Internet Explorer")) { |
152 | $is_ie = true; |
153 | } |
154 | } |
155 | return $is_ie; |
156 | } |
157 | |
158 | function geckobased() { |
159 | // set it static so that we don't have to call it that often |
160 | static $is_gecko; |
161 | if (!isset($is_gecko)) { |
162 | $is_gecko = false; |
163 | if (strstr($this->uastring, "Gecko/")) { |
164 | $is_gecko = true; |
165 | } |
166 | } |
167 | return $is_gecko; |
168 | } |
169 | |
170 | function geckodate() { |
171 | // set it static so that we don't have to call it that often |
172 | static $gdate; |
173 | if (!isset($gdate)) { |
174 | $gdate = 0; |
175 | if (ereg("Gecko/([0-9]+)", $this->uastring, $regs)) { |
176 | $gdate = $regs[1]; |
177 | } |
178 | } |
179 | return $gdate; |
180 | } |
1defa974 |
181 | |
182 | function khtmlbased() { |
183 | // set it static so that we don't have to call it that often |
184 | static $is_khtml; |
185 | if (!isset($is_khtml)) { |
186 | $is_khtml = false; |
187 | if (strstr($this->brand, "Konqueror") || strstr($this->brand, "Safari") || strstr($this->brand, "AppleWebKit")) { |
188 | $is_khtml = true; |
189 | } |
190 | } |
191 | return $is_khtml; |
192 | } |
31733e08 |
193 | } |
194 | ?> |