Comment puis-je détecter si l'utilisateur n'utilise aucun des navigateurs Chrome, Firefox ou Internet Explorer à l'aide de JavaScript ou de PHP? P>
12 Réponses :
Il existe en fait une fonction de PHP pour cela, get_browser . p>
Très intéressant, je n'étais pas au courant de cette fonction. thx pour l'info
Cette fonction nécessite BrowseCap.ini, qui n'est pas de base PHP.
Vrai. Voici une version PHP pure de cette fonction. Il met à jour automatiquement le fichier de navigation. code.google.com/p/phpbrowscap
Voici le code JavaScript via lequel vous pouvez facilement détecter le navigateur.
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.
}
in php j'utilise le serveur € ['http_user_agent'] code> la valeur et l'attaque avec regex ou stristr. p>
Le moyen le plus simple de le faire avec JavaScript est dans l'emplacement Cela prendrait une URL donnée en tant que requête sur le script PHP et transmettre à cette URL. Le script serait appelé comme ceci: p> bonne chance. P> p> .href code>, vous pouvez utiliser une variable PHP comme: p> < Pré> xxx pré>
La meilleure façon de faire cela dans JS I trouvé est sur QuirksMode . J'ai fait un pour PHP qui devrait fonctionner avec des navigateurs communs:
Alors j'ai lu autour de moi et c'est ce que j'ai trouvé ... que ce soit PHP ou JavaScript, ils obtiennent tous les deux les informations sur lesquelles ce navigateur est via HTTPHeaders, ainsi que la façon dont Apache fait. Correct si je me trompe.
code PHP de get_browser () est totalement Travailler pour moi;)
<?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);
?>
Ceci peut être un moyen simple de savoir que le navigateur n'utilise pas IE, Chrome ou 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);
Cette classe a fait cette classe en JS instancier en appelant p>
L'introduction de IE 11 a fait cette méthode obsolète, bien que je l'ai mise à jour pour le prendre en compte. Il est beaucoup préférable d'utiliser JavaScript et de la détection de fonctionnalités. Bien sûr, parfois, vous voulez simplement tuer un navigateur complètement et / ou avoir à adapter le cas d'utilisation où JavaScript peut être désactivé.
Je ne connais pas le but ultime de l'OP, mais dans mon cas tout ce que j'ai vraiment voulu faire était de rebondir les navigateurs de Balmer. Ce que nous avions en place a échoué pour IE 10 utilisateurs en raison d'un faux positif causé par une regex similaire à une autre solution. (Je ne sais pas si la regex de ce fil provoque le même faux positif ou non, mais je sais que celui de cette page n'est pas identique à celui que nous avions cassé). P>
J'ai fait une méthode qui ne comptait pas sur une regex (en soi). Je ne voulais pas non plus rencontrer dans un scénario où j'ai dû modifier le script pour accueillir de nouveaux navigateurs, cependant, éditer le script pour expirer des navigateurs obsolètes à l'avenir est acceptable. P>
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;
}
1) 99,9% Détecteur précis: BrowserDetection.php ( Exemples )
2) La fonction la plus simple (mais inexacte pour le trucking ): p>
Simplement script Java strong> qui détecte votre navigateur em> em> strud>, appelez simplement cette fonction forte>: <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>
Je pourrais indiquer que la connaissance du navigateur n'est utile que tant que la chaîne d'agent n'a pas été modifiée ... je suppose que vous savez déjà cela.