Navigator (+cssdetector)

Description

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

Codes Sources

A voir également

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.