How to define a browser using PHP or JavaScript?

How can I determine if a user is using any of the Chrome, Firefox or Internet Explorer browsers using JavaScript or PHP?

+6
javascript php
source share
12 answers

The best way to do this in JS I found on Quirksmode . I made one for PHP that should work with common browsers:

$browser = array( 'version' => '0.0.0', 'majorver' => 0, 'minorver' => 0, 'build' => 0, 'name' => 'unknown', 'useragent' => '' ); $browsers = array( 'firefox', 'msie', 'opera', 'chrome', 'safari', 'mozilla', 'seamonkey', 'konqueror', 'netscape', 'gecko', 'navigator', 'mosaic', 'lynx', 'amaya', 'omniweb', 'avant', 'camino', 'flock', 'aol' ); if (isset($_SERVER['HTTP_USER_AGENT'])) { $browser['useragent'] = $_SERVER['HTTP_USER_AGENT']; $user_agent = strtolower($browser['useragent']); foreach($browsers as $_browser) { if (preg_match("/($_browser)[\/ ]?([0-9.]*)/", $user_agent, $match)) { $browser['name'] = $match[1]; $browser['version'] = $match[2]; @list($browser['majorver'], $browser['minorver'], $browser['build']) = explode('.', $browser['version']); break; } } } 
+15
source share

Here is the JavaScript code with which you can easily detect the browser.

  var userAgent = navigator.userAgent.toLowerCase(); // Figure out what browser is being used. var Browser = { Version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1], Chrome: /chrome/.test(userAgent), Safari: /webkit/.test(userAgent), Opera: /opera/.test(userAgent), IE: /msie/.test(userAgent) && !/opera/.test(userAgent), Mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent), Check: function() { alert(userAgent); } }; if (Browser.Chrome || Browser.Mozilla) { // Do your stuff for Firefox and Chrome. } else if (Browser.IE) { // Do something related to Internet Explorer. } else { // The browser is Safari, Opera or some other. } 
+7
source share

Actually for PHP there is a function, get_browser .

+6
source share

The php code from get_browser () fully works for me;)

 <?php function getBrowser() { $u_agent = $_SERVER['HTTP_USER_AGENT']; $bname = 'Unknown'; $platform = 'Unknown'; $version= ""; //First get the platform? if (preg_match('/linux/i', $u_agent)) { $platform = 'linux'; } elseif (preg_match('/macintosh|mac os x/i', $u_agent)) { $platform = 'mac'; } elseif (preg_match('/windows|win32/i', $u_agent)) { $platform = 'windows'; } // Next get the name of the useragent yes separately and for good reason. if (preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) { $bname = 'Internet Explorer'; $ub = "MSIE"; } elseif (preg_match('/Firefox/i',$u_agent)) { $bname = 'Mozilla Firefox'; $ub = "Firefox"; } elseif (preg_match('/Chrome/i',$u_agent)) { $bname = 'Google Chrome'; $ub = "Chrome"; } elseif (preg_match('/Safari/i',$u_agent)) { $bname = 'Apple Safari'; $ub = "Safari"; } elseif (preg_match('/Opera/i',$u_agent)) { $bname = 'Opera'; $ub = "Opera"; } elseif (preg_match('/Netscape/i',$u_agent)) { $bname = 'Netscape'; $ub = "Netscape"; } // 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 just continue } // 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 (strripos($u_agent,"Version") < strripos($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==null || $version=="") {$version="?";} return array( 'userAgent' => $u_agent, 'name' => $bname, 'version' => $version, 'platform' => $platform, 'pattern' => $pattern ); } // Now try it. $ua=getBrowser(); $yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on " . $ua['platform'] . " reports: <br >" . $ua['userAgent']; print_r($yourbrowser); ?> 
+5
source share

1) 99.9% accurate detector: BrowserDetection.php ( Examples )

2) the simplest function (but inaccurate for cheating):

 <?php function get_user_browser() { $u_agent = $_SERVER['HTTP_USER_AGENT']; $ub = ''; if(preg_match('/MSIE/i',$u_agent)) { $ub = "ie"; } elseif(preg_match('/Firefox/i',$u_agent)) { $ub = "firefox"; } elseif(preg_match('/Safari/i',$u_agent)) { $ub = "safari"; } elseif(preg_match('/Chrome/i',$u_agent)) { $ub = "chrome"; } elseif(preg_match('/Flock/i',$u_agent)) { $ub = "flock"; } elseif(preg_match('/Opera/i',$u_agent)) { $ub = "opera"; } return $ub; } ?> 
+2
source share

I am using the Browser Detection class for PHP.

+1
source share

In PHP, I use the value of $_SERVER['HTTP_USER_AGENT'] and attack it with a regex or stristr.

+1
source share

