begin process at 2012 05 27 19:27:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > NAVIGATOR (+CSSDETECTOR)

NAVIGATOR (+CSSDETECTOR)


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Classé sous :detecter, navigateur, browser, css, Navigator Niveau :Débutant Date de création :13/11/2010 Date de mise à jour :06/10/2011 23:31:59 Vu / téléchargé :2 935 / 138

Auteur : xXVoxPopuliXx

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 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

  • <?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;
  • }
  • ?>
<?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é

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

13 novembre 2010 16:31:02 :
petite mise a jours afin que le programme renvoi false a chaque variable non découverte plus tôt que de renvoyer "non trouvé" (plus pratique pour le couplage a d'autre outils)
15 novembre 2010 00:14:51 :
-Mise a jours full compatibilité -Révision du code afin de le rendre plus lisible -Optimisation
15 novembre 2010 22:43:30 :
petit correctif + affichage de la liste des navigateurs compatible
17 novembre 2010 16:19:43 :
-correction d'un bug (Epiphany n'était pas traité avant safari et n'était donc pas détecté)
17 novembre 2010 16:23:53 :
code-source a bugé et n'a pas édité mon code, obligé de refaire la mise a jours sorry ^^
30 janvier 2011 15:55:47 :
Ajout de Arora (dispo sur Linux)
06 octobre 2011 23:27:42 :
Ajout de Sleipnir a la liste histoire de couvrir les navigateurs proposés lors de l'installation de Windows Seven (il propose IExplorer, Firefox, Lunascape, Sleipnir, Avant browser, Safari, Chrome, Iron, Maxthon Browser, K-Meleon, Opera)
06 octobre 2011 23:31:59 :
suppression d'un doublon

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow
MANIPULATION DES DONNÉES IPTC par shevabam

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip COMPRESSER (MINIMISER) UN FICHIER CSS par shevabam
Source avec Zip Source avec une capture CSS-GENERATOR par inwebo
Source avec Zip Source avec une capture ORGANIGRAMME PHP DYNAMIQUE par megatom
Source avec Zip Source avec une capture NAVIGATEUR INTERNET / BROWSER par ben05

Commentaires et avis

Commentaire de cod57 le 13/11/2010 14:57:50

Bonjour
Bonne idée ce script pour charger des css personnalisés au navigateurs
a++

Commentaire de neigedhiver le 13/11/2010 19:46:31

Salut,

1/ Il serait bon de ne pas effectuer TOUS les tests de navigateurs : quand on en a trouvé un, a priori, ce ne sera aucun des suivants... Donc utiliser elseif peut être une bonne idée.
2/ Tu devrais t'intéresser à la fonction preg_split()
3/ Browser est la bonne orthographe, broswer une mauvaise.
4/ "Il se base sur une logique permettant d'éditer et rajouter aisément des navigateurs." => Pour que ce soit encore plus simple, le mieux est un fichier séparé avec les différents navigateurs.
5/ "Il vous permettra d'adapter le rendu graphique de vos pages en fonction des moteurs web graphiques utilisé par vos visiteurs" => C'est une pratique qui est découragée aujourd'hui, depuis que les standards ont réellement leur place sur le web ; ce qui est encouragé, c'est d'utiliser des standards. Si on se plie toujours aux contraintes imposées par des logiciels propriétaires qui implémentent leurs technologies propriétaires, on peut dire adieu à la compatibilité et la portabilité ; au lieu de ça, il est préférable, à mon sens, de pénaliser les logiciels qui ne respectent pas les standards afin de forcer leurs éditeurs à s'y mettre sérieusement (lesquels standards ne sont pas là pour freiner le développement et l'innovation, mais garantir à l'utilisateur final un affichage correct du contenu web).

Commentaire de xXVoxPopuliXx le 13/11/2010 21:02:59

Merci COD57 ;)

Merci pour cette remarque très constructive NEIGEDHIVER.
1) Je vais revoir mon code pour implémenter cette optimisation (en veillant a se que les répétitions qui se font entre les navigateurs dans la variable $_SERVER ne perturbe pas le programme)

