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

Web Perl Discussion :

Get et readParse


Sujet :

Web Perl

Vue hybride

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut Get et readParse
    Bonjour, j'ai quelques dificultées pour récuperer mes variables get, lorsque je fait PrintVariables(); j'obtiens bien ma variable qui se trouve dans l'url mais je n'arrive pas a la recuperer en faisant : print $in{'id'};

    Quelqu'un sait t'il pourquoi?




    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
     
    #!/usr/bin/perl 
     
    use strict;
    use CGI;
     
     
    print "Content-Type: text/html\n\n"; # On affiche l'en-tête HTML indispensable
    print "";
    print "<HTML><HEAD><TITLE>test.cgi</TITLE></HEAD>";
    print "<BODY bgcolor=#ffffff>";
    print "<Font color=#000000>";
    print "<center><H1>Test.cgi</H1></center><br><br>";
     
    require "lib/cgi-lib.pl";
     
     
     
    &ReadParse(*in);
     
     
    #print $in{'id'};
     
     
    print PrintVariables();
    A quoi sert le & devant ReadParse?


    Message d'erreur:
    malformed header from script. Bad header=Variable "%in" is not imported: cgiwrap

  2. #2
    Expert confirmé
    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
    Par défaut
    Pourquoi utilises-tu la librairie cgi-lib ? Elle est complètement dépassée, dangereusement vulnérable et abandonnée depuis plus de dix ans....

    D'autant que tu charges le module CGI, qui est la façon correcte de faire du CGI en Perl actuellement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/usr/bin/perl
    use strict;
    use CGI qw/:standard/;
     
    print header(), # On affiche l'en-tête HTML indispensable
      start_html(-title => 'test.cgi'),
      span({ -style => 'text-align:center'}, h1( 'Test.cgi' ) ),
      br(),
      p( 'id : ', param( 'id' ) ),
      end_html();
     
    __END__
    --
    Jedaï

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Je suis un newbie en perl, voila pourquoi!

    J'ai trouvé cette exemple sur differents sites...

    Ce qu'ont dit de perl est donc vrai, plusieurs façons de faire.

    Merci pour ce morceau de code

    Encore un truc, si j'affiche une variable qui n'existe pas, est ce que j'aurais une erreur 500?

    Si oui comment faire pour tester l'existance d'une variable en perl?

  4. #4
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par zn415 Voir le message
    JCe qu'ont dit de perl est donc vrai, plusieurs façons de faire.
    C'est vrai en général, mais ici ce n'est pas le cas, tu as peut-être vu cet exemple sur plusieurs sites, mais c'est uniquement parce que les sites étaient vieux ou avaient été écrits par des gens qui ne s'y connaissaient pas (et s'étaient référé à des vieux sites), comme je te l'ai dit, ça fait pratiquement dix ans qu'il est recommandé d'éviter cgi-lib.

    Citation Envoyé par zn415 Voir le message
    Encore un truc, si j'affiche une variable qui n'existe pas, est ce que j'aurais une erreur 500?

    Si oui comment faire pour tester l'existance d'une variable en perl?
    Tu n'auras pas une erreur 500, juste rien du tout. Pour tester l'existence d'une variable, vérifie si elle est définie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if( defined param( 'id' ) ) {
      # do something
    }
    else {
      # do something else
    }
    Un idiome courant lorsque tu veux une valeur par défaut est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $id = param('id') || 'Anonyme';
    (attention ça ne marche pas si une valeur fausse (comme 0 ou une chaîne vide) peut être légitime pour ce paramètre)

    --
    Jedaï

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

Discussions similaires

  1. La commande apt-get
    Par GLDavid dans le forum Debian
    Réponses: 4
    Dernier message: 03/01/2004, 00h23
  2. gets() a la suite de scanf() -> probleme
    Par ickis dans le forum C
    Réponses: 12
    Dernier message: 14/12/2003, 20h24
  3. gets ,fgets
    Par Zazeglu dans le forum C
    Réponses: 2
    Dernier message: 19/09/2003, 18h24
  4. Créer les get et set des classes
    Par cameleon2002 dans le forum JBuilder
    Réponses: 3
    Dernier message: 17/09/2003, 21h03
  5. url d'une page asp ou upload avec get
    Par taupin dans le forum ASP
    Réponses: 18
    Dernier message: 22/08/2003, 14h25

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