Interdire l'accès à certaines versions de navigateurs en php.
Fermé
Fontainard
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017
-
19 juin 2014 à 11:25
Stanislas Poisson Messages postés 424 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 22 mai 2018 - 24 juin 2014 à 07:46
Stanislas Poisson Messages postés 424 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 22 mai 2018 - 24 juin 2014 à 07:46
A voir également:
- Interdire l'accès à certaines versions de navigateurs en php.
- Acces rapide - Guide
- Easy php - Télécharger - Divers Web & Internet
- Je n'ai plus acces a ma boite mail gmail - Guide
- Accès refusé - Guide
- Retour a la ligne php ✓ - Forum PHP
2 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
19 juin 2014 à 11:33
19 juin 2014 à 11:33
'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.
Fontainard
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017
23 juin 2014 à 11:44
23 juin 2014 à 11:44
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!
Stanislas Poisson
Messages postés
424
Date d'inscription
samedi 1 décembre 2012
Statut
Membre
Dernière intervention
22 mai 2018
66
24 juin 2014 à 07:46
24 juin 2014 à 07:46
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.
Modifié par Fontainard le 19/06/2014 à 14:34
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 :=)