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 :

Utilisation de CGI et LWP


Sujet :

Web Perl

Vue hybride

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut Utilisation de CGI et LWP
    Bonjour à tous,

    j'ai une question concernant un script CGI que je suis en train de faire et qui est appelé via un formulaire POST tout ce qu'il y a de plus classique.

    Le but:
    Vérifier si des URL (pages) sont valides

    Le moyen:
    Je fais remplir à l'utilisateur une textarea avec une URL par ligne, je passe ça à mon CGI.
    Le CGI parse les URLs et, grâce à LWP récupère le status http de la page (200 = OK, 404 = KO ... etc)

    Le problème:
    Dans mon CGI, je fais un
    use CGI;
    use LWP::UserAgent;


    Lorsque je l'exécute dans mon Shell, tout fonctionne bien.

    Maintenant, dans mon browser:
    Lorsque je retire le use LWP::UserAgent (et tous les appels aux méthodes de ce package), le CGI standard s'execute bien et m'affiche le code HTML que je veux.

    Mais lorsque que je remet le use LWP::UserAgent, j'ai une erreur 500 (Internal server error).

    La(/les) question(s):
    Peut-on utiliser ces 2 packages en même temps ? (j'ai vu des exemple les utilisent, mais bon ...)
    Si non, quel autres package puis-je utiliser avec CGI pour arriver au meme résultat ?
    Est-ce un erreur de configuration ?
    Avez-vous une idée?

    Merci de vos réponses.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut
    Et voici le code qui fonctionne ... mais ne fait pas ce que je veux:


    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
     
    use strict;
     
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
    #use LWP::UserAgent;
     
    my $cgi = new CGI;
    my @urls = split(/\n/, $cgi->param('urls'));
     
    print "Content-type: text/html\n\n";
    print "<html><head><title>UrlShaker</title></head><body><table>\n";
    my $c1 = "eee"; my $c2 = "fff"; my $c = $c1;
    foreach (@urls)
    {
        print "<tr style=\"background:#" . $c . ";\">\n";
        print "<td><a href=\"" . $_ . "\">" . $_ . "</a></td>\n";
    #    my $ua  = LWP::UserAgent->new();
    #    my $req = $ua->request(HTTP::Request->new(GET => $_));
    #    print "<td>" . $req->code . "</td>\n";
        print "</tr>\n";
        $c = $c eq $c1 ? $c2 : $c1;
    }
    print "</table><br /><br /><a href=\"javascript:history.back()\">revenir</a></body></html>\n";


    Et voici le code qui ne fonctionne pas ... mais qui devrait faire ce que je veux:


    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
     
    use strict;
     
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
    use LWP::UserAgent;
     
    my $cgi = new CGI;
    my @urls = split(/\n/, $cgi->param('urls'));
     
    print "Content-type: text/html\n\n";
    print "<html><head><title>UrlShaker</title></head><body><table>\n";
    my $c1 = "eee"; my $c2 = "fff"; my $c = $c1;
    foreach (@urls)
    {
        print "<tr style=\"background:#" . $c . ";\">\n";
        print "<td><a href=\"" . $_ . "\">" . $_ . "</a></td>\n";
        my $ua  = LWP::UserAgent->new();
        my $req = $ua->request(HTTP::Request->new(GET => $_));
        print "<td>" . $req->code . "</td>\n";
        print "</tr>\n";
        $c = $c eq $c1 ? $c2 : $c1;
    }
    print "</table><br /><br /><a href=\"javascript:history.back()\">revenir</a></body></html>\n";

    PS: pardon pour la propreté du code.

  3. #3
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut
    je ne connais pas du tout le module LWP::UserAgent;
    mais je pense que l'érreure 500 est du à une erreure de code dans le code qui utilise ce package.


    si non quel intérêt à tu à utiliser CGI si tu en fait pas usage de ces méthodes ???

    si tu à acces aux logs d'erreur du serveur essaye de les lire tu auras surment quelque chose pour t'aider la bas

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut
    J'utilise CGI.
    Au moins pour récupérer les paramètres POST.

    Le code du dessus n'est qu'un extrait de mon script.
    J'utilise CGI plus loin dans le runtime.

    Je vais checker les logs.
    Merci.

    Sinon, d'autres idées, d'autres participants ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut
    Tu avais bien raison ... erreur dans le package LWP UserAgent.

    Quelqu'un a une alternative ?

  6. #6
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut
    montre nous la ligne d'erreur, car je ne pense pas que ça sois le package qui soit fautif mais plus-tôt ton code.
    p-e que des gens qui connaise un peu le module pourrons t'aider

Discussions similaires

  1. Utilisation des CGI
    Par sagopa dans le forum Apache
    Réponses: 1
    Dernier message: 06/11/2008, 18h21
  2. Bloquer les visiteurs utilisant un cgi-proxy
    Par joboy84 dans le forum Langage
    Réponses: 2
    Dernier message: 10/06/2008, 21h08
  3. [Langage du site] L'utilisation des cgi est recommandé ?
    Par burkan21 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 25/07/2007, 11h44
  4. utilisation de CGI::Session
    Par nixonne dans le forum Web
    Réponses: 5
    Dernier message: 09/05/2006, 22h20

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