_______________________________________________________________________________________________Ecrit_par_VoxPopuli
Ce petit utilitaire PHP utilise la variable $_SERVER pour détecter le navigateur, la version du navigateur et le moteur graphique utilisé par les visiteurs de votre site internet. Il mettra a disposition de votre code les variables suivantes: $navigateur, $nav_version et $moteurcss.
Le script est documenté afin d'aider a personnaliser le script
Il suffit de supprimer
//exemple
echo 'tu utilise: '.$navigateur.' version: '.$nav_version;
//exemple
pour que le programme entre en service discrètement
Pour supprimer l'appel a la fonction, supprimé les lignes 10 à 20.
Compatibilité: Firefox, Internet Explorer, Safari, Opera, Chrome, Konqueror, Netscape,
Slimbrowser, Acoo Browser, Charon, Avant Browser, GreenBrowser, MyIE2, uzbl, Flock, Kapiko, Iceweasel,
lolifox, Lunascape, Madfox, myibrow, Orca, Palemoon, Pogo, Wyzo, Escape, Deepnet Explorer, Crazy Browser,
iRider, KKman, Lobo, Sleipnir, uZard Web, ChromePlus, Iron, Comodo_Dragon, Fluid, Maxthon Browser,
Midori, Shiira, Stainless, Sunrise, TeaShark, Opera Mini, Opera Mobi, Epiphany, Lynx, Amaya, Epic Browser,
K-Meleon, ABrowse, America Online Browser, AmigaVoyager, AOL, Arora, Beonex, BonEcho, Camino, Cheshire,
Chimera, CometBird, Cyberdog, DeskBrowse, Dillo, DoobleDooble, Element Browser, Elinks, Fennec, Firebird,
Galaxy, Galeon, GranParadiso, Hana, HotJava, IBM WebExplorer, IBrowse, iCab, Iceape, IceCat, iNet Browser,
K-Ninja, Kazehakase, KMLite, LeechCraft, Links, Lorentz, Minefield, Minimo, Namoroka, NCSA_Mosaic,
NetNewsWire, NetPositive, NetSurf, OmniWeb, Oregano, Prism, QtWeb Internet Browser, retawq, SeaMonkey,
Shiretoko, Vonkeror, Xtreme Broswer, w3m, Playstattion 3, Playstation Portable, Sleipnir
Source / Exemple :
<?php
/* Navigator(+ CSSDetector) By VoxPopuli */
/* programme permettant de trouver le navigateur du client, sa version ainsi que son moteur CSS */
/* renvois pour l'ENSEMBLE DU CODE SUIVANT les variables $navigateurs, $nav_version et $moteurcss */
/* compatible 10/2011: Firefox, Internet Explorer, Safari, Opera, Chrome, Konqueror, Netscape,
Slimbrowser, Acoo Browser, Charon, Avant Browser, GreenBrowser, MyIE2, uzbl, Flock, Kapiko, Iceweasel,
lolifox, Lunascape, Madfox, myibrow, Orca, Palemoon, Pogo, Wyzo, Escape, Deepnet Explorer, Crazy Browser,
iRider, KKman, Lobo, Sleipnir, uZard Web, ChromePlus, Iron, Comodo_Dragon, Fluid, Maxthon Browser,
Midori, Shiira, Stainless, Sunrise, TeaShark, Opera Mini, Opera Mobi, Epiphany, Lynx, Amaya, Epic Browser,
K-Meleon, ABrowse, America Online Browser, AmigaVoyager, AOL, Arora, Beonex, BonEcho, Camino, Cheshire,
Chimera, CometBird, Cyberdog, DeskBrowse, Dillo, DoobleDooble, Element Browser, Elinks, Fennec, Firebird,
Galaxy, Galeon, GranParadiso, Hana, HotJava, IBM WebExplorer, IBrowse, iCab, Iceape, IceCat, iNet Browser,
K-Ninja, Kazehakase, KMLite, LeechCraft, Links, Lorentz, Minefield, Minimo, Namoroka, NCSA_Mosaic,
NetNewsWire, NetPositive, NetSurf, OmniWeb, Oregano, Prism, QtWeb Internet Browser, retawq, SeaMonkey,
Shiretoko, Vonkeror, Xtreme Broswer, w3m, Playstattion 3, Playstation Portable */
/*$Retour = Navigator();
$nav_version = $Retour[2];
$navigateur = $Retour[1];
$moteurcss = CSSDetector();*/
//exemple
//echo 'tu utilise: '.$navigateur.' version: '.$nav_version.' moteur css: '.$moteurcss;
//exemple
function Navigator() {
$verif = false;
$navigateur = false;
$secteurderecherche = " ".$_SERVER["HTTP_USER_AGENT"];
$chaine = $secteurderecherche;
$version = false;
$caractdebut = null; //permet de dire a DecoupeurDeChaine a partir de quoi il doit commencer le travail
$caractfin1 = " "; //
$caractfin2 = ";"; // permet de dire a DecoupeurDeChaine jusqu'ou il doit travailler.
$caractfin3 = ")"; //
$listenav = listenavigateur();
foreach ($listenav as $TMPrecherche) {
if (stripos($secteurderecherche, $TMPrecherche['search'])) {
$recherche = $TMPrecherche;
$verif= true;
break; // On sort de la boucle, on garde $listenav avec les bonnes valeurs
}
}
if ($recherche['caractdebut']){ /* si la version peut etre trouvee, continue */
$version = DecoupeurDeChaineDeCaracteres ($chaine, $recherche['caractdebut'], $caractfin1, $caractfin2, $caractfin3);
}
/* script pour les test
echo '<br> <br>';
echo '<script type="text/javascript">alert("tu utilises : '.$navigateur.' - version : '.$version.'")</script>';*/
if ($verif){
$retour[1] = $recherche['nom'];
$retour[2] = $version;
}else{
$retour[1] = $verif;
$retour[2] = $verif;
}
return $retour;
}
function DecoupeurDeChaineDeCaracteres ($chaine, $caractdebut, $caractfin1, $caractfin2, $caractfin3) {
/* le programme découpe une chaine de caractères en repérant un caractère de débuts et un (ou des) caractères de fin de recherche, il permet de s'adapter a une recherche avec trois fins possible ^^ */
$debut = (strripos($chaine, $caractdebut) + strlen($caractdebut) + 1);
/* boucle permettant d'extraire le contenu recherché */
$compteur = 0;
$chaineretenue = null;
while (isset($chaine[$debut+$compteur]) || !empty($chaine[$debut+$compteur])) {
if ($chaine[$debut+$compteur] == $caractfin1 || $chaine[$debut+$compteur] == $caractfin2 || $chaine[$debut+$compteur] == $caractfin3){
/* si les caractères de fin de recherche sont repéré, stop la boucle */
break;
}
$chaineretenue = $chaineretenue.$chaine[$debut+$compteur];
$compteur++;
}//fin while
return $chaineretenue;
}
/* Detecte le moteur CSS utilise par le navigateur */
/* compatibilite CSSDetector 11/2010: Trident, Gecko, WebKit, Presto */
function CSSDetector () {
$secteurderecherche = " ".$_SERVER["HTTP_USER_AGENT"];;
$moteur = false;
if (stripos($secteurderecherche, "MSIE") || stripos($secteurderecherche, "trident")) {
$moteur = "Trident";
/* trident n'est pas forcément visible, il faut déduire sa présence en recherchant si le navigateur est basé sur IExplorer */
}
if (stripos($secteurderecherche, "gecko")){
$moteur = "Gecko";
}
if (stripos($secteurderecherche, "WebKit")){
$moteur = "WebKit";
}
if (stripos($secteurderecherche, "presto")) {
$moteur = "Presto";
}
return $moteur;
}
function listenavigateur () {
$liste = array(
// nom => nom du navigateur
//search => le mot clé utilisé pour rechercher le navigateur
//caractdebut => le mot clé juste avant la version permettant de la récuperer, false si le navigateur ne renvoit pas la version
/* sans version */
array('nom' => 'Slimbrowser', 'search' => 'slimbrowser', 'caractdebut' => false),
array('nom' => 'Acoo Browser', 'search' => 'Acoo Browser', 'caractdebut' => false),
array('nom' => 'Charon', 'search' => 'charon', 'caractdebut' => false),
array('nom' => 'Avant Browser', 'search' => 'avant browser', 'caractdebut' => false),
array('nom' => 'GreenBrowser', 'search' => 'GreenBrowser', 'caractdebut' => false), //dois OBLIGATOIREMENT se situer AVANT IEXPLORER
array('nom' => 'MyIE2', 'search' => 'MyIE2', 'caractdebut' => false),//dois OBLIGATOIREMENT se situer AVANT IEXPLORER
array('nom' => 'uzbl', 'search' => 'uzbl', 'caractdebut' => false),
/* avec version */
array('nom' => 'Flock', 'search' => 'flock', 'caractdebut' => 'flock'), //dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Kapiko', 'search' => 'Kapiko', 'caractdebut' => 'Kapiko'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Iceweasel', 'search' => 'Iceweasel', 'caractdebut' => 'Iceweasel'), //dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'lolifox', 'search' => 'lolifox', 'caractdebut' => 'lolifox'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Lunascape', 'search' => 'lunascape', 'caractdebut' => 'lunascape'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Madfox', 'search' => 'Madfox', 'caractdebut' => 'Madfox'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'myibrow', 'search' => 'myibrow', 'caractdebut' => 'myibrow'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Orca', 'search' => 'Orca', 'caractdebut' => 'Orca'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Palemoon', 'search' => 'Palemoon', 'caractdebut' => 'Palemoon'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Pogo', 'search' => 'Pogo', 'caractdebut' => 'Pogo'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Wyzo', 'search' => 'Wyzo', 'caractdebut' => 'Wyzo'),//dois OBLIGATOIREMENT SE TROUVER AVANT FIREFOX
array('nom' => 'Firefox', 'search' => 'firefox', 'caractdebut' => 'firefox'), //FIREFOX
array('nom' => 'Escape', 'search' => 'Escape', 'caractdebut' => 'Escape'), //dois OBLIGATOIREMENT SE TROUVER AVANT IEXPLORER
array('nom' => 'Deepnet Explorer', 'search' => 'Deepnet Explorer', 'caractdebut' => 'Deepnet Explorer'),// dois OBLIGATOIREMENT SE SITUER AVANT IEXPLORER
array('nom' => 'Crazy Browser', 'search' => 'crazy browser', 'caractdebut' => 'crazy browser'), //dois OBLIGATOIREMENT SE TROUVER AVANT IEXPLORER
array('nom' => 'iRider', 'search' => 'iRider', 'caractdebut' => 'iRider'),//dois OBLIGATOIREMENT SE TROUVER AVANT IEXPLORER
array('nom' => 'KKman', 'search' => 'KKman', 'caractdebut' => 'KKman'),//dois OBLIGATOIREMENT SE TROUVER AVANT IEXPLORER
array('nom' => 'Lobo', 'search' => 'Lobo', 'caractdebut' => 'Lobo'),//dois OBLIGATOIREMENT SE TROUVER AVANT IEXPLORER
array('nom' => 'uZard Web', 'search' => 'uZard Web', 'caractdebut' => 'uZard Web'),//dois OBLIGATOIREMENT SE TROUVER AVANT IEXPLORER
array('nom' => 'Sleipnir', 'search' => 'Sleipnir', 'caractdebut' => 'Sleipnir'),//dois OBLIGATOIREMENT SE TROUVER AVANT IEXPLORER
array('nom' => 'Internet Explorer', 'search' => 'MSIE', 'caractdebut' => 'MSIE'), //IEXPLORER
array('nom' => 'ChromePlus', 'search' => 'chromeplus', 'caractdebut' => 'chromeplus'),//dois OBLIGATOIREMENT SE TROUVER AVANT CHROME ET SAFARI
array('nom' => 'Iron', 'search' => 'Iron', 'caractdebut' => 'Iron'),//dois OBLIGATOIREMENT SE TROUVER AVANT CHROME ET SAFARI
array('nom' => 'Comodo_Dragon', 'search' => 'Comodo_Dragon', 'caractdebut' => 'Comodo_Dragon'),//dois OBLIGATOIREMENT SE TROUVER AVANT CHROME ET SAFARI
array('nom' => 'Chrome', 'search' => 'Chrome', 'caractdebut' => 'chrome'), //DOIS OBLIGATOIREMENT SE SITUER AVANT SAFARI
array('nom' => 'Fluid', 'search' => 'Fluid', 'caractdebut' => 'Fluid'), //dois OBLIGATOIREMENT se situer avant SAFARI
array('nom' => 'Maxthon Browser', 'search' => 'maxthon', 'caractdebut' => 'maxthon'),//dois OBLIGATOIREMENT se situer avant SAFARI
array('nom' => 'Midori', 'search' => 'Midori', 'caractdebut' => 'Midori'),//dois OBLIGATOIREMENT se situer avant SAFARI
array('nom' => 'Shiira', 'search' => 'Shiira', 'caractdebut' => 'Shiira'),//dois OBLIGATOIREMENT se situer avant SAFARI
array('nom' => 'Stainless', 'search' => 'Stainless', 'caractdebut' => 'Stainless'),//dois OBLIGATOIREMENT se situer avant SAFARI
array('nom' => 'Sunrise', 'search' => 'Sunrise', 'caractdebut' => 'Sunrise'),//dois OBLIGATOIREMENT se situer avant SAFARI
array('nom' => 'TeaShark', 'search' => 'TeaShark', 'caractdebut' => 'TeaShark'),//dois OBLIGATOIREMENT se situer avant SAFARI
array('nom' => 'Epiphany', 'search' => 'epiphany', 'caractdebut' => 'epiphany'),//dois OBLIGATOIREMENT se situer avant SAFARI
array('nom' => 'Safari', 'search' => 'safari', 'caractdebut' => 'safari'), //SAFARI
array('nom' => 'Opera Mini', 'search' => 'Opera Mini', 'caractdebut' => 'Opera Mini'),//dois OBLIGATOIREMENT se situer avant OPERA
array('nom' => 'Opera Mobi', 'search' => 'Opera Mobi', 'caractdebut' => 'Opera Mobi'),//dois OBLIGATOIREMENT se situer avant OPERA
array('nom' => 'Opera', 'search' => 'opera', 'caractdebut' => 'opera'),//OPERA
array('nom' => 'Konqueror', 'search' => 'Konqueror', 'caractdebut' => 'konqueror'),
array('nom' => 'Lynx', 'search' => 'lynx', 'caractdebut' => 'lynx'),
array('nom' => 'Netscape', 'search' => 'navigator', 'caractdebut' => 'navigator'),
array('nom' => 'Amaya', 'search' => 'amaya', 'caractdebut' => 'amaya'),
array('nom' => 'Epic Browser', 'search' => 'epic', 'caractdebut' => 'crazy browser'),
array('nom' => 'K-Meleon', 'search' => 'k-meleon', 'caractdebut' => 'k-meleon'),
array('nom' => 'ABrowse', 'search' => 'abrowse', 'caractdebut' => 'abrowse'),
array('nom' => 'America Online Browser', 'search' => 'America Online Browser', 'caractdebut' => 'America Online Browser'),
array('nom' => 'AmigaVoyager', 'search' => 'AmigaVoyager', 'caractdebut' => 'AmigaVoyager'),
array('nom' => 'AOL', 'search' => 'AOL', 'caractdebut' => 'aol'),
array('nom' => 'Arora', 'search' => 'arora', 'caractdebut' => 'arora'),
array('nom' => 'Beonex', 'search' => 'beonex', 'caractdebut' => 'beonex'),
array('nom' => 'BonEcho', 'search' => 'bonecho', 'caractdebut' => 'bonecho'),
array('nom' => 'Camino', 'search' => 'camino', 'caractdebut' => 'camino'),
array('nom' => 'Cheshire', 'search' => 'Cheshire', 'caractdebut' => 'Cheshire'),
array('nom' => 'Chimera', 'search' => 'chimera', 'caractdebut' => 'chimera'),
array('nom' => 'CometBird', 'search' => 'CometBird', 'caractdebut' => 'CometBird'),
array('nom' => 'Cyberdog', 'search' => 'Cyberdog', 'caractdebut' => 'Cyberdog'),
array('nom' => 'DeskBrowse', 'search' => 'DeskBrowse', 'caractdebut' => 'DeskBrowse'),
array('nom' => 'Dillo', 'search' => 'Dillo', 'caractdebut' => 'Dillo'),
array('nom' => 'DoobleDooble', 'search' => 'DoobleDooble', 'caractdebut' => 'DoobleDooble'),
array('nom' => 'Element Browser', 'search' => 'Element Browser', 'caractdebut' => 'Element Browser'),
array('nom' => 'Elinks', 'search' => 'Elinks', 'caractdebut' => 'Elinks'),
array('nom' => 'Fennec', 'search' => 'Fennec', 'caractdebut' => 'Fennec'),
array('nom' => 'Firebird', 'search' => 'Firebird', 'caractdebut' => 'Firebird'),
array('nom' => 'Galaxy', 'search' => 'Galaxy', 'caractdebut' => 'Galaxy'),
array('nom' => 'Galeon', 'search' => 'Galeon', 'caractdebut' => 'Galeon'),
array('nom' => 'GranParadiso', 'search' => 'GranParadiso', 'caractdebut' => 'GranParadiso'),
array('nom' => 'Hana', 'search' => 'Hana', 'caractdebut' => 'Hana'),
array('nom' => 'HotJava', 'search' => 'HotJava', 'caractdebut' => 'HotJava'),
array('nom' => 'IBM WebExplorer', 'search' => 'IBM WebExplorer', 'caractdebut' => 'IBM WebExplorer'),
array('nom' => 'IBrowse', 'search' => 'IBrowse', 'caractdebut' => 'IBrowse'),
array('nom' => 'iCab', 'search' => 'iCab', 'caractdebut' => 'iCab'),
array('nom' => 'Iceape', 'search' => 'Iceape', 'caractdebut' => 'Iceape'),
array('nom' => 'IceCat', 'search' => 'IceCat', 'caractdebut' => 'IceCat'),
array('nom' => 'iNet Browser', 'search' => 'iNet Browser', 'caractdebut' => 'iNet Browser'),
array('nom' => 'K-Ninja', 'search' => 'K-Ninja', 'caractdebut' => 'K-Ninja'),
array('nom' => 'Kazehakase', 'search' => 'Kazehakase', 'caractdebut' => 'Kazehakase'),
array('nom' => 'KMLite', 'search' => 'KMLite', 'caractdebut' => 'KMLite'),
array('nom' => 'LeechCraft', 'search' => 'LeechCraft', 'caractdebut' => 'LeechCraft/Poshuku'),
array('nom' => 'Links', 'search' => 'Links', 'caractdebut' => 'Links'),
array('nom' => 'Lorentz', 'search' => 'Lorentz', 'caractdebut' => 'Lorentz'),
array('nom' => 'Minefield', 'search' => 'Minefield', 'caractdebut' => 'Minefield'),
array('nom' => 'Minimo', 'search' => 'Minimo', 'caractdebut' => 'Minimo'),
array('nom' => 'Namoroka', 'search' => 'Namoroka', 'caractdebut' => 'Namoroka'),
array('nom' => 'NCSA_Mosaic', 'search' => 'NCSA_Mosaic', 'caractdebut' => 'NCSA_Mosaic'),
array('nom' => 'NetNewsWire', 'search' => 'NetNewsWire', 'caractdebut' => 'NetNewsWire'),
array('nom' => 'NetPositive', 'search' => 'NetPositive', 'caractdebut' => 'NetPositive'),
array('nom' => 'NetSurf', 'search' => 'NetSurf', 'caractdebut' => 'NetSurf'),
array('nom' => 'OmniWeb', 'search' => 'OmniWeb', 'caractdebut' => 'OmniWeb'),
array('nom' => 'Oregano', 'search' => 'Oregano', 'caractdebut' => 'Oregano'),
array('nom' => 'Phoenix', 'search' => 'Phoenix', 'caractdebut' => 'Phoenix'),
array('nom' => 'Prism', 'search' => 'Prism', 'caractdebut' => 'Prism'),
array('nom' => 'QtWeb Internet Browser', 'search' => 'QtWeb Internet Browser', 'caractdebut' => 'QtWeb Internet Browser'),
array('nom' => 'retawq', 'search' => 'retawq', 'caractdebut' => 'retawq'),
array('nom' => 'SeaMonkey', 'search' => 'SeaMonkey', 'caractdebut' => 'SeaMonkey'),
array('nom' => 'Shiretoko', 'search' => 'Shiretoko', 'caractdebut' => 'Shiretoko'),
array('nom' => 'Vonkeror', 'search' => 'Vonkeror', 'caractdebut' => 'Vonkeror'),
array('nom' => 'Xtreme Browser', 'search' => 'Xtreme Browser', 'caractdebut' => 'Xtreme Browser'),
array('nom' => 'w3m', 'search' => 'w3m', 'caractdebut' => 'w3m'),
/* console */
array('nom' => 'Playstation 3', 'search' => 'Playstation 3', 'caractdebut' => 'Playstation 3'),
array('nom' => 'Playstation Portable', 'search' => 'Playstation Portable', 'caractdebut' => 'Playstation Portable);')
);
return $liste;
}
?>
Conclusion :
Le script ayant la plus haute compatibilité en matière de détection de navigateur. Il se base sur une logique permettant d'éditer et rajouter aisément des navigateurs.
Il vous permettra d'adapter le rendu graphique de vos pages en fonction des moteurs web graphiques utilisé par vos visiteurs.
PS: le zip n'est pas a jours, utilisez le copié-collé
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.