You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							260 lines
						
					
					
						
							7.6 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							260 lines
						
					
					
						
							7.6 KiB
						
					
					
				
								<?php
							 | 
						|
								/*****************************************************************
							 | 
						|
								
							 | 
						|
									File name: browser.php
							 | 
						|
									Author: Gary White
							 | 
						|
									Last modified: November 10, 2003
							 | 
						|
									
							 | 
						|
									**************************************************************
							 | 
						|
								
							 | 
						|
									Copyright (C) 2003  Gary White
							 | 
						|
									
							 | 
						|
									This program is free software; you can redistribute it and/or
							 | 
						|
									modify it under the terms of the GNU General Public License
							 | 
						|
									as published by the Free Software Foundation; either version 2
							 | 
						|
									of the License, or (at your option) any later version.
							 | 
						|
									
							 | 
						|
									This program 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 General Public License for more details at:
							 | 
						|
									http://www.gnu.org/copyleft/gpl.html
							 | 
						|
								
							 | 
						|
									**************************************************************
							 | 
						|
								
							 | 
						|
									Browser class
							 | 
						|
									
							 | 
						|
									Identifies the user's Operating system, browser and version
							 | 
						|
									by parsing the HTTP_USER_AGENT string sent to the server
							 | 
						|
									
							 | 
						|
									Typical Usage:
							 | 
						|
									
							 | 
						|
										require_once($_SERVER['DOCUMENT_ROOT'].'/include/browser.php');
							 | 
						|
										$br = new Browser;
							 | 
						|
										echo "$br->Platform, $br->Name version $br->Version";
							 | 
						|
									
							 | 
						|
									For operating systems, it will correctly identify:
							 | 
						|
										Microsoft Windows
							 | 
						|
										MacIntosh
							 | 
						|
										Linux
							 | 
						|
								
							 | 
						|
									Anything not determined to be one of the above is considered to by Unix
							 | 
						|
									because most Unix based browsers seem to not report the operating system.
							 | 
						|
									The only known problem here is that, if a HTTP_USER_AGENT string does not
							 | 
						|
									contain the operating system, it will be identified as Unix. For unknown
							 | 
						|
									browsers, this may not be correct.
							 | 
						|
									
							 | 
						|
									For browsers, it should correctly identify all versions of:
							 | 
						|
										Amaya
							 | 
						|
										Galeon
							 | 
						|
										iCab
							 | 
						|
										Internet Explorer
							 | 
						|
											For AOL versions it will identify as Internet Explorer (AOL) and the version
							 | 
						|
											will be the AOL version instead of the IE version.
							 | 
						|
										Konqueror
							 | 
						|
										Lynx
							 | 
						|
										Mozilla
							 | 
						|
										Netscape Navigator/Communicator
							 | 
						|
										OmniWeb
							 | 
						|
										Opera
							 | 
						|
										Pocket Internet Explorer for handhelds
							 | 
						|
										Safari
							 | 
						|
										WebTV
							 | 
						|
								*****************************************************************/
							 | 
						|
								
							 | 
						|
								class browser{
							 | 
						|
								
							 | 
						|
									var $Name = "Unknown";
							 | 
						|
									var $Version = "Unknown";
							 | 
						|
									var $Platform = "Unknown";
							 | 
						|
									var $UserAgent = "Not reported";
							 | 
						|
									var $AOL = false;
							 | 
						|
								
							 | 
						|
									function browser(){
							 | 
						|
										$agent = $_SERVER['HTTP_USER_AGENT'];
							 | 
						|
								
							 | 
						|
										// initialize properties
							 | 
						|
										$bd['platform'] = "Unknown";
							 | 
						|
										$bd['browser'] = "Unknown";
							 | 
						|
										$bd['version'] = "Unknown";
							 | 
						|
										$this->UserAgent = $agent;
							 | 
						|
								
							 | 
						|
										// find operating system
							 | 
						|
										if (eregi("win", $agent))
							 | 
						|
											$bd['platform'] = "Windows";
							 | 
						|
										elseif (eregi("mac", $agent))
							 | 
						|
											$bd['platform'] = "Mac";
							 | 
						|
										elseif (eregi("linux", $agent))
							 | 
						|
											$bd['platform'] = "Linux";
							 | 
						|
										elseif (eregi("OS/2", $agent))
							 | 
						|
											$bd['platform'] = "OS/2";
							 | 
						|
										elseif (eregi("BeOS", $agent))
							 | 
						|
											$bd['platform'] = "BeOS";
							 | 
						|
								
							 | 
						|
										// test for Opera		
							 | 
						|
										if (eregi("opera",$agent)){
							 | 
						|
											$val = stristr($agent, "opera");
							 | 
						|
											if (eregi("/", $val)){
							 | 
						|
												$val = explode("/",$val);
							 | 
						|
												$bd['browser'] = $val[0];
							 | 
						|
												$val = explode(" ",$val[1]);
							 | 
						|
												$bd['version'] = $val[0];
							 | 
						|
											}else{
							 | 
						|
												$val = explode(" ",stristr($val,"opera"));
							 | 
						|
												$bd['browser'] = $val[0];
							 | 
						|
												$bd['version'] = $val[1];
							 | 
						|
											}
							 | 
						|
								
							 | 
						|
										// test for WebTV
							 | 
						|
										}elseif(eregi("webtv",$agent)){
							 | 
						|
											$val = explode("/",stristr($agent,"webtv"));
							 | 
						|
											$bd['browser'] = $val[0];
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
										
							 | 
						|
										// test for MS Internet Explorer version 1
							 | 
						|
										}elseif(eregi("microsoft internet explorer", $agent)){
							 | 
						|
											$bd['browser'] = "MSIE";
							 | 
						|
											$bd['version'] = "1.0";
							 | 
						|
											$var = stristr($agent, "/");
							 | 
						|
											if (ereg("308|425|426|474|0b1", $var)){
							 | 
						|
												$bd['version'] = "1.5";
							 | 
						|
											}
							 | 
						|
								
							 | 
						|
										// test for NetPositive
							 | 
						|
										}elseif(eregi("NetPositive", $agent)){
							 | 
						|
											$val = explode("/",stristr($agent,"NetPositive"));
							 | 
						|
											$bd['platform'] = "BeOS";
							 | 
						|
											$bd['browser'] = $val[0];
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
								
							 | 
						|
										// test for MS Internet Explorer
							 | 
						|
										}elseif(eregi("msie",$agent) && !eregi("opera",$agent)){
							 | 
						|
											$val = explode(" ",stristr($agent,"msie"));
							 | 
						|
											$bd['browser'] = $val[0];
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
										
							 | 
						|
										// test for MS Pocket Internet Explorer
							 | 
						|
										}elseif(eregi("mspie",$agent) || eregi('pocket', $agent)){
							 | 
						|
											$val = explode(" ",stristr($agent,"mspie"));
							 | 
						|
											$bd['browser'] = "MSPIE";
							 | 
						|
											$bd['platform'] = "WindowsCE";
							 | 
						|
											if (eregi("mspie", $agent))
							 | 
						|
												$bd['version'] = $val[1];
							 | 
						|
											else {
							 | 
						|
												$val = explode("/",$agent);
							 | 
						|
												$bd['version'] = $val[1];
							 | 
						|
											}
							 | 
						|
											
							 | 
						|
										// test for Galeon
							 | 
						|
										}elseif(eregi("galeon",$agent)){
							 | 
						|
											$val = explode(" ",stristr($agent,"galeon"));
							 | 
						|
											$val = explode("/",$val[0]);
							 | 
						|
											$bd['browser'] = $val[0];
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
											
							 | 
						|
										// test for Konqueror
							 | 
						|
										}elseif(eregi("Konqueror",$agent)){
							 | 
						|
											$val = explode(" ",stristr($agent,"Konqueror"));
							 | 
						|
											$val = explode("/",$val[0]);
							 | 
						|
											$bd['browser'] = $val[0];
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
											
							 | 
						|
										// test for iCab
							 | 
						|
										}elseif(eregi("icab",$agent)){
							 | 
						|
											$val = explode(" ",stristr($agent,"icab"));
							 | 
						|
											$bd['browser'] = $val[0];
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
								
							 | 
						|
										// test for OmniWeb
							 | 
						|
										}elseif(eregi("omniweb",$agent)){
							 | 
						|
											$val = explode("/",stristr($agent,"omniweb"));
							 | 
						|
											$bd['browser'] = $val[0];
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
								
							 | 
						|
										// test for Phoenix
							 | 
						|
										}elseif(eregi("Phoenix", $agent)){
							 | 
						|
											$bd['browser'] = "Phoenix";
							 | 
						|
											$val = explode("/", stristr($agent,"Phoenix/"));
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
										
							 | 
						|
										// test for Firebird
							 | 
						|
										}elseif(eregi("firebird", $agent)){
							 | 
						|
											$bd['browser']="Firebird";
							 | 
						|
											$val = stristr($agent, "Firebird");
							 | 
						|
											$val = explode("/",$val);
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
											
							 | 
						|
										// test for Firefox
							 | 
						|
										}elseif(eregi("Firefox", $agent)){
							 | 
						|
											$bd['browser']="Firefox";
							 | 
						|
											$val = stristr($agent, "Firefox");
							 | 
						|
											$val = explode("/",$val);
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
											
							 | 
						|
									  // test for Mozilla Alpha/Beta Versions
							 | 
						|
										}elseif(eregi("mozilla",$agent) && 
							 | 
						|
											eregi("rv:[0-9].[0-9][a-b]",$agent) && !eregi("netscape",$agent)){
							 | 
						|
											$bd['browser'] = "Mozilla";
							 | 
						|
											$val = explode(" ",stristr($agent,"rv:"));
							 | 
						|
											eregi("rv:[0-9].[0-9][a-b]",$agent,$val);
							 | 
						|
											$bd['version'] = str_replace("rv:","",$val[0]);
							 | 
						|
											
							 | 
						|
										// test for Mozilla Stable Versions
							 | 
						|
										}elseif(eregi("mozilla",$agent) &&
							 | 
						|
											eregi("rv:[0-9]\.[0-9]",$agent) && !eregi("netscape",$agent)){
							 | 
						|
											$bd['browser'] = "Mozilla";
							 | 
						|
											$val = explode(" ",stristr($agent,"rv:"));
							 | 
						|
											eregi("rv:[0-9]\.[0-9]\.[0-9]",$agent,$val);
							 | 
						|
											$bd['version'] = str_replace("rv:","",$val[0]);
							 | 
						|
										
							 | 
						|
										// test for Lynx & Amaya
							 | 
						|
										}elseif(eregi("libwww", $agent)){
							 | 
						|
											if (eregi("amaya", $agent)){
							 | 
						|
												$val = explode("/",stristr($agent,"amaya"));
							 | 
						|
												$bd['browser'] = "Amaya";
							 | 
						|
												$val = explode(" ", $val[1]);
							 | 
						|
												$bd['version'] = $val[0];
							 | 
						|
											} else {
							 | 
						|
												$val = explode("/",$agent);
							 | 
						|
												$bd['browser'] = "Lynx";
							 | 
						|
												$bd['version'] = $val[1];
							 | 
						|
											}
							 | 
						|
										
							 | 
						|
										// test for Safari
							 | 
						|
										}elseif(eregi("safari", $agent)){
							 | 
						|
											$bd['browser'] = "Safari";
							 | 
						|
											$bd['version'] = "";
							 | 
						|
								
							 | 
						|
										// remaining two tests are for Netscape
							 | 
						|
										}elseif(eregi("netscape",$agent)){
							 | 
						|
											$val = explode(" ",stristr($agent,"netscape"));
							 | 
						|
											$val = explode("/",$val[0]);
							 | 
						|
											$bd['browser'] = $val[0];
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
										}elseif(eregi("mozilla",$agent) && !eregi("rv:[0-9]\.[0-9]\.[0-9]",$agent)){
							 | 
						|
											$val = explode(" ",stristr($agent,"mozilla"));
							 | 
						|
											$val = explode("/",$val[0]);
							 | 
						|
											$bd['browser'] = "Netscape";
							 | 
						|
											$bd['version'] = $val[1];
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										// clean up extraneous garbage that may be in the name
							 | 
						|
										$bd['browser'] = ereg_replace("[^a-z,A-Z]", "", $bd['browser']);
							 | 
						|
										// clean up extraneous garbage that may be in the version		
							 | 
						|
										$bd['version'] = ereg_replace("[^0-9,.,a-z,A-Z]", "", $bd['version']);
							 | 
						|
										
							 | 
						|
										// check for AOL
							 | 
						|
										if (eregi("AOL", $agent)){
							 | 
						|
											$var = stristr($agent, "AOL");
							 | 
						|
											$var = explode(" ", $var);
							 | 
						|
											$bd['aol'] = ereg_replace("[^0-9,.,a-z,A-Z]", "", $var[1]);
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										// finally assign our properties
							 | 
						|
										$this->Name = $bd['browser'];
							 | 
						|
										$this->Version = $bd['version'];
							 | 
						|
										$this->Platform = $bd['platform'];
							 | 
						|
										$this->AOL = $bd['aol'];
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								?>
							 | 
						|
								
							 |