p
u
b
l
i
c
i
t
é
publicité

Discussion: Detecter navigateur et sa version [PHP 5.3]

  1. #1
    Invité régulier
    Graphiste
    Inscrit en
    janvier 2011
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : janvier 2011
    Messages : 17
    Points : 5
    Points
    5

    Par défaut Detecter navigateur et sa version

    Bonjour !
    Je souhaite pour mon site détecter le navigateur client et sa version grâce à PHP.
    Mes connaissances étant un peu limitées dans ce domaine, j'ai trouvé après quelques recherches ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php 
    		function browser_info($agent=null) {
     $known = array('msie', 'firefox', 'safari', 'webkit', 'opera', 'netscape',
     'konqueror', 'gecko');
     $agent = strtolower($agent? $agent: $_SERVER['HTTP_USER_AGENT']);
     $pattern = '#(?'. join('|', $known) .
     ')[/ ]+(?[0–9]+(?:\.[0–9]+)?)#';
     
     if (!preg_match_all($pattern, $agent, $matches)) return array();
     $i = count($matches['browser'])-1;
     return array($matches['browser'][$i], $matches['version'][$i]);
    }
     
    $res = browser_info();
    print_r($res);
    ?>
    Cela me retourne le message d'erreur :
    Warning: preg_match_all() [function.preg-match-all]: Compilation failed: unrecognized character after (? or (?- at offset 5 in C:\Users\Julien\Work\EasyPHP-5.3.9\www\Portfolio\OSdetect.php on line 9
    Array ( )
    Quelqu'un saurait m'expliquer le problème ? Voire même m'expliquer le fonctionnement de ce script ? Merci d'avance !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    23 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 952
    Points : 35 217
    Points
    35 217

    Par défaut

    L'expression est toute mal écrite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '#(?P<browser>'. join('|', $known) .  ')/(?P<version>[0-9]+\.[0-9]+)#';

  3. #3
    Invité régulier
    Graphiste
    Inscrit en
    janvier 2011
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : janvier 2011
    Messages : 17
    Points : 5
    Points
    5

    Par défaut

    Merci à toi pour ton aide aussi rapide !
    Ayant changé la ligne que tu m'as indiqué, voila maintenant ce que Firefox me retourne :
    "Array ( ) "

    ...

    Ça a l'air de progresser mais ce n'est toujours pas au point

  4. #4
    Invité régulier
    Graphiste
    Inscrit en
    janvier 2011
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : janvier 2011
    Messages : 17
    Points : 5
    Points
    5

    Par défaut

    Personne ne peut m'aider ? ou pour me proposer d'autres scripts ?

  5. #5
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 709
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 709
    Points : 8 669
    Points
    8 669

    Par défaut

    Salut,

    PHP le fait nativement avec get_browser() et bien plus.
    # Dans la Création, tout est permis mais tout n'est pas utile...

  6. #6
    Invité régulier
    Graphiste
    Inscrit en
    janvier 2011
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : janvier 2011
    Messages : 17
    Points : 5
    Points
    5

    Par défaut

    Merci de ta réponse !
    J'avais déjà entendu parler de get_browser() mais l'histoire de php_browscap ne me semblait pas très clair ...
    En fait, quand je regarde dans mon php.ini (de EasyPHP 5.3.9), je trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [browscap]
    ; http://php.net/browscap
    ;browscap = extra/browscap.ini
    Et quand je vais sur le lien que tu m'as donné, il s'agit de php_browscap.ini et non browscap.ini. C'est même précisé "Do not use with PHP!"

    Où et comment dois je stipuler l'emplacement de php_browscap.ini dans php.ini ?

  7. #7
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 709
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 709
    Points : 8 669
    Points
    8 669

    Par défaut

    Salut,

    il faut t'assurer qu'au moment de déployer tu auras accès au php_browscap.ini si non, tu peux toujours utiliser cette classe qui fait exactement la même chose en version entièrement autonome : ici

    Une fois que tu as téléchargé php_browscap.ini, tu le loges dans le répertoire extras (par exemple) de PHP et tu décommentes dans le php.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    browscap = extras/php_browscap.ini
    Redémarre le serveur et n'oublie pas que cette directive est flaggée système et ne peut être modifiée par ini_set()
    # Dans la Création, tout est permis mais tout n'est pas utile...

  8. #8
    Invité régulier
    Graphiste
    Inscrit en
    janvier 2011
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : janvier 2011
    Messages : 17
    Points : 5
    Points
    5

    Par défaut

    Merci beaucoup rawsrc ! La classe browscap marche nickel, et sans fichier externe !

    Je me demandais quelque chose.. Est ce possible de faire une condition avec les valeurs que browscap retourne genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($current_browser->Parent == "Firefox") {
    ...
    }
    et en instruction de charger un fichier CSS existant sur serveur ? Afin d'optimiser la compatibilité du site !

  9. #9
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 709
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 709
    Points : 8 669
    Points
    8 669

    Par défaut

    Le mieux c'est que tu essayes, non ?
    # Dans la Création, tout est permis mais tout n'est pas utile...

  10. #10
    Invité régulier
    Graphiste
    Inscrit en
    janvier 2011
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : janvier 2011
    Messages : 17
    Points : 5
    Points
    5

    Par défaut

    Bien sûr j'avais déjà essayé ! Mais je n'ai trouvé que des méthodes que je ne connaissais pas comme mélanger les deux langages, PHP et CSS !
    Ne trouvant rien de ce que je cherchais exactement, je me demandais si une fonction d'appel d'un fichier css (un peu comme un include) existait.
    En tout cas, merci pour ton aide ! Je vais maintenant me tourner vers les ... "styles.php "

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Detection Navigateur et redirection
    Par jeromelabbe0649 dans le forum Langage
    Réponses: 5
    Dernier message: 25/01/2012, 23h35
  2. detecter navigateur + informer
    Par nebil dans le forum JavaScript
    Réponses: 4
    Dernier message: 23/08/2010, 14h29
  3. detection de changement de version XML
    Par vladostivistic dans le forum XML
    Réponses: 0
    Dernier message: 26/06/2009, 16h41
  4. Detection navigateur fonction if
    Par polo66 dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 14/02/2009, 00h01
  5. Tester sur differents navigateurs et anciennes versions d'IE
    Par Hypnocrate dans le forum Webdesign & Ergonomie
    Réponses: 7
    Dernier message: 18/01/2008, 10h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo