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 :

Un script de redirection


Sujet :

Web 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 Un script de redirection
    Bonjour

    J'ai écris un petit script qui regroupe quelques liens de ma page d'accueil sur mon site perso. J'ai appelé ce fichier, redirect.cgi, voici son contenu:
    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
     
    #!/usr/bin/perl -w
     
    use strict;                                      # Checking all variables
    use CGI qw(:standard);                    # Loading CGI module
    use CGI::Carp qw(fatalsToBrowser);   # Loading CGI routine
                                                       # for writing to the HTTPD error log
     
    $CGI::POST_MAX = 1024 * 100;   # Max 100K posts
    $CGI::DISABLE_UPLOADS = 1;     # No upload
     
    # Creating a new CGI object
    my $cgi=new CGI;
     
    # Add URL parameter
    my $url = $cgi->param("page");
     
    # Checking parameters
    if ($cgi->param('page') eq 'openbsd') {
        print $cgi->redirect(-uri=>'http://www.openbsd.org');
        } elsif ($cgi->param('page') eq 'developpez') {
            print $cgi->redirect(-uri=>'http://www.developpez.com');
        } elsif ($cgi->param('page') eq 'oregnier') {
            print $cgi->redirect(-uri=>'http://oregnier.developpez.com');
        } elsif ($cgi->param('page') eq 'bsd') {
            print $cgi->redirect(-uri=>'http://bsd.developpez.com');
        } else {
            print $cgi->redirect(-uri=>'/');
        }
     
    # End script
    Je viens de le tester et à première vue, il fonctionne correctement mais je voudrais avoir vos avis et commentaires.

    Pour se rendre par exemple sur le site d'OpenBSD, l'adresse URL sera, http://monsite/cgi-bin/redirect.cgi?page=opensd

    Bien entendu, il est prévu d'utiliser la réécriture d'adresses

    Merci
    .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
    On peut nettement le simplifier, d'autant que tu as des trucs bizarres (pourquoi déclarer $url pour ne jamais l'utiliser ?) :
    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
    #!/usr/bin/perl
    use strict; use warnings;
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
     
    $CGI::POST_MAX = 1024 * 100;   # Max 100K posts
    $CGI::DISABLE_UPLOADS = 1;     # No upload
     
    my %redirect_to = (
      openbsd => 'http://www.openbsd.org',
      developpez => 'http://www.developpez.com',
      oregnie => 'http://oregnier.developpez.com',
      bsd => 'http://bsd.developpez.com',
      default => '/',
    );
     
    # Creating a new CGI object
    my $cgi=new CGI;
     
    my $url = $cgi->param("page") || "default";
    print $cgi->redirect(-uri=> $redirect_to{$url});
     
    __END__
    Le principal avantage de ce style c'est qu'il est très facile d'étendre le nombre de sites redirigés, de les modifier, etc. C'est plus lisible aussi !

    --
    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
    Salut Jedai

    Le coup de la variable non utilisée

    Le script est nettement plus clair comme ça

    Merci
    .Olivier

  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
    Salut

    Je me permet de m'incruster ds le topic. J'ai essayé le script d'Olivier, il marche très bien ; par contre la version de Jedai ne marche pas. Une idée ?

    par ex http://descartes/cgi-bin/redirect.cgi?page=developpez renvoie une erreur 500.

    Merci

  5. #5
    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
    J'avais supprimé le "use CGI" en même temps que l'option "qw(:standard)" qui était en trop dans le script d'Olivier , du coup ça ne compilait plus... Réessaie, ça devrait marcher.

    --
    Jedaï

  6. #6
    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
    Jedai , il me semble que tu as oublié un print à la dernière ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $cgi->redirect(-uri=> $redirect_to{$url});
    .Olivier

  7. #7
    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 à vous deux

  8. #8
    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
    J'ai modifié le script et il ne fonctionne plus du moins avec les tirets.
    Voici le code:
    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
    #!/usr/bin/perl -w
    #
    # Don't forget chmod 755
    #
     
    #***********************#
    # Declaration          
    #***********************#
     
    use strict;
    use diagnostics;
    use warnings;
     
    use CGI qw(:standard);
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
     
    #***********************#
    # CGI Security          
    #***********************#
     
    $CGI::POST_MAX=1024*100;
    $CGI::DISABLE_UPLOADS=1;
     
    #***********************#
    # Variables 
    #***********************#
     
    # Define links
    my %redirect_to = (
      openbsd =>'http://www.openbsd.org',
      developpez =>'http://www.developpez.com',
      oregnier =>'http://oregnier.developpez.com',
      bsd =>'http://bsd.developpez.com',
      obsd-colors-shell =>'http://oregnier.developpez.com/cours/un-shell-colore-sous-openbsd/',
      obsd-manual-page =>'http://oregnier.developpez.com/cours/ecrire-ma-propre-page-de-manuel-sous-openbsd/',
      obsd-cdrom-41 =>'http://oregnier.developpez.com/cours/creer-un-cd-rom-dinstallation-openbsd-41-amorcable/',
      leave-me-your-feedback =>'/cgi-bin/feedback.cgi',
      pgp-keyservers =>'http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xBA292EF2',
      default =>'/',
    );
     
    # Creates a new CGI object
    my $cgi=new CGI;
     
    #***********************#
    # Operations       
    #***********************#
     
    my $url=$cgi->param("page") || "default";
    print $cgi->redirect(-uri=>$redirect_to{$url});
    J'obtiens ce message désagréable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Software error:
     
    Bareword "obsd" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "colors" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "obsd" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "manual" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "obsd" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "cdrom" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "leave" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "me" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "your" not allowed while "strict subs" in use at redirect.cgi line 29.
    Bareword "pgp" not allowed while "strict subs" in use at redirect.cgi line 29.
    Execution of redirect.cgi aborted due to compilation errors.
    Vos avis s'il vous plaît ?

    Merci
    .Olivier

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    tu fais dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    my %redirect_to = (
      "openbsd" =>'http://www.openbsd.org',
      "developpez" =>'http://www.developpez.com',
      "oregnier" =>'http://oregnier.developpez.com',
      "bsd" =>'http://bsd.developpez.com',
      "obsd-colors-shell" =>'http://oregnier.developpez.com/cours/un-shell-colore-sous-openbsd/',
      "obsd-manual-page" =>'http://oregnier.developpez.com/cours/ecrire-ma-propre-page-de-manuel-sous-openbsd/',
      "obsd-cdrom-41" =>'http://oregnier.developpez.com/cours/creer-un-cd-rom-dinstallation-openbsd-41-amorcable/',
      "leave-me-your-feedback" =>'/cgi-bin/feedback.cgi',
      "pgp-keyservers" =>'http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xBA292EF2',
      "default" =>'/',
    );
    et je ne sais pas si les redirections vers / et /cgi-bin/feedback.cgi fonctionneront, car il si je me souviens bien, il faut http dans l'url pour que ça fonctionne correctement.

  10. #10
    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
    Citation Envoyé par djibril Voir le message
    et je ne sais pas si les redirections vers / et /cgi-bin/feedback.cgi fonctionneront, car il si je me souviens bien, il faut http dans l'url pour que ça fonctionne correctement.
    Merci pour ta réponse et concernant le cas de feedback.cgi, je vais tester

    Encore merki
    .Olivier

  11. #11
    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
    Je désire apporter une petite modification à ce script, être redirigé dans une nouvelle fenêtre afin que le visiteur laisse la page de mon site ouverte.

    Je me suis dit, l'élèment target doit fonctionner donc j'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print $cgi->redirect(-target=>'_new',
                         -uri=>$redirect_to{$url});
    La redirectoin fonctionne mais se produit dans la même page.

    Avez-vous des infos s'il vous plaît ?

    Merci
    .Olivier

  12. #12
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    il te faut des leçons de html .
    c'est

  13. #13
    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
    Salut

    Ce _blanck a été le premier a être testé mais malheureusement, il me provoque une erreur 404 pour tous les liens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print $cgi->redirect(-target=>'_blank',
                         -uri=>$redirect_to{$url});
    Un cours CGI ?

    PS: j'utilise la réécriture d'adresses

    Exemple avec mon .htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^developpez-homepage.html$ /cgi-bin/redirect.cgi?page=developpez [L]
    .Olivier

  14. #14
    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
    Je ne vois pas très bien pourquoi target marcherait pour une redirection, c'est un attribut de l'élément 'a', pas une caractéristique de l'adresse... Utilise plutôt du Javascript si tu veux faire quelque chose comme ça.

    --
    Jedaï

  15. #15
    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
    Citation Envoyé par Jedai Voir le message
    Je ne vois pas très bien pourquoi target marcherait pour une redirection, c'est un attribut de l'élément 'a', pas une caractéristique de l'adresse... Utilise plutôt du Javascript si tu veux faire quelque chose comme ça.
    Je voudrais savoir si à la place de redirect(), on peut utiliser un a href ? C'est juste une question

    Olivier, ne pose pas de question idiote
    .Olivier

  16. #16
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    sorry, j'avais pas tout lu ton thread.
    En effet, tu ne peux pas faire de redirection dans une autre page via perl.
    Maintenant y a t il d'autre solution, je ne sais pas.
    Sinon Tu peux toujours redirigé vers une page personnalisée avec un lien pour revenir en arriere et un autre pour aller vers le site souhaité.

    A toi de voir.

  17. #17
    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
    Citation Envoyé par djibril Voir le message
    En effet, tu ne peux pas faire de redirection dans une autre page via perl.
    Maintenant y a t il d'autre solution, je ne sais pas.
    Généralement on utilise du Javascript pour faire ce genre de chose (le problème c'est qu'il s'agit d'un popup, strictement parlant, donc ça ne marchera pas partout, loin de là. Le plus sûr serait effectivement de proposer la "redirection" (si on peut vraiment l'appeler comme ça) par un lien normal.

    --
    Jedaï

  18. #18
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    C'est pour cela que j'ai précisé en perl. C'est vrai qu'en javascript, on peut jongler avec les popup, mais je trouve que c'est se prendre le chou pour rien. En plus, javascript peut etre desactivé, etc.
    Le mieux pour moi est de laisser la redirection dans la même page ou bien proposer des liens.

  19. #19
    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
    Citation Envoyé par djibril Voir le message
    Le mieux pour moi est de laisser la redirection dans la même page ou bien proposer des liens.
    Vu que j'utilise le xhtml strict l'élèment target n'est pas autorisé donc je reste comme ça
    .Olivier

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

Discussions similaires

  1. Probleme script bash - redirection fichier..
    Par origan31 dans le forum Linux
    Réponses: 1
    Dernier message: 25/08/2007, 19h08
  2. Erreur dans le script de redirection
    Par Sam 069 dans le forum Langage
    Réponses: 6
    Dernier message: 29/10/2006, 19h08
  3. [Conception] Passage De Variable Avec Post Via Un Script Php + Redirection
    Par british_toons dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/09/2006, 16h57
  4. Un script de redirection
    Par Furius dans le forum Langage
    Réponses: 29
    Dernier message: 21/11/2005, 02h21
  5. Script shell - Redirection
    Par GLDavid dans le forum Linux
    Réponses: 3
    Dernier message: 17/11/2005, 08h56

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