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 :

Appel sous routine dans url


Sujet :

Web Perl

  1. #1
    Membre du Club Avatar de blacksnake
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 64
    Points : 69
    Points
    69
    Par défaut Appel sous routine dans url
    Salut,

    Je cheche comment appeler une sous routine dans une url pour ne pas faire un script cgi intermédiaire. Le but du jeu est de lancer un delete sur une base de donnée. Avant de taper sur la base je préfère appeler une fonction sans risque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub say_hello {
       print("Content-type: text/html\n\n");
       print "Hello, World!\n";
    }
    http://descartes/cgi-bin/gallica.pl?&say_hello; ==> retourne une erreur 500.

    Merci à vous

  2. #2
    Membre du Club Avatar de blacksnake
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 64
    Points : 69
    Points
    69
    Par défaut
    En m'inspirant du script d'Olivier j'ai tenté de faire un script qui appelle des sous routines en fonction du paramètre défini dans l'url :

    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
     
    #!/usr/bin/perl
    use strict; use warnings;
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
     
    my $html =  "Content-type: text/html\n\n";
     
    sub fonc1() { 
        print $html . ("<h3>fonc1<hr></h3>");  
    }
    sub fonc2() { 
        print $html . ("<h3>fonc2<hr></h3>");  
    }
     
    my %redirect_to = (
      google    => 'http://www.google.com',
      yahoo => 'http://www.yahoo.com',
      toto1        => &fonc1(),
      toto2        => &fonc2(),
      default    => '/'
    );
     
    my $cgi=new CGI;
     
    my $url = $cgi->param("page") || "default";
    print $cgi->redirect(-uri=> $redirect_to{$url});

    Les problème est que lors de l'appel de l'url avec le paramètre google, le script ne redirige pas vers google mais il affiche le contenu de fonc1 et de fonc2.

    Comment faire pour que le script redirige vers google sans afficher le contenu des fonctions ?

    Merci à vous

  3. #3
    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
    appelle la fonction machin()
    est une référence à la fonction machin().

    Donc tu appelais tes deux fonctions lors de la construction de ton hash... Ce qui empêche toute redirection par la suite bien sûr...

    Par ailleurs tu mélanges tout ! Soit tu veux faire une redirection, soit tu veux faire un appel de fonction, mais ton hash ne devrait contenir que l'une des deux options !

    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
    #!/usr/bin/perl
    use strict; use warnings;
    use CGI qw(:standard);
    use CGI::Carp qw(fatalsToBrowser);
     
    my %choices = (
      toto1        => \&fonc1,
      toto2        => \&fonc2,
      default    => \&default,
    );
     
    my %redirect_to = (
      google    => 'http://www.google.com',
      yahoo => 'http://www.yahoo.com',
    );
     
    my $cgi=new CGI;
     
    my $choice = param("page") || "default";
     
    if( exists $choices{$choice} ) {
      $choices{$choice}->();
    }
    elsif( exists $redirect_to{$choice} ) {
      print redirect(-uri=> $redirect_to{$choice});
    }
    else {
      default();
    }
     
    # subroutines "choices"
    sub fonc1 { 
      tnc('fonc1', h3( "fonc1", hr() ) );
    }
    sub fonc2 {
      tnc('fonc2', h3( "fonc2", hr() ) );
    }
    sub default {
      tnc('Default', p("You probably didn't intend to end up here...") );
    }
     
    # title and content of the generated html page
    sub tnc {
      my ($title, @content) = @_;
      print header(),
        start_html($title),
        @content,
        end_html();
    }
     
    __END__
    --
    Jedaï

  4. #4
    Membre du Club Avatar de blacksnake
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 64
    Points : 69
    Points
    69
    Par défaut
    Impec', merci Jedai

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

Discussions similaires

  1. [AppleScript] Appeler une routine dans un script
    Par jefmonde dans le forum AppleScript
    Réponses: 5
    Dernier message: 16/09/2014, 11h48
  2. Appel d'une sous routine dans autre script
    Par tnarol dans le forum Langage
    Réponses: 8
    Dernier message: 17/09/2009, 16h38
  3. appel à sous routine avec variables
    Par mikeduff dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 29/01/2009, 18h46
  4. Appel de fonction dans des sous dossiers
    Par milach dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/01/2008, 14h24
  5. Appel de routine dans un main
    Par lylandra6 dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2007, 08h55

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