This may be an easy way to find out that the browser is not using IE, Chrome or FF.

 if (navigator.userAgent.indexOf("Chrome") != -1) BName = "Chrome"; if (navigator.userAgent.indexOf("Firefox") != -1) BName = "Firefox"; if (navigator.userAgent.indexOf("MSIE") != -1) BName = "IE"; if(BName=='Chrome' || BName=='Firefox' || BName=='IE') BName="Not other"; else BName="other"; alert(BName); 
+1
source share

Was this class in JS

 function CSystemInfo(){ var self = this; self.nScreenWidth = 0; self.nScreenHeight = 0; self.sPlatform = "Unknown"; self.sBrowser = "Unknown"; var init = function(){ self.nScreenWidth = screen.width; self.nScreenHeight = screen.height; self.sPlatform = navigator.platform; self.sBrowser = getBrowser(); } var getBrowser = function(){ var userAgent = navigator.userAgent; var version = "UNKNOWN VERSION"; if (userAgent.toLowerCase().indexOf('msie') > -1) { var ieversionreg = /(MSIE ([0-9]{1,2}\.[0-9]{1,2}))/; if(ieversionreg.test(userAgent)){ version = ieversionreg.exec(userAgent)[2]; } return 'Internet Explorer '+version; } else if (userAgent.toLowerCase().indexOf('firefox') > -1){ var ffversionreg = /(Firefox\/(.+))/; if(ffversionreg.test(userAgent)){ version = ffversionreg.exec(userAgent)[2]; } return 'Firefox '+version; } else if (userAgent.toLowerCase().indexOf('chrome') > -1){ var chromereg = /Chrome\/([0-9]{1,2})/; if(chromereg.test(userAgent)){ version = chromereg.exec(userAgent)[1]; } return 'Google Chrome '+version; } else return 'Unknown'; } init(); } 

create an instance by calling

 var oInfo = new CSystemInfo(); // Retrieve infos oInfo.sBrowser; // Google Chrome 21 
+1
source share

The easiest way to do this with JavaScript is

 <script language="Javascript"> location.href = 'URL_TO_FORWARD_TO'; </script> 

Inside location.href you can use a PHP variable like this:

 <script language="Javascript"> location.href = '<?php echo $_SERVER['QUERY_STRING']; ?>'; </script> 

To do this, you need the URL specified as a request to the PHP script, and go to that URL. The script will be invoked as follows:

 http://your-server/path-to-script/script.php?URL_TO_FORWARD_TO 

Good luck.

0
source share

The introduction of IE 11 made this method obsolete, although I updated it to take this into account. It is much better to use JavaScript and the discovery function. Of course, sometimes you just want to completely kill the browser and / or adapt to a use case where JavaScript may be disabled.

I do not know about the ultimate goal of the OP, but in my case all I really wanted to do was quit Balmer browsers. What we had turned out to be unsuccessful for IE 10 users due to a false positive result caused by a regular expression similar to another solution. (I don’t know whether the regular expression in this thread causes the same false positive or not, but I know that the one on this page does not match the broken one that we had).

I compiled a method that did not rely on regex (per se). I also did not want to run the script when I had to edit the script to host new browsers, however editing the script to expire obsolete browsers in the future is acceptable.

 function obsolete_browser(){ $ua = (isset($_SERVER['HTTP_USER_AGENT']))?$_SERVER['HTTP_USER_AGENT']:''; $browser = explode(';',$ua); foreach($browser as &$b){ $b = trim($b); // remove the spaces $c = explode('.',$b); // major revision only please if($c[0]){ $b = $c[0]; } } if(in_array("Trident/7",$browser)){ // IE11 return false; } else if(in_array('MSIE 4',$browser) || in_array('MSIE 5',$browser) || in_array('MSIE 6',$browser) || in_array('MSIE 7',$browser) // || in_array('MSIE 8',$browser) // we'll need this soon enough, right? || in_array('BOLT/2',$browser) // worst browser ever ){ return true; } return false; } 
0
source share

Just the Java Script that your browser detects, just call this function:

  <script> function which_browser() { //browser_flag --> 0 --> Opera, Chrome, Safari, Firefox //browser_flag --> 1 --> Internet Explorer var browser_flag = 0; if((navigator.userAgent.indexOf("Opera") || navigator.userAgent.indexOf('OPR')) != -1 ) { alert('Opera --> browser_flag = ' + browser_flag); } else if(navigator.userAgent.indexOf("Chrome") != -1 ) { alert('Chrome --> browser_flag = ' + browser_flag); } else if(navigator.userAgent.indexOf("Safari") != -1) { alert('Safari --> browser_flag = ' + browser_flag); } else if(navigator.userAgent.indexOf("Firefox") != -1 ) { alert('Firefox --> browser_flag = ' + browser_flag); } else if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10 { browser_flag = 1; alert('IE --> browser_flag = ' + browser_flag); } else { alert('unknown'); } return browser_flag; } </script> 

If IE, browser_flag will get 1, else browser_flag is 0!

of course adjustable

0
source share

All Articles