IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Détection de l'OS (systeme d'exp) et du browser (navigateur)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut Détection de l'OS (systeme d'exp) et du browser (navigateur)
    Salut,
    j'ai un site heberger chez free et en voulant utiliser la fonction get_browser(), mais elle est indisponible.
    Si quelqu'un avait un equivalent qui integre la detection des bot et tout et tout ca serai cool.
    Les script sur la page de doc php ne detecte que les navigateur les plus communs...
    merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2004
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juin 2004
    Messages : 88
    Par défaut
    Salut, je peux te proposer $_SERVER[], pour récupérer diverses informations.

    http://perso.univ-rennes1.fr/pascal.aubry/doc/php_variables/_server.php

    pour un petit récapitulatif

    Je ne sais pas si cela répond exactement a ton besoin (bot..) mais c'est une piste
    Bonne soirée, DD.

  3. #3
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Pour fonctionner cette fonction a besoin d'être pontée avec un fichier browscap.ini.

    Le chemin de ce fichier doit impérativement être spécifié dans le php.ini de ton serveur. Vois si tu peux modifier temporairement cette directive avec ini_set() ?

  4. #4
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Salut,

    Dans la doc de la fonction get_browser(), on voit qu'il font référence à _SERVER["HTTP_USER_AGENT"] qui contient les infos dont tu as besoin.

    Ensuite pour rafiner tu peux très bien te refaire une petite fonction reexploitant un fichier browscap.ini de ton cru et ceci sans intervention de free ( très très simple via parse_ini_file() )

    Mais c'est vraiment si tu veux un truc complet car sinon un petit parse du user agent peut être suffisant

    Cordialement
    Pierre

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    je comprend pas trop comment utiliser la variable $_SERVER["HTTP_USER_AGENT"]; avec la fonction parse_ini_file

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Je pense que je n'ai pas assez explicité mon raisonement.

    Tu commences par récuperer un fichier browscap.ini à jour à cette adresse : http://www.garykeith.com/browsers/downloads.asp

    Ensuite, tu mets ce fichier sur ton serveur et tu le parse avec parse_ini_file.
    Cela va te donner un tableau avec tous les user agents et tu n'as plus qu'à faire une recherche dan sle tableau avec ce que tu as dans $_SERVER['USER_AGENT']

    J'espère avoir été assez clair

    En gros on reproduit le fonctionement de get_browser

    Pierre

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER["HTTP_USER_AGENT"] retourne ca, normal :
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parse_ini_file("php_browscap.ini")
    ca :
    Array
    (
    [browser] => Default Browser
    [version] => 7.0
    [frames] =>
    [iframes] =>
    [tables] => 1
    [cookies] =>
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] =>
    [javaapplets] =>
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] =>
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
    [parent] => IE 7.0
    [css] => 0
    [majorver] => 7
    [minorver] => 0
    [platform] => WinXP
    [javaappletsframes] => 1
    [AK] =>
    [SK] =>
    [Win16] =>
    )

    mon code php est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function browser_info() {
    echo $_SERVER["HTTP_USER_AGENT"];
    $parse = parse_ini_file("php_browscap.ini");
    echo "<br /><pre>";
    print_r($parse);
    echo "</pre>";
    }
    en fit je comprend la le retour de parse_ini_file, on dirai qu'il melange plusieur entrer, default browser c'est:
    [*]
    browser="Default Browser"
    css = 0
    frames = False
    iframes = False
    tables = True
    cookies = False
    backgroundsounds = False
    vbscript = False
    javascript = False
    javaapplets = False
    activexcontrols = False
    cdf = False
    aol = False
    beta = False
    Win16 = False
    crawler = False
    stripper = False
    wap = False
    netclr = False

  8. #8
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    il ne faut pas oublier de rajouter le deuxième paramètre de parse_ini_file à TRUE pour garder les sections comme explicité dans la doc

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    comment je fais pour passer de:
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1
    a la section du fichier .ini correspondate.
    J'ai jamais utiliser de fichier ini avant, je capte pas comment faire la correspondance.
    merci de m'aider

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    Re-bonjour,
    si quelqu'un pouvait expliciter comment utiliser conjointement parse_file_ini et $_SERVER["HTTP_USER_AGENT"].
    Je n'ai jamais utiliser de fichier ini, je ne comprend pas les expliquer précédente (je ne vois pas du tout l'algo a mettre en place)
    merci

  11. #11
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Avec un truc comme ca cela doit marcher mais je viens de voir qu'il peut y avoir des caractères spéciaux dans les clés des sections du fichier ini ( j'aurais du y penser car sinon cela ferait de possibilités.)

    Pour un début de code, on peut avoir un truc comme ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1';
     
    $tabBrowser = parse_ini_file('php_browscap.ini',TRUE);
     
    $data = $tabBrowser[$user_agent]; //Ne fonctionne pas car la chaine n'est pas présente tel quel dans le fichier ini
    Ensuite il faut adapter le user_agent pour éliminer certaines parties non significatives. Clairement cela ne marche pas car le user agent contient par exemple la révision du noyau, etc...

    Il faut étudier un peu le fichier ini, et les différents user agent pour déterminer un genre de masque à appliquer.

    mais là, on en revient à refaire completement la fonction get_browser ce qui est dommage car ce sera beaucoup moins performant

    pierre

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    ok, merci pour la syntae. Pour l'histoire du masque, c'est bien ce qu'il me sembler, je penser qui yavait une methode moins bourrine que le masque.
    Par masque tu entends bien utiliser des regexp ?
    je fais comme suis pour recuperer le browser et l'os:
    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
    17
    18
    19
    20
    function browser_info() {
    $c_user = strtolower($_SERVER['HTTP_USER_AGENT']);
     
    $os = array ( "mac" => "MacOS",  "linux" => "Linux",  "win" => "Windows",  "bsd" => "BSD",  "qnx" => "QNX",  "sun" => "SunOS",  "solaris" => "Solaris",  "irix" => "IRIX",  "aix" => "AIX",  "unix" => "Unix",  "amiga" => "Amiga",  "os/2" => "OS/2",  "beos" => "BeOS");
    $browser = array("opera" => "Opera",  "msie" => "Internet Explorer", 
    "voyager" => "Voyager", "lynx" => "Lynx", "safari" => "Safari", "camino" => "Camino", "firefox" => "Firefox", "netscape" => "Netscape"); // mozilla
     
    // identify OS
    $user_os = "Exotical OS";
    foreach ($os as $k_is => $v_is)
    	if (substr_count($c_user, $k_is))
    		$user_os = $v_is;
    // identify browser : special test for Gecko Engine
    $user_bro = "Exotical Browser";
    foreach($browser as $kb_is => $vb_is)
    	if (stristr($c_user, $kb_is))
    		$user_bro = $vb_is;
     
    return array ("platform" => $user_os, "browser" => $user_bro); // add_visit()
    }
    Le probleme c'est que je ne reconnais que les os ou browser present dans ma table... Or j'aurai bien voulu reconnaitre les bot et autres machin bizarre.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/08/2015, 14h50
  2. détection du system d'exploitation
    Par laurentze dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 28/03/2010, 21h23
  3. Réponses: 2
    Dernier message: 15/11/2008, 14h27
  4. détection systeme
    Par t_om84 dans le forum Général Python
    Réponses: 1
    Dernier message: 21/07/2005, 10h10
  5. Détection de 2 touches appuyées
    Par cyrose dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 16h25

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