Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    20 849
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 20 849
    Points : 27 210
    Points
    27 210

    Par défaut

    L'expression est toute mal écrite
    Code :
    $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 Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 502
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 502
    Points : 7 990
    Points
    7 990

    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 :
    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 Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 502
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 502
    Points : 7 990
    Points
    7 990

    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 :
    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 :
    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 Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 502
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 502
    Points : 7 990
    Points
    7 990

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •