Détecter le système du visiteur sur mon site

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

sur mon site dans le forum je voudrai mettre aussi quel configuration a le client
j'ai réussi pour le navigateur mais pas pour le système d'exploitation
est ce que l'on pourrait me dire comment faire SVP

7 réponses

  1. Apatik Messages postés 6040 Statut Contributeur 789
     
    Et voila! https://www.commentcamarche.net/contents/790-php-les-variables-d-environnement
    Pour dissocier le navigateur de l'OS, il faut parser avec un
    $client = $_SERVER['HTTP_USER_AGENT']; 
    $donnees = explode ($client,";"); 
    while ($donnees) 
    { echo $donnees; }


    Si je me souvient bien.
    Live free, learn free, help free, Happy Hacking!
    Enjoy it!
    1
    1. Utilisateur anonyme
       
      merci je vais essayer
      0
  2. Utilisateur anonyme
     
    moi j'ai ce code
    pour faire la détection du navigateur
    <?php
    
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) !== FALSE ) { echo " Firefox"; }
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Opera' ) !== FALSE ) { echo " Opera"; }
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Safari' ) !== FALSE ) { echo "Safari"; }
    elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE' ) !== FALSE ) { echo "Internet Explorer"; }
    else { echo "navigateur non reconnu"; }
    	
    ?>

    que faut t'il que je modifie pour afficher l'os
    1
  3. Apatik Messages postés 6040 Statut Contributeur 789
     
    Roh c'est moche comme code.. Tu ne met que des navigateur que tu ne connais pas.. Tu oublies plein de navigateurs:
    -Konquerror
    -Chrome
    -Epiphany
    -Iceweasel
    Pour les plus utilisés (une partie sous Linux, certes, ...) sans parler de Lynx que j'adorais...

    Bref, je vais essayer de te faire une réponse complète. Avec ta solution, tu cherches un mot particulier dans le "User_Agent" ce qui empèche d'avor toutes les infos, et surtout qui t'empèchera de voir un navigateur inconnu. Si on suit ton code, on peux faire ça:

    <?php 
    
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) )  
       { echo " Firefox"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Opera' ) )  
       { echo " Opera"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Safari' ) )  
       { echo "Safari"; } 
    elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE' ) )  
       { echo "Internet Explorer"; } 
    else { echo "navigateur non reconnu"; } 
    
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Windows' )) 
        { echo " Windows"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Mac OS' )) 
        { echo " Mac OS"; } 
    else { echo "système d'exploitation non reconnu"; } 
    
    /*Si tu adopte cette solution, je ferai plutôt ce script là*/ 
    
    $detect_nav = TRUE;  //création d'une variable pour savoir si on a réussi à trouver le navigateur 
    
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) )  
    { echo " Firefox"; } 
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) )  
       { echo " Firefox"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Opera' ) )  
       { echo " Opera"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Safari' ) )  
       { echo "Safari"; } 
    elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE' ) )  
       { echo "Internet Explorer"; } 
    else  
    { echo "navigateur non reconnu"; $detect_nav = FALSE; }  //On a pas réussi a trouver le navigateur, on met la variable à 0. 
    
    $detect_os = TRUE;   //même combat pour l'OS 
    
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Windows' )) 
        { echo " Windows"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Mac OS' )) 
        { echo " Mac OS"; } 
    else { echo "système d'exploitation non reconnu"; $detect_os = FALSE}   //normalement tu as compris là 
    
    //Maintenant, on rajoute une étape pour enregistrer tout ce qu'on ne connait pas. Ca permettra d'avoir une liste et de peut-être rajouter des navigateurs et des OS plus tard. 
    
    if (!$detect_nav || !$detect_os )   //Si une des deux variables est fausse 
    { 
       $file = fopen("liste_erreur.txt", a);   //on ouvre le fichier qui liste les erreurs 
       fputs($file, "\n");   //On insère un retour à la ligne pour ne pas tout coller 
       fputs($file, $_SERVER['HTTP_USER_AGENT']); //On écris toutes les infos sur l'OS et le navigateur du client 
       fclose($file); //On ferme le fichier 
    } 
      
    ?>


    Si tu veux une autre solution qui t'affiche les informations qu'il y a dans cette variable, dis le moi :)
    Live free, learn free, help free, Happy Hacking!
    Enjoy it!
    1
  4. Utilisateur anonyme
     
    ok il est bien ton code

    si je comprend bien il y a 2 code différant
    qui font la même chose

    et encore merci
    pour ajouter d'autre navigateur je fait comme ça :
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'nom_du_navigateur' ) )  
       { echo " Nom_du_navigateur"; }
    0
    1. Apatik Messages postés 6040 Statut Contributeur 789
       
      Exact. Le deuxième code te permettant d'enregistrer la valeur des variables quand il ne connait pas le navigateur ou l'OS du visiteur.

      Par contre, si tu fais ce code là, je prendrais bien l'adresse de ton site.. Histoire de te faire une petite blague :D
      0
    2. Utilisateur anonyme
       
      pourquoi je ne voudrai pas que tu me le mette en vrac déjà qu'il n'est pas terminer et qu'il est en construction
      0
    3. Apatik Messages postés 6040 Statut Contributeur 789
       
      J'ai dis une blague, pas une attaque... -_-'
      Pourquoi je t'aiderai pour te le détruire...? Il est possible via certaines manipulations, de changer notre navigateur, ou notre OS. Donc je voulais t'envoyer un petit message humoristique comme ça, que tu aurais retrouvé dans ton fichier de sauvegarde.

      Bref, amuse toi bien comme ça alors ;)
      0
    4. Utilisateur anonyme
       
      ha ok
      mais le forum n'est pas en fonctionne ment en ce moment
      il est en construction est puis je n'ai pas encore mis le code dans mon fichier PHP

      merci mon problème est a présent résolu
      0
    5. Apatik Messages postés 6040 Statut Contributeur 789
       
      Tu as pu faire des essais avec différents navigateurs/systèmes d'exploitation? j'ai peur d'avoir oublié des points virgules ou des choses comme ça... Bref, j'aimerai être sur que mon code marche avant de te le donner...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    pour t'informer les serveur de free me renvoient un ereur a la ligne 46
    je te donne l'erreur complète :
    Parse error: syntax error, unexpected '}' in /mnt/102/sdb/f/5/villenagui/newques.php on line 46


    edit : après plusieurs minute de recherche je ne trouve pas ou est l'erreur
    qui est au environ de cette ligne:
    else { echo "système d'exploitation non reconnu"; $detect_os = FALSE}
    0
    1. Apatik Messages postés 6040 Statut Contributeur 789
       
      Bonjour,

      Met moi le code entier de ton fichier newques.php s'il te plait...
      0
  7. Utilisateur anonyme
     
    le voici :
    <html>
    <head>
     <title>posez votre question </title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	 <link rel="stylesheet" media="screen" type="text/css" title="disin" href="disin.css" />
    </head>
    <body>
    <fieldset class="body">
    <?php
    include "menu.html"
    ?>
    <fieldset>
    <center>
    <form action="forum.php">
    <center>
    pseudo :
    <input type="text"><br>
    message :<br>
    <textarea>
    votre question ici
    </textarea><br>
    votre configuration :
    <?php
    
    $detect_nav = TRUE;  //création d'une variable pour savoir si on a réussi à trouver le navigateur 
    
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) )  
    { echo " Firefox"; } 
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) )  
       { echo " Firefox"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Opera' ) )  
       { echo " Opera"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Safari' ) )  
       { echo "Safari"; } 
    elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE' ) )  
       { echo "Internet Explorer"; } 
    else  
    { echo "navigateur non reconnu"; $detect_nav = FALSE; }  //On a pas réussi a trouver le navigateur, on met la variable à 0. 
    
    $detect_os = TRUE;   //même combat pour l'OS 
    
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Windows' )) 
        { echo " Windows"; } 
    elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Mac OS' )) 
        { echo " Mac OS"; } 
    else { echo "système d'exploitation non reconnu"; $detect_os = FALSE}   //normalement tu as compris là 
    
    //Maintenant, on rajoute une étape pour enregistrer tout ce qu'on ne connait pas. Ca permettra d'avoir une liste et de peut-être rajouter des navigateurs et des OS plus tard. 
    
    if (!$detect_nav || !$detect_os )   //Si une des deux variables est fausse 
    { 
       $file = fopen("liste_erreur.txt", a);   //on ouvre le fichier qui liste les erreurs 
       fputs($file, "\n");   //On insère un retour à la ligne pour ne pas tout coller 
       fputs($file, $_SERVER['HTTP_USER_AGENT']); //On écris toutes les infos sur l'OS et le navigateur du client 
       fclose($file); //On ferme le fichier 
    } 
      
    	
    ?>
    </center>
    </fieldset>
    </fieldset>
    </body>
    </html>
    
    0
    1. Apatik Messages postés 6040 Statut Contributeur 789
       
      else { echo "système d'exploitation non reconnu"; $detect_os = FALSE; }

      Voila! Il manquait le point virgule après le "FALSE".
      0
    2. Utilisateur anonyme
       
      je test si ca marche tout de suite !!!
      merci encore

      édit 5 min plus tard : maintenant ca marche

      merci encore et encore Apatik
      0
    3. Utilisateur anonyme
       
      maintenant j'ai une question a te poser dans le fichier "liste_erreur.txt " il y a cette ligne car je suis aller sur mon site sous Linux et le script ma repondu "système d'exploitation non reconnu" j'ai regarder la ligne et il y avait d'ecrit :

      Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3

      dans mon code je suis sensé mettre quoi ?
      une ligne de code qui ressemble a ca :
      if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Linux' )) 
          { echo " Linux"; }
      0
    4. Apatik Messages postés 6040 Statut Contributeur 789
       
      Oui, tu peux mettre "Linux" si tu veux être général, mais à mon avis, le mieux est de mettre "Ubuntu" (une des nombreuses distributions Linux). Tu peux aussi mettre la version, enfin.. ce que tu veux :)
      0
    5. Utilisateur anonyme
       
      ok merci tu m'est d'une plus grande aide
      0
  8. swoog42 Messages postés 1178 Statut Membre 245
     
    Voici. (copié-collé, emballé, pesé)

    // Temporary Variables
    // The useragent string (lowercase to simplify testing)
    $_nw_ua = strtolower(@$_SERVER["HTTP_USER_AGENT"]);
    // Browser Detection { ======================================================
    // Version checking, each one of these will take a float value describing the
    // version number, or - if the user is not using that browser - zero.
    // Generic code-name "Mozilla" version
    define("NW_MOZ_VERSION", preg_match('/mozilla\/(\d+\.\d+)/',
    $_nw_ua, $_nw_v) ? (float)$_nw_v[1] : 0);
    // KDE's Konqueror
    define("NW_IS_KONQ", preg_match('/konqueror\/(\d+\.\d+)/',
    $_nw_ua, $_nw_v) ? (float) $_nw_v[1] : 0);
    // Opera software Opera
    define("NW_IS_OPERA", preg_match('/opera[\s\/](\d+\.\d+)/',
    $_nw_ua, $_nw_v) ? (float) $_nw_v[1] : 0);
    // Microsoft Internet Explorer
    define("NW_IS_IE", !NW_IS_OPERA && preg_match('/msie (\d+\.\d+)/',
    $_nw_ua, $_nw_v) ? (float) $_nw_v[1] : 0);
    // Gecko-based browsers, such as Mozilla, Netscape 6, DocZilla,
    // K-Meleon, etc.
    define("NW_IS_GECKO", preg_match('/gecko\/(\d+)/',
    $_nw_ua, $_nw_v) ? (float) $_nw_v[1] : 0);
    // Netscape Navigator (all versions, including Gecko-based browsers)
    define("NW_IS_NN", NW_IS_GECKO ? (preg_match('/netscape6*\/(\d+.\d+)/', $_nw_ua, $_nw_v) ?
    (float) $_nw_v[1] : 0) : ((!NW_IS_OPERA && !NW_IS_KONQ && !NW_IS_IE) ?
    NW_MOZ_VERSION : 0));
    // An old 3rd generation web browser
    define("NW_IS_GEN3", NW_IS_NN < 4 || NW_IS_OPERA < 4 || NW_IS_IE < 4 || NW_MOZ_VERSION < 4);
    // } Browser Detection ======================================================
    // Generic Platform Detection { =============================================
    define("NW_IS_LINUX", strstr($_nw_ua, "linux") !== false);
    define("NW_IS_MAC", strstr($_nw_ua, "mac") !== false);
    define("NW_IS_SOLARIS", (strstr($_nw_ua, "solaris") !== false) ||
    (strstr($_nw_ua, "sunos") !== false));
    define("NW_IS_X11", strstr($_nw_ua, "x11") !== false);
    define("NW_IS_WINDOWS", strstr($_nw_ua, "win") !== false);
    define("NW_IS_OS2", strstr($_nw_ua, "os2") !== false);
    // } Generic Platform Detection =============================================
    unset($_nw_ua, $_nw_v); // clean-up
    -1
    1. Utilisateur anonyme
       
      peut tu expliquer STP
      car là on ne comprend pas grand chose
      a priori c'est du php
      0
    2. Apatik Messages postés 6040 Statut Contributeur 789
       
      C'est surtout du.. copié collé d'on ne sait où...
      0
    3. Utilisateur anonyme
       
      ca tu peut le dire
      0