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 Perl Discussion :

Récupérer le navigateur du visiteur


Sujet :

Langage Perl

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Récupérer le navigateur du visiteur
    Bonjour

    Toujours de Julp une autre q/r qui permet d'identifier le navigateur du visiteur:
    En php
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    if ((ereg("Nav", getenv("HTTP_USER_AGENT"))) || (ereg("Gold", getenv("HTTP_USER_AGENT"))) ||
    (ereg("X11", getenv("HTTP_USER_AGENT"))) || (ereg("Mozilla", getenv("HTTP_USER_AGENT"))) ||
    (ereg("Netscape", getenv("HTTP_USER_AGENT")))
    AND (!ereg("MSIE", getenv("HTTP_USER_AGENT"))) 
    AND (!ereg("Konqueror", getenv("HTTP_USER_AGENT")))
    AND (!ereg("Firefox", getenv("HTTP_USER_AGENT")))
    AND (!ereg("Safari", getenv("HTTP_USER_AGENT"))))
            $browser = "Netscape";
    elseif (ereg("Opera", getenv("HTTP_USER_AGENT")))
            $browser = "Opera";
    elseif (ereg("MSIE", getenv("HTTP_USER_AGENT")))
            $browser = "MSIE";
    elseif (ereg("Lynx", getenv("HTTP_USER_AGENT")))
            $browser = "Lynx";
    elseif (ereg("WebTV", getenv("HTTP_USER_AGENT")))
            $browser = "WebTV";
    elseif (ereg("Konqueror", getenv("HTTP_USER_AGENT")))
            $browser = "Konqueror";
    elseif (ereg("Safari", getenv("HTTP_USER_AGENT")))
            $browser = "Safari";
    elseif (ereg("Firefox", getenv("HTTP_USER_AGENT")))
            $browser = "Firefox";
    elseif ((eregi("bot", getenv("HTTP_USER_AGENT"))) || (ereg("Google", getenv("HTTP_USER_AGENT"))) ||
    (ereg("Slurp", getenv("HTTP_USER_AGENT"))) || (ereg("Scooter", getenv("HTTP_USER_AGENT"))) ||
    (eregi("Spider", getenv("HTTP_USER_AGENT"))) || (eregi("Infoseek", getenv("HTTP_USER_AGENT"))))
            $browser = "Bot";
    else
            $browser = "Other";
    return $browser;
    En perl enfin j'essaye
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    sub browser
    {
    	our $browser="";
    	if (($ENV{'HTTP_USER_AGENT'} =~ m/Nav/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/Gold/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/X11/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/Mozilla/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/Netscape/)
    	and ($ENV{'HTTP_USER_AGENT'} !~ m/MSIE/)
    	and ($ENV{'HTTP_USER_AGENT'} !~ m/Konqueror/)
    	and ($ENV{'HTTP_USER_AGENT'} !~ m/Firefox/)
    	and ($ENV{'HTTP_USER_AGENT'} !~ m/Safari/))
    	{
    		$browser="Netscape";
    	}
    	elsif ($ENV{'HTTP_USER_AGENT'} =~ m/Opera/)
    	{
    		$browser="Opera";
    	}
    	elsif ($ENV{'HTTP_USER_AGENT'} =~ m/MSIE/)
    	{
    		$browser="MSIE";
    	}
    	elsif ($ENV{'HTTP_USER_AGENT'} =~ m/Lynx/)
    	{
    		$browser="Lynx";
    	}
    	elsif ($ENV{'HTTP_USER_AGENT'} =~ m/WebTV/)
    	{
    		$browser="WebTV";
    	}
    	elsif ($ENV{'HTTP_USER_AGENT'} =~ m/Konqueror/)
    	{
    		$browser="Konqueror";
    	}
    	elsif ($ENV{'HTTP_USER_AGENT'} =~ m/Safari/)
    	{
    		$browser="Safari";
    	}
    	elsif ($ENV{'HTTP_USER_AGENT'} =~ m/Firefox/)
    	{
    		$browser="Firefox";
    	}
    	elsif (($ENV{'HTTP_USER_AGENT'} =~ m/bot/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/Google/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/Slurp/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/Scooter/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/Spider/)
    	or ($ENV{'HTTP_USER_AGENT'} =~ m/Infoseek/))
    	{
    		$browser="Bot";
    	}
    	else
    	{
    		$browser="Other";
    	}
    	return $browser;
    }
    Il me manque quelques informations à savoir, comment représenter les expressions suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (!ereg("MSIE", getenv("HTTP_USER_AGENT")))
    comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and ($ENV{'HTTP_USER_AGENT'} !~ m/MSIE/)
    ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (eregi("Spider", getenv("HTTP_USER_AGENT")))
    eregi, je pense que l'expression régulière change, qu'en pensez-vous ?

    J'ai testé le script car il ne présentait pas d'erreur, mais le résultat n'est pas bon, avec Firefox, il indique Netscape idem avec Internet Explorer

    Merki
    .Olivier

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Le mauvais fonctionnement de ton script provient d'un problème de priorité, dans ton premier if, il faut que tu fasses ( (..or...or ... or ...) and () and () and () and () ) pour être correct.

    eregi() est insensible à la casse, il suffit de rajouter l'option /i à la fin de ta regex, "m/bot/i" par exemple.

    Par ailleurs, consulter 10000 fois les variables d'environnements est à la fois illisible et inefficace, il vaut mieux mettre le sujet dans une variable temporairement, j'aurais même tendance à le mettre dans $_ de façon à pouvoir faire les match implicitement :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    sub browser {
      my $browser;
      local $_ = user_agent();
     
      if ( ( m/Nav/ or m/Gold/ or m/X11/ or m/Mozilla/ or m/Netscape/ )
    	and ! m/MSIE/ and ! m/Konqueror/ and ! m/Firefox/ and ! m/Safari/ ) {
        $browser="Netscape";
      }
      elsif (m/Opera/) {
        $browser="Opera";
      }
      elsif (m/MSIE/) {
        $browser="MSIE";
      }
      elsif (m/Lynx/) {
        $browser="Lynx";
      }
      elsif (m/WebTV/) {
        $browser="WebTV";
      }
      elsif (m/Konqueror/) {
        $browser="Konqueror";
      }
      elsif (m/Safari/) {
        $browser="Safari";
      }
      elsif (m/Firefox/) {
        $browser="Firefox";
      }
      elsif (m/bot/i or m/Google/i or m/Slurp/i or m/Scooter/i or m/Spider/i or m/Infoseek/i) {
        $browser="Bot";
      }
      else {
        $browser="Other";
      }
      return $browser;
    }
    --
    Jedaï

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Un grand
    .Olivier

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

Discussions similaires

  1. Masquage d'options du navigateur du visiteur
    Par jasho11 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2010, 12h33
  2. [Lazarus] [Linux] Récupérer le navigateur par défaut
    Par ChPr dans le forum Lazarus
    Réponses: 10
    Dernier message: 05/10/2008, 16h55
  3. [PHP-JS] récupérer le navigateur
    Par adoptioninternationa dans le forum Langage
    Réponses: 3
    Dernier message: 28/06/2008, 16h23
  4. Récupérer l'OS du visiteur
    Par peplum37 dans le forum Langage
    Réponses: 1
    Dernier message: 17/12/2007, 20h05
  5. Detecter le navigateur du visiteur
    Par huynhi dans le forum Langage
    Réponses: 8
    Dernier message: 04/12/2006, 16h08

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