Jump to content

find out is browser is firefox and using vista


jasonc

Recommended Posts

<?php 
    $OSList = array 
      (
              // Match user agent string with operating systems
              'Windows 3.11' => 'Win16',
              'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
              'Windows 98' => '(Windows 98)|(Win98)',
              'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
              'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
              'Windows Server 2003' => '(Windows NT 5.2)',
              'Windows Vista' => '(Windows NT 6.0)',
              'Windows 7' => '(Windows NT 7.0)',
              'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
              'Windows ME' => 'Windows ME',
              'Open BSD' => 'OpenBSD',
              'Sun OS' => 'SunOS',
              'Linux' => '(Linux)|(X11)',
              'Mac OS' => '(Mac_PowerPC)|(Macintosh)',
              'QNX' => 'QNX', 
              'BeOS' => 'BeOS',
              'OS/2' => 'OS/2',
              'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
      );
      // Loop through the array of user agents and matching operating systems
      foreach($OSList as $CurrOS=>$Match)
      {
              // Find a match
              if (eregi($Match, $_SERVER['HTTP_USER_AGENT']))
              {
                      // We found the correct match
                      break;
              }
      }
      // You are using ...
      echo "You are using ".$CurrOS;
      
      	class Browser {
	private $_agent = '';
	private $_browser_name = '';
	private $_version = '';
	private $_platform = '';
	private $_os = '';
	private $_is_aol = false;
	private $_aol_version = '';

	const BROWSER_UNKNOWN = 'unknown';
	const VERSION_UNKNOWN = 'unknown';

	const BROWSER_OPERA = 'Opera';
	const BROWSER_WEBTV = 'WebTV';
	const BROWSER_NETPOSITIVE = 'NetPositive';
	const BROWSER_IE = 'Internet Explorer';
	const BROWSER_POCKET_IE = 'Pocket Internet Explorer';
	const BROWSER_GALEON = 'Galeon';
	const BROWSER_KONQUEROR = 'Konqueror';
	const BROWSER_ICAB = 'iCab';
	const BROWSER_OMNIWEB = 'OmniWeb';
	const BROWSER_PHOENIX = 'Phoenix';
	const BROWSER_FIREBIRD = 'Firebird';
	const BROWSER_FIREFOX = 'Firefox';
	const BROWSER_MOZILLA = 'Mozilla';
	const BROWSER_AMAYA = 'Amaya';
	const BROWSER_LYNX = 'Lynx';
	const BROWSER_SAFARI = 'Safari';
	const BROWSER_IPHONE = 'iPhone';
        const BROWSER_IPOD = 'iPod';
	const BROWSER_CHROME = 'Chrome';
        const BROWSER_ANDROID = 'Android';
        const BROWSER_GOOGLEBOT = 'GoogleBot';
        const BROWSER_SLURP = 'Yahoo! Slurp';
        const BROWSER_W3CVALIDATOR = 'W3C Validator';
        
	const PLATFORM_UNKNOWN = 'unknown';
	const PLATFORM_WINDOWS = 'Windows';
	const PLATFORM_WINDOWS_CE = 'Windows CE';
	const PLATFORM_APPLE = 'Apple';
	const PLATFORM_LINUX = 'Linux';
	const PLATFORM_OS2 = 'OS/2';
	const PLATFORM_BEOS = 'BeOS';
	const PLATFORM_IPHONE = 'iPhone';
	const PLATFORM_IPOD = 'iPod';

	const OPERATING_SYSTEM_UNKNOWN = 'unknown';

	public function __construct() {
		$this->reset();
		$this->determine();
	}
	/**
	 * Reset all properties
	 */
	public function reset() {
		$this->_agent = $_SERVER['HTTP_USER_AGENT'];
		$this->_browser_name = self::BROWSER_UNKNOWN;
		$this->_version = self::VERSION_UNKNOWN;
		$this->_platform = self::PLATFORM_UNKNOWN;
		$this->_os = self::OPERATING_SYSTEM_UNKNOWN;
		$this->_is_aol = false;
		$this->_aol_version = self::VERSION_UNKNOWN;
	}

	/**
	 * Check to see if the specific browser is valid
	 * @param string $browserName
	 * @return True if the browser is the specified browser
	 */
	function isBrowser($browserName) { return( 0 == strcasecmp($this->_browser_name, trim($browserName))); }

	/**
	 * The name of the browser.  All return types are from the class contants
	 * @return string Name of the browser
	 */
	public function getBrowser() { return $this->_browser_name; }
	/**
	 * Set the name of the browser
	 * @param $browser The name of the Browser
	 */
	public function setBrowser($browser) { return $this->_browser_name = $browser; }
	/**
	 * The name of the platform.  All return types are from the class contants
	 * @return string Name of the browser
	 */
	public function getPlatform() { return $this->_platform; }
	/**
	 * Set the name of the platform
	 * @param $platform The name of the Platform
	 */
	public function setPlatform($platform) { return $this->_platform = $platform; }
	/**
	 * The version of the browser.
	 * @return string Version of the browser (will only contain alpha-numeric characters and a period)
	 */
	public function getVersion() { return $this->_version; }
	/**
	 * Set the version of the browser
	 * @param $version The version of the Browser
	 */
	public function setVersion($version) { $this->_version = ereg_replace('[^0-9,.,a-z,A-Z]','',$version); }
	/**
	 * The version of AOL.
	 * @return string Version of AOL (will only contain alpha-numeric characters and a period)
	 */
	public function getAolVersion() { return $this->_aol_version; }
	/**
	 * Set the version of AOL
	 * @param $version The version of AOL
	 */
	public function setAolVersion($version) { $this->_aol_version = ereg_replace('[^0-9,.,a-z,A-Z]','',$version); }
	/**
	 * Is the browser from AOL?
	 * @return boolean True if the browser is from AOL otherwise false
	 */
	public function isAol() { return $this->_is_aol; }
	/**
	 * Set the browser to be from AOL
	 * @param $isAol
	 */
	public function setAol($isAol) { $this->_is_aol = $isAol; }
	/**
	 * Get the user agent value in use to determine the browser
	 * @return string The user agent from the HTTP header
	 */
	public function getUserAgent() { return $this->_agent; }
	/**
	 * Set the user agent value (the construction will use the HTTP header value - this will overwrite it)
	 * @param $agent_string The value for the User Agent
	 */
	public function setUserAgent($agent_string) {
		$this->reset();
		$this->_agent = $agent_string;
		$this->determine();
	}
	/**
	 * Protected routine to calculate and determine what the browser is in use (including platform)
	 */
	protected function determine() {
		$this->checkPlatform();
		$this->checkBrowsers();
		$this->checkForAol();
	}

	/**
	 * Protected routine to determine the browser type
	 * @return boolean True if the browser was detected otherwise false
	 */
	protected function checkBrowsers() {
		return (
					$this->checkBrowserGoogleBot() ||
					$this->checkBrowserSlurp() ||
					$this->checkBrowserInternetExplorer() ||
					$this->checkBrowserFirefox() ||
					$this->checkBrowserChrome() ||
                        $this->checkBrowserAndroid() ||
					$this->checkBrowserSafari() ||
					$this->checkBrowserOpera() ||
					$this->checkBrowserNetPositive() ||
					$this->checkBrowserFirebird() ||
					$this->checkBrowserGaleon() ||
					$this->checkBrowserKonqueror() ||
					$this->checkBrowserIcab() ||
					$this->checkBrowserOmniWeb() ||
					$this->checkBrowserPhoenix() ||
					$this->checkBrowserWebTv() ||
					$this->checkBrowserAmaya() ||
					$this->checkBrowserLynx() ||
					$this->checkBrowseriPhone() ||
					$this->checkBrowseriPod() ||
					$this->checkBrowserW3CValidator() ||
					$this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */	
					);
	}

	/**
	 * Determine if the user is using an AOL User Agent
	 * @return boolean True if the browser is from AOL otherwise false
	 */
	protected function checkForAol() {
		$retval = false;
		if( eregi("AOL", $this->_agent) ) {
			$aversion = explode(' ',stristr($this->_agent, "AOL"));
			$this->setAol(true);
			$this->setAolVersion(ereg_replace("[^0-9,.,a-z,A-Z]", "", $aversion[1]));
			$retval = true;
		}
		else {
			$this->setAol(false);
			$this->setAolVersion(self::VERSION_UNKNOWN);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is the GoogleBot or not
	 * @return boolean True if the browser is the GoogletBot otherwise false
	 */
	protected function checkBrowserGoogleBot() {
		$retval = false;
		if( eregi('googlebot',$this->_agent) ) {
			$aresult = explode("/",stristr($this->_agent,"googlebot"));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->_browser_name = self::BROWSER_GOOGLEBOT;
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is the W3C Validator or not
	 * @return boolean True if the browser is the W3C Validator otherwise false
	 */
	protected function checkBrowserW3CValidator() {
		$retval = false;
		if( eregi('W3C-checklink',$this->_agent) ) {
			$aresult = explode("/",stristr($this->_agent,"W3C-checklink"));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->_browser_name = self::BROWSER_W3CVALIDATOR;
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is the W3C Validator or not
	 * @return boolean True if the browser is the W3C Validator otherwise false
	 */
	protected function checkBrowserSlurp() {
		$retval = false;
		if( eregi('Slurp',$this->_agent) ) {
			$aresult = explode("/",stristr($this->_agent,"Slurp"));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->_browser_name = self::BROWSER_SLURP;
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Internet Explorer or not
	 * @return boolean True if the browser is Internet Explorer otherwise false
	 */
	protected function checkBrowserInternetExplorer() {
		$retval = false;

		// Test for v1 - v1.5 IE
		if( eregi('microsoft internet explorer', $this->_agent) ) {
			$this->setBrowser(self::BROWSER_IE);
			$this->setVersion('1.0');
			$aresult = stristr($this->_agent, '/');
			if( ereg('308|425|426|474|0b1', $aresult) ) {
				$this->setVersion('1.5');
			}
			$retval = true;
		}
		// Test for versions > 1.5
		else if( eregi('msie',$this->_agent) && !eregi('opera',$this->_agent) ) {
			$aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'msie'));
			$this->setBrowser( self::BROWSER_IE );
			$this->setVersion($aresult[1]);
			$retval = true;
		}
		// Test for Pocket IE
		else if( eregi('mspie',$this->_agent) || eregi('pocket', $this->_agent) ) {
			$aresult = explode(' ',stristr($this->_agent,'mspie'));
			$this->setPlatform( self::PLATFORM_WINDOWS_CE );
			$this->setBrowser( self::BROWSER_POCKET_IE );

			if( eregi('mspie', $this->_agent) ) {
				$this->setVersion($aresult[1]);
			}
			else {
				$aversion = explode('/',$this->_agent);
				$this->setVersion($aversion[1]);
			}
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Opera or not
	 * @return boolean True if the browser is Opera otherwise false
	 */
	protected function checkBrowserOpera() {
		$retval = false;
		if( eregi('opera',$this->_agent) ) {
			$resultant = stristr($this->_agent, 'opera');
			if( eregi('/',$resultant) ) {
				$aresult = explode('/',$resultant);
				$aversion = explode(' ',$aresult[1]); 
				$this->setVersion($aversion[0]);
				$this->_browser_name = self::BROWSER_OPERA;
				$retval = true;
			}
			else {
				$aversion = explode(' ',stristr($resultant,'opera'));
				$this->setVersion($aversion[1]);
				$this->_browser_name = self::BROWSER_OPERA;
				$retval = true;
			}
		}
		return $retval;
	}

	/**
	 * Determine if the browser is WebTv or not
	 * @return boolean True if the browser is WebTv otherwise false
	 */
	protected function checkBrowserWebTv() {
		$retval = false;
		if( eregi('webtv',$this->_agent) ) {
			$aresult = explode("/",stristr($this->_agent,"webtv"));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->_browser_name = self::BROWSER_WEBTV;
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is NetPositive or not
	 * @return boolean True if the browser is NetPositive otherwise false
	 */
	protected function checkBrowserNetPositive() {
		$retval = false;
		if( eregi('NetPositive',$this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'NetPositive'));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->_browser_name = self::BROWSER_NETPOSITIVE;
			$this->_platform = self::PLATFORM_BEOS;
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Galeon or not
	 * @return boolean True if the browser is Galeon otherwise false
	 */
	protected function checkBrowserGaleon() {
		$retval = false;
		if( eregi('galeon',$this->_agent) ) {
			$aresult = explode(' ',stristr($this->_agent,'galeon'));
			$aversion = explode('/',$aresult[0]);
			$this->setVersion($aversion[1]);
			$this->setBrowser(self::BROWSER_GALEON);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Konqueror or not
	 * @return boolean True if the browser is Konqueror otherwise false
	 */
	protected function checkBrowserKonqueror() {
		$retval = false;
		if( eregi('Konqueror',$this->_agent) ) {
			$aresult = explode(' ',stristr($this->_agent,'Konqueror'));
			$aversion = explode('/',$aresult[0]);
			$this->setVersion($aversion[1]);
			$this->setBrowser(self::BROWSER_KONQUEROR);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is iCab or not
	 * @return boolean True if the browser is iCab otherwise false
	 */
	protected function checkBrowserIcab() {
		$retval = false;
		if( eregi('icab',$this->_agent) ) {
			$aversion = explode(' ',stristr(str_replace('/',' ',$this->_agent),'icab'));
			$this->setVersion($aversion[1]);
			$this->setBrowser(self::BROWSER_ICAB);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is OmniWeb or not
	 * @return boolean True if the browser is OmniWeb otherwise false
	 */
	protected function checkBrowserOmniWeb() {
		$retval = false;
		if( eregi('omniweb',$this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'omniweb'));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->setBrowser(self::BROWSER_OMNIWEB);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Phoenix or not
	 * @return boolean True if the browser is Phoenix otherwise false
	 */
	protected function checkBrowserPhoenix() {
		$retval = false;
		if( eregi('Phoenix',$this->_agent) ) {
			$aversion = explode('/',stristr($this->_agent,'Phoenix'));
			$this->setVersion($aversion[1]);
			$this->setBrowser(self::BROWSER_PHOENIX);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Firebird or not
	 * @return boolean True if the browser is Firebird otherwise false
	 */
	protected function checkBrowserFirebird() {
		$retval = false;
		if( eregi('Firebird',$this->_agent) ) {
			$aversion = explode('/',stristr($this->_agent,'Firebird'));
			$this->setVersion($aversion[1]);
			$this->setBrowser(self::BROWSER_FIREBIRD);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Firefox or not
	 * @return boolean True if the browser is Firefox otherwise false
	 */
	protected function checkBrowserFirefox() {
		$retval = false;
		if( eregi('Firefox',$this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'Firefox'));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->setBrowser(self::BROWSER_FIREFOX);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Mozilla or not
	 * @return boolean True if the browser is Mozilla otherwise false
	 */
	protected function checkBrowserMozilla() {
		$retval = false;
		if( eregi('Mozilla',$this->_agent) && eregi('rv:[0-9].[0-9][a-b]',$this->_agent) && !eregi('netscape',$this->_agent)) {
			$aversion = explode(' ',stristr($this->_agent,'rv:'));
			eregi('rv:[0-9].[0-9][a-b]',$this->_agent,$aversion);
			$this->setVersion($aversion[0]);
			$this->setBrowser(self::BROWSER_MOZILLA);
			$retval = true;
		}
		else if( eregi('mozilla',$this->_agent) && eregi('rv:[0-9]\.[0-9]',$this->_agent) && !eregi('netscape',$this->_agent) ) {
			$aversion = explode(" ",stristr($this->_agent,'rv:'));
            	eregi('rv:[0-9]\.[0-9]\.[0-9]',$this->_agent,$aversion);
			$this->setVersion($aversion[0]);
			$this->setBrowser(self::BROWSER_MOZILLA);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Lynx or not
	 * @return boolean True if the browser is Lynx otherwise false
	 */
	protected function checkBrowserLynx() {
		$retval = false;
		if( eregi('libwww',$this->_agent) && eregi("lynx", $this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'Lynx'));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->setBrowser(self::BROWSER_LYNX);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Amaya or not
	 * @return boolean True if the browser is Amaya otherwise false
	 */
	protected function checkBrowserAmaya() {
		$retval = false;
		if( eregi('libwww',$this->_agent) && eregi("amaya", $this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'Amaya'));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->setBrowser(self::BROWSER_AMAYA);
			$retval = true;
		}
		return $retval;
	}

	/**
	 * Determine if the browser is Chrome or not
	 * @return boolean True if the browser is Safari otherwise false
	 */
	protected function checkBrowserChrome() {
		$retval = false;
		if( eregi('Chrome',$this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'Chrome'));
			$aversion = explode(' ',$aresult[1]);
			$this->setVersion($aversion[0]);
			$this->setBrowser(self::BROWSER_CHROME);
			$retval = true;
		}
		return $retval;
	}		

	/**
	 * Determine if the browser is Safari or not
	 * @return boolean True if the browser is Safari otherwise false
	 */
	protected function checkBrowserSafari() {
		$retval = false;
		if( eregi('Safari',$this->_agent) && ! eregi('iPhone',$this->_agent) && ! eregi('iPod',$this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'Version'));
			if( isset($aresult[1]) ) {
				$aversion = explode(' ',$aresult[1]);
				$this->setVersion($aversion[0]);
			}
			else {
				$this->setVersion(self::VERSION_UNKNOWN);
			}
			$this->setBrowser(self::BROWSER_SAFARI);
			$retval = true;
		}
		return $retval;
	}		

	/**
	 * Determine if the browser is iPhone or not
	 * @return boolean True if the browser is iPhone otherwise false
	 */
	protected function checkBrowseriPhone() {
		$retval = false;
		if( eregi('iPhone',$this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'Version'));
			if( isset($aresult[1]) ) {
				$aversion = explode(' ',$aresult[1]);
				$this->setVersion($aversion[0]);
			}
			else {
				$this->setVersion(self::VERSION_UNKNOWN);
			}
			$this->setBrowser(self::BROWSER_IPHONE);
			$retval = true;
		}
		return $retval;
	}		

	/**
	 * Determine if the browser is iPod or not
	 * @return boolean True if the browser is iPod otherwise false
	 */
	protected function checkBrowseriPod() {
		$retval = false;
		if( eregi('iPod',$this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'Version'));
			if( isset($aresult[1]) ) {
				$aversion = explode(' ',$aresult[1]);
				$this->setVersion($aversion[0]);
			}
			else {
				$this->setVersion(self::VERSION_UNKNOWN);
			}
			$this->setBrowser(self::BROWSER_IPOD);
			$retval = true;
		}
		return $retval;
	}		

	/**
	 * Determine if the browser is Android or not
	 * @return boolean True if the browser is Android otherwise false
	 */
	protected function checkBrowserAndroid() {
		$retval = false;
		if( eregi('Android',$this->_agent) ) {
			$aresult = explode('/',stristr($this->_agent,'Version'));
			if( isset($aresult[1]) ) {
				$aversion = explode(' ',$aresult[1]);
				$this->setVersion($aversion[0]);
			}
			else {
				$this->setVersion(self::VERSION_UNKNOWN);
			}
			$this->setBrowser(self::BROWSER_ANDROID);
			$retval = true;
		}
		return $retval;
	}		

	/**
	 * Determine the user's platform
	 */
	protected function checkPlatform() {
		if( eregi("iPhone", $this->_agent) ) {
			$this->_platform = self::PLATFORM_IPHONE;
		}
		else if( eregi("iPod", $this->_agent) ) {
			$this->_platform = self::PLATFORM_IPOD;
		}
		else if( eregi("win", $this->_agent) ) {
			$this->_platform = self::PLATFORM_WINDOWS;
		}
		elseif( eregi("mac", $this->_agent) ) {
			$this->_platform = self::PLATFORM_APPLE;
		}
		elseif( eregi("linux", $this->_agent) ) {
			$this->_platform = self::PLATFORM_LINUX;
		}
		elseif( eregi("OS/2", $this->_agent) ) {
			$this->_platform = self::PLATFORM_OS2;
		}
		elseif( eregi("BeOS", $this->_agent) ) {
			$this->_platform = self::PLATFORM_BEOS;
		}
	}
}

$browser = new Browser();
echo " with ";
echo $browser->getBrowser() . " ";
echo $browser->getVersion();

?> 

 

Will output

 

You are using [uSER OS] with [uSER BROWSER]

 

 

If you want to do anything based on browser OS do the following

 


if ( $CurrOS == "Windows Vista" AND $browser->getBrowser() == "Firefox" ) {
//Do Something
}
else {
// The aren't using Vista AND Firefox, so condition is false, so do nothing
}

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.