2) hum, je vais en voir plus sur cette fonction afin de voir si elle peut m'aider a améliorer Navigator mais j'avoue qu'aux premiers abords elle semble un peu complexe a saisir ^^

3) oups, se sera corrigé pour la prochaine mise a jours ^^

4) je ne suis pas encore de ce niveau pour me permettre ce type de programmation mais ça viendra :)

5) c'est bien pratique quand tu désire construire quelques petits chefs d'½uvres artistique en CSS pour ne les afficher que pour Firefox (par exemple). Ces "gadjets" sont comme tout se qui est porté design: inutile mais beau a voir pour ceux qui le peuvent. Ce programme te permet d'afficher tes ½uvres sans perturber ton site niveau CSS (par exemple: je l'ai monté pour un menu CSS2/CSS3 qui ne dois qu'améliorer l'esthétique normalement, il respectait les standard CSS2 et pourtant seule firefox et chrome ont le bon rendu)

Commentaire de neigedhiver le 14/11/2010 00:41:15

2/ Je ne sais pas si elle est vraiment utile pour ton code, parce que j'ai pas forcément bien saisi ce que faisait la fonction DecoupeurDeChaineDeCaracteres... Si ça se trouve, une simple expression régulière avec preg_match() suffit.

4) L'idée est d'avoir un fichier séparé contenant un tableau associatif avec les différents navigateurs, leur nom et la chaîne à chercher. L'idéal étant que l'inclusion de ce fichier retourne le tableau pour le stocker dans une variable :
<?php
return array(
  array('name' => 'Firefox', 'search' => 'Firefox'),
  array('name' => 'Internet Explorer', 'search' => 'MSIE'),
  // Etc
);
?>

Utilisation de ce fichier :
$browsers = require 'navigators.inc.php';

Pour parcourir :
foreach ($browsers as $browser) {
  if (strpos($secteurderecherche, $browser['search'])) {
    break; // On sort de la boucle, on garde $browser avec les bonnes valeurs
  }
}

Cette boucle remplace toute ta série de if. Le code du traitement n'a pas besoin d'être modifié pour rajouter un navigateur (comme IceWeasel par exemple, que tu as omis ;) )

5) T'as pas tort dans la pratique, même si je maintiens ce que j'ai dit dans l'absolu ;)

P.S. : désolé pour la présentation du code, mais les commentaires sur CS sont vraiment mal foutus...

Commentaire de neigedhiver le 14/11/2010 00:46:53

Autre chose (désolé pour le double post) :
Les fonctions strpos() et stripos() peut renvoyer 0 (zéro) s'il s'agit du premier caractère, ce qui sera évalué comme FALSE par la structure if.
Il serait donc judicieux d'utiliser un test d'inégalité stricte :

if (FALSE !== strpos($secteurderecherche, $browser['search'])) {

Cf la doc à ce sujet : http://fr.php.net/strpos

Commentaire de xXVoxPopuliXx le 14/11/2010 01:01:50

Oui je savais pour les fonction strpos et stripos (j'ai eu le probleme pour Opera qui s'annonce dés la première case de la variable $_SERVER ^^), et pour éviter tout bug j'ai ajouté un espace au début de la chaine de caractère ^^ (voir ligne 25 du code)
Pour ce qui est de DecoupeurDeChaineDeCaractere, cette fonction permet de copier une partie (la version du navigateur) en utilisant un filtre se qui offre une solution adaptable pour la majorité des navigateurs (sauf quelques mauvais canards qui n'indiquent pas leur version).

La méthode que tu explique a l'air bien pratique, je vais inclure ça au plus vite :)

Commentaire de neigedhiver le 14/11/2010 04:15:14

Je viens de regarder d'un peu plus près le fonctionnement de ta fonction DecoupeurDeChaineDeCaracteres et je te confirme qu'elle peut être avantageusement remplacée par une bête expression régulière avec preg_match().

Sinon, rajouter un espace devant la chaîne de caractère à tester... mouais... c'est du bricolage alors que la solution que je t'indique est non seulement plus rigoureuse, mais en plus plus rapide (bon pas de grand chose, mais on évite à PHP de convertir le résultat de strpos en booléen, puisqu'on compare justement cette valeur avec FALSE : si le type n'est pas correct, c'est à dire si le résultat de strpos() n'est pas un booléen, PHP ne va pas plus loin dans la comparaison).

En gros, je pense qu'on peut très nettement raccourcir le code de ta source... (peut-être même au point d'en faire un snippet... arf)

Commentaire de neigedhiver le 14/11/2010 04:24:32

Par ailleurs, ces liens pourraient t'intéresser...

http://www.useragentstring.com/pages/useragentstring.php
http://techpatterns.com/forums/about304.html

C'est peut-être plus que nécessaire, mais bon, pour la culture générale, c'est bien aussi ^^

Commentaire de xXVoxPopuliXx le 15/11/2010 00:18:55

Woaw génial tes sources ! J'ai déjà amélioré mon petit Navigator, il peut te détecter un bon paquet de navigateur maintenant ^^
J'ai aussi rajouté la méthode via foreach comme tu l'as conseillé, en effet l'optimisation est meilleur, mais hélas beaucoup de navigateurs, en mauvais cannard, diminuent les performances en nécéssitant de vérifier leur présence en premier malgré qu'ils sont dans les moins exploités :(

Pour preg_match, je n'ai pas fini d'appréhender cette fonction qui à l'air plus compliqué qu'il n'y parait ^^ Mais dés que faire ce peut, cette fonction amènera son lot de performance a mon code :)

Encore un grand merci pour ton aide ;)

Commentaire de armenak le 15/11/2010 11:13:12

Bien que je sois assez d'accord avec l'argumentaire de neigedhiver, j'aime bien ce script et je vais m'en servir comme utilitaire. Merci pour le travail. Une petite remarque de rien : il faut un s à la fin de "tu utilises"...

Commentaire de xXVoxPopuliXx le 15/11/2010 13:32:20

Oups, désolé, mais cette petite phrase ne sert que d'exemple, personnellement je me sert des variables retournées par Navigator dans des conditions, pas pour afficher le navigateur ^^

Mais merci, se sera corrigé pour la prochaine fois

Commentaire de mugen23 le 15/11/2010 20:33:59

je n'ai fais qu'une lecture en diagonal mais si j'ai bien compris, l'idée c'est d'aiguiller le style qui serras envoyé au client suivant son navigateur ?

ça fais lourd comme process pour corriger ce que l'intégrateur n'as pas sus faire OO

puis, encore une fois, je n'ai lus qu'en diagonale, donc excuse moi si je me plante mais pourquoi ne pas stocker, par exemple, ton résultat dans une variable de session pour éviter de réexécuter la fonction à chaque requête ?


NB : en générale c'est IE qui fout la merde donc une feuille de style dédié à IE est amplement suffisante.

Commentaire de xXVoxPopuliXx le 15/11/2010 22:13:41

Mon outil te renvoi les variables avec le navigateur, la version du navigateur et le moteur css, a toi de décider se que tu veux faire avec après ;) (tu peux même supprimer l'appel à la fonction Navigator() pour ne l'appeler que quand tu le souhaite, il suffit de supprimer les lignes 10 à 20 ;) )

PS: au départ seulement les principaux navigateurs m'intéressais, puis finalement je me suis dis tant qu'a y aller ^^ je pense qu'il y a en a +-110 disponible maintenant (j'ai même oublié de mettre la nouvelle liste des navigateurs détectés dans la mise a jours, se sera pour la prochaine ^^ ).

Commentaire de mugen23 le 15/11/2010 22:37:14

oui mais je vois toujours pas l'intérêt en fait.

à tu un exemple d'implémentation autre qu'un routeur de feuille de style ?

Commentaire de xXVoxPopuliXx le 15/11/2010 22:49:22

Statistique par exemple, mais je laisse google amener les gens qui auront besoin de ce programme; je ne pense pas que le lieu soit vraiment a discuter de son utilité mais plutôt de son perfectionnement si tu veux bien :)

Je pense ajouter un détecteur de robot pour ceux qui voudraient faire un peu comme les forums et afficher quand le robot google ou autres se promène sur leur site :)

Commentaire de mugen23 le 16/11/2010 00:26:50

Je ne vois pas d'autre lieu pour en causer.

'fin bref, perso, il y as un truc qui me perturbe, c'est la non externalisation de ton listing de navigateurs, trop galère à mettre à jour.

puis je capte pas le but de la fonction listenavigateur(); ( si ce n'est pour une question de modularité, dans ce cas, bien vus )

Commentaire de xXVoxPopuliXx le 16/11/2010 09:19:29

Pour l'utilité, moi c'est pour lorsque j'ai un css personnalisé pour firefox. Mais l'utilitaire est prévu pour toute future autre utilité, car je suis certains que d'autres auront du boulot pour lui pour d'autres utilisations que moi.

J'ai préféré garder tout en un seul fichier histoire qu'un néophite (comme moi) s'y retrouve facilement et éviter de produire deux fichiers pour un seul petit utilitaire.
Ce programme est actuellement prévu pour qu'on l'actualise manuellement, je pourrais peut-être améliorer le système de stockage mais je préfère tout garder dans un seul fichier php (j'aime pas me retrouver avec une flopée de fichier dans mes dossiers ^^).
Mais je dis pas qu'une version améliorée ne sera pas disponible dans le futur avec cette possibilité, je fais attention a toutes vos bonnes remarques ;)

Listenavigateur est une simple fonction permettant de ranger le tableau contenant la liste des navigateurs et la renvoyant a qui veut.

Commentaire de mugen23 le 16/11/2010 17:06:53

bah heuuu néophyte, non, au contraire, un néophyte vas plus galérer en ayant à chercher ça dans le code qu'en ayant un fichier annexe.

Pour listenavigateur(); je ne comprends toujours pas l'intérêt, qu'appèle tu "ranger" ? $liste remplis déjà son rôle de "rangement".

Commentaire de xXVoxPopuliXx le 16/11/2010 22:12:01

J'entends rangé par a la fin du code, pour la feuille annexe, je le ferais peut-être si je trouve d'autres trucs a ajouter car en attendant, ce n'est pas le plus utile ^^.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Générateur de fichiés CSS externe [ par jnbdzjnbdz ] J'aissais de faire un générateur d'un fichier css externe avec php et mysql. Pour le moment le code css s'affiche quand je l'ouvre dans le navigateur redirection suivant le navigateur [ par jipe32 ] SalutJe voudrais savoir si il existait un code pour rediriger le visiteur selon son navigateur.Je sais qu'on peut trouver le navigateur de l'internaut 3 questions en vrac sur le PHP [ par Galmiza ] Salut,J'ai quelques questions d'ordre général en PHP.1. Y a-t-il un moyen de changer brutalement de page (comme si l'utilisateur changeait d'adresse d [CSS]Problème menu déroulant [ par spawnrad ] Bonjour, Je suis de niveau débutant en programmation et je rencontre un très grand problème au niveau de la programmation de mon menu déroulant. V CSS avec FrontPage pour pages générée avec PHP [ par Galmiza ] Salut,Je fais un site pour une boite (pendant mon stage) et il doit etre modifiable par des n00b en prog, des neophytes en CSS et HTML, des passionnés empecher affichage code source css [ par sidf ] bonjour à tousa la lecture du code source html d'une page, on peut connaitrele nom d'une page .css incluse avec @importcomme on peut donc saisir direc Modifier la taille d'une "background-image:url()" en CSS [ par Prototype51 ] Bonjour à tous, Je ne savais où poster cette question mais j'espère que vous pourrez quand même m'aider.J'aimerais faire un menu en CSS avec une ima pb css [ par joebuz ] bonjourpetit probleme avec les feuilles de style CSS et MSIEvoici mon probleme :pour tout les navigateurs :min-height:800px;mais cela ne fonctionne pa appliquer du css sur résultat requête php mysql [ par aimara ] Bonjour et merci à celui qui voudra bien m'aider. Pour la petite histoire je suis bloqué sur le "design css" du résultat de ma requête.Comment appliqu Au secours>>CSS et mise en forme résultat $req [ par aimara ] Bonjour et merci à celui qui voudra bien m'aider. Pour la petite histoire je suis bloqué sur le "design css" du résultat de ma requête.Comment appliqu


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales