Interdire l'accès à certaines versions de navigateurs en php.
Fontainard
Messages postés
68
Date d'inscription
Statut
Membre
Dernière intervention
-
Stanislas Poisson Messages postés 424 Date d'inscription Statut Membre Dernière intervention -
Stanislas Poisson Messages postés 424 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerais cacher un formulaire pour les utilisateurs de navigateurs obsolètes pour mon site, tels que<ie8, opéra etc par le biais du php5...
Je n'ai pas réussi à faire de choses concluantes avec le ereg et le http_user_agent, auriez vous des propositions, des idées sur la démarche à effectuer s'il vous plait?
Merci grandement pour votre aide,
J'aimerais cacher un formulaire pour les utilisateurs de navigateurs obsolètes pour mon site, tels que<ie8, opéra etc par le biais du php5...
Je n'ai pas réussi à faire de choses concluantes avec le ereg et le http_user_agent, auriez vous des propositions, des idées sur la démarche à effectuer s'il vous plait?
Merci grandement pour votre aide,
A voir également:
- Interdire l'accès à certaines versions de navigateurs en php.
- Acces rapide - Guide
- Je n'ai plus acces a ma boite mail gmail - Guide
- Accès refusé - Guide
- Trousseau d'accès iphone - Guide
- Easy php - Télécharger - Divers Web & Internet
2 réponses
'lut, avant toute chose, sache que ereg est obsolète! Donc à ne jamais utiliser.
Utilise preg_match à la place.
Quand à l'utilisation de l'
D'ailleurs, je ne vois pas pourquoi tu t'embêtes a créer ta propre fonction de détection alors que PHP a la sienne, get_browser, qui te renvoie un tableau rempli d'infos, incluant la version du navigateur. Sers-toi en.
Utilise preg_match à la place.
Quand à l'utilisation de l'
User-Agent, c'est une pratique très répandue mais pas forcément efficace vu qu'on peut changer l'
User-Agent... mais la majorité des gens ne le font pas, donc ça reste potable.
D'ailleurs, je ne vois pas pourquoi tu t'embêtes a créer ta propre fonction de détection alors que PHP a la sienne, get_browser, qui te renvoie un tableau rempli d'infos, incluant la version du navigateur. Sers-toi en.
Voilà mon code, je m'étais inspiré d'une source sur internet.
Le problème réside dans le fait que le preg_match ne semble pas fonctionner du tout alors que le navigateur renvois la version exacte du navigateur. Le problème réside alors dans les trois dernières lignes du code avec lequel je n'arrive à rien ;P
Si vous pouviez m'aider ça serait gentil!
Merci!
<?php ini_set("display_errors",0);error_reporting(0); function getBrowser() { $u_agent = $_SERVER['HTTP_USER_AGENT']; $bname = 'Unknown'; $platform = 'Unknown'; $version= ""; 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'; } 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"; } $known = array('Version', $ub, 'other'); $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#'; if (!preg_match_all($pattern, $u_agent, $matches)) { } $i = count($matches['browser']); if ($i != 1) { if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){ $version= $matches['version'][0]; } else { $version= $matches['version'][1]; } } else { $version= $matches['version'][0]; } if ($version==null || $version=="") {$version="?";} return array( 'userAgent' => $u_agent, 'name' => $bname, 'version' => $version, 'platform' => $platform, 'pattern' => $pattern ); } $ua=getBrowser(); $yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on " . $ua['platform']; //. " reports: <br >" . $ua['userAgent']; print_r($yourbrowser); if(preg_match("Mozilla Firefox 30", $yourbrowser)); { $erreur['navigateur']="Votre navigateur est trop ancien pour supporter ce site. Veuillez télécharger une nouvelle version."; } ?>
Le problème réside dans le fait que le preg_match ne semble pas fonctionner du tout alors que le navigateur renvois la version exacte du navigateur. Le problème réside alors dans les trois dernières lignes du code avec lequel je n'arrive à rien ;P
Si vous pouviez m'aider ça serait gentil!
Merci!
A tu jeter un oeil sur http://browscap.org/ qui à un fichier de détéction et le script qui vas avec? Il suffit tout simplement de mettre a jour régulierement le fichier browscap.ini qui sert au tri.
Attention tout de même, c'est une grosse fonction qui peut prendre 2-3 secondes, prendre les précautions d'usage.
Attention tout de même, c'est une grosse fonction qui peut prendre 2-3 secondes, prendre les précautions d'usage.
Effectivement, avec user-agent il y a pleins d'informations, chose pas très pratique à ancrer dans une base de donnée par exemple, où a déchiffrer intuitivement.
Mon idée, ce que j'aimerais dans l'idéal, c'est de récupérer le nom du navigateur, la version et la plateforme directement dans trois variables.
Qu'on ancrerait dans une phrase récapitulative $navigclient= = Le Navigateur correspondants est " u_name . " " . u_version . " sur " " . u_version"; et où ont ferait donc, tout simplement un listing des navigateurs obsolètes avec pour fonction preg_match n'est ce pas ;)
$versionobso = '/Chrome/';
if (preg_match($versionobso,$yourbrowser));
{
$erreur['navigateur']="Don't cry, il suffit de mettre à jour votre navigateur";
}
Je m'y met maintenant, j'vous tiens au jus de ce que ça donne, n'hésitez pas à m'y dire si il y a un moyen simple ou déjà existant pour faire ce espèce de chose !
Merci :=)