Как определить браузер с помощью PHP или JavaScript?

Как я могу определить, не использует ли пользователь какой-либо из браузеров Chrome, Firefox или Internet Explorer с использованием JavaScript или PHP?

Solutions Collecting From Web of "Как определить браузер с помощью PHP или JavaScript?"

Лучший способ сделать это в JS, который я нашел, – на Quirksmode . Я сделал один для PHP, который должен работать с общими браузерами:

$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; } } } 

Вот код JavaScript, с помощью которого вы можете легко обнаружить браузер.

  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. } 

На самом деле на PHP есть функция для get_browser .

PHP-код из get_browser () полностью работает для меня;)

 <?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); ?> 

1) 99,9% точный детектор: BrowserDetection.php ( примеры )

2) простейшая функция (но неточная для обмана):

 <?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; } ?> 

В PHP я использую значение $_SERVER['HTTP_USER_AGENT'] и атакую ​​его с помощью регулярного выражения или stristr.

Я использую класс Browser Detect для PHP.

Это может быть простой способ узнать, что браузер не использует IE, Chrome или 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); 

Был ли этот класс в 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(); } 

создать экземпляр

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

Самый простой способ сделать это с помощью JavaScript – это

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

В пределах location.href вы можете использовать переменную PHP так:

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

Для этого потребуется URL-адрес, заданный как запрос к скрипту PHP, и перенаправление на этот URL-адрес. Сценарий будет вызываться следующим образом:

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

Удачи.

Введение IE 11 сделало этот метод устаревшим, хотя я обновил его, чтобы принять это во внимание. Гораздо лучше использовать JavaScript и функцию обнаружения. Конечно, иногда вы просто хотите полностью убить браузер и / или приспособиться к варианту использования, где JavaScript может быть отключен.

Я не знаю о конечной цели OP, но в моем случае все, что я действительно хотел сделать, это отскакивать браузеры Бальмера. То, что у нас было, оказалось неудачным для пользователей IE 10 из-за ложного положительного результата, вызванного регулярным выражением, аналогичным другому решению. (Я не знаю, вызывает ли регулярное выражение в этом потоке то же ложное положительное или нет, но я знаю, что тот, что на этой странице, не совпадает с сломанным, который у нас был).

Я составил метод, который не полагался на регулярное выражение (per se). Я также не хотел запускать сценарий, когда мне приходилось редактировать сценарий для размещения новых браузеров, однако редактирование сценария для истечения устаревших браузеров в будущем приемлемо.

 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; } 

Просто скрипт Java, который обнаруживает ваш браузер , просто вызовите эту функцию:

  <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> 

Если IE, browser_flag – 1, иначе браузер_flag равен 0!

конечно регулируемый