probleme cgi perl syntax ok ex ligne commande ok

Le
swilting
je suis en train de faire un nouveau script
perl -c script.pl
syntax ok

perl script.pl
me donne bien la sortie que je veux

aidez moi je ne comprends pas pourquoi il ne marche pas sur apache
#!/usr/bin/perl -w
use diagnostics;
use warnings;
use strict;
use CGI qw(:standard escapeHTML);
use CGI::Carp qw(fatalsToBrowser);
use Net::SMTP;
##use FileHandle;
use File::Copy;
use constant LONGUEUR_MAX => 5_000;

my $cgi;
my $key;
my %etats;
my $ecran_actuel;

$cgi = new CGI;

%etats = (
'defaut' =>&saisie_form,
## 'saisie_code_capcha' =>&saisie_code_capcha,
## 'validation' =>&validation,
);
$ecran_actuel = param(".Etat") || "defaut";
die "Pas d'ecran pour $ecran_actuel" unless $etats{$ecran_actuel};


## engendre le document courant
en_tete_standard();
while ( my ($nom_ecran,$fonction) = each %etats){
$fonction->($nom_ecran eq $ecran_actuel);
}

pied_de_page_standard();


########################################################################
## fonctions d en tete , de pied de page ,de menu ################
########################################################################

sub en_tete_standard {
print header(),
print start_html(-Title => "contact" , -BGCOLOR=>"White",
-script=>{-type=>'JAVASCRIPT',
-src=>'code.js'}
);
print start_form();
}

sub menu_boutique{
print p(vers_doc("annuler"),
vers_doc("saisie_code_capcha"));
}


sub saisie_form {
my($actif) = @_;
return unless $actif;
print "<H1>vous desirez me contacter !</H1>";
print p("remplissez le formulaire suivant !");
print pre ( p ("Nom&nbsp;: ",textfield("Nom")),
p ("Adresse&nbsp;: ",textfield("Adresse")),
p ("Ville&nbsp;: ",textfield("Ville")),
p ("Code
Postal&nbsp;: ",textfield("Code_postal")),
p ("Pays&nbsp;: ",textfield("Pays")),
p
("Telephone&nbsp;: ",textfield("Teléphone")),
p ("e-mail&nbsp;: ",textfield("Mail")),
p
("commentaire&nbsp;: ",textarea("commentaire"),
-rows=>10,
-columns=>50)),
p("vous pouvez joindre des images au format gif
(pas obligatoire)&nbsp;: ", filefield(-name=>'upload',
-default=>'',
-size=>50,
-maxlength=>50));


menu_boutique();
}

sub vers_doc { submit (-NAME => ".Etat", -VALUE => shift) }

sub pied_de_page_standard{ print end_form(),end_html() }
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
espie
Le #6918941
In article swilting
je suis en train de faire un nouveau script
perl -c script.pl
syntax ok

perl script.pl
me donne bien la sortie que je veux

aidez moi je ne comprends pas pourquoi il ne marche pas sur apache


Commence par etre plus precis:

- quelle version d'apache ?
- quel OS ?
- quelle version de perl ?
- quelle version de CGI.pm ?
- avec mod_perl/fastcgi/autre zigouigoui ?
- tu as des CGI qui marchent ?
- tu as des CGI en perl qui marchent ?

(a vue de pif, je ne vois rien de bien flagrant dans ce script)

Mark Clements
Le #6933351
swilting wrote:
je suis en train de faire un nouveau script
perl -c script.pl
syntax ok

perl script.pl
me donne bien la sortie que je veux

aidez moi je ne comprends pas pourquoi il ne marche pas sur apache
"Il ne marche pas" n'est pas très utile comme description de problème!


#####################################################

sub en_tete_standard {
print header(),
print start_html(-Title => "contact" , -BGCOLOR=>"White",
-script=>{-type=>'JAVASCRIPT',
-src=>'code.js'}
);
devrait être


print header();

swilting
Le #6935721
Marc Espie wrote:

In article swilting
je suis en train de faire un nouveau script
perl -c script.pl
syntax ok

perl script.pl
me donne bien la sortie que je veux

aidez moi je ne comprends pas pourquoi il ne marche pas sur apache


Commence par etre plus precis:

- quelle version d'apache ?
- quel OS ?
- quelle version de perl ?
- quelle version de CGI.pm ?
- avec mod_perl/fastcgi/autre zigouigoui ?
- tu as des CGI qui marchent ?
- tu as des CGI en perl qui marchent ?

(a vue de pif, je ne vois rien de bien flagrant dans ce script)
j ai reecrit le script il fonctionne

mais l image que je cherche à generer
cest le texte png de l image qui s affiche
#!/usr/bin/perl -w
use diagnostics;
use strict;
use CGI qw(:standard escapeHTML);
use CGI::Carp qw(fatalsToBrowser);
use Net::SMTP;
##use FileHandle;
use File::Copy;
use GD;
use GD::Text::Wrap;
require "Random.pm";

my $cgi;
my $key;
my %etats;
my $ecran_actuel;

$cgi = new CGI;

%etats = (
'defaut' =>&saisie_commande,
'validation_code' =>&validation_code,
'annulation' =>&annulation,
);
$ecran_actuel = param(".Etat") || "defaut";
die "Pas d'ecran pour $ecran_actuel" unless $etats{$ecran_actuel};


## engendre le document courant
en_tete_standard();
while ( my ($nom_ecran,$fonction) = each %etats){
$fonction->($nom_ecran eq $ecran_actuel);
}

pied_de_page_standard();

########################################################################
## fonctions d en tete , de pied de page ,de menu ################
########################################################################

sub en_tete_standard {
print header(),
start_html(-Title => "commande" , -BGCOLOR=>"White");
print start_form();
}
sub menu_boutique {
print p(vers_doc("annulation"),
vers_doc("validation_code"));
}

sub saisie_commande {
my($actif) = @_;
return unless $actif;
print p("Tous les champs sont obligatoires");
print p("un code de securite vous seras demandé dans la prochaine
page");
print pre ( p ("Nom: ",textfield("nom")),
p ("Adresse: ",textfield("adresse")),
p ("Ville: ",textfield("ville")),
p ("Code Postal: ",textfield("code_postal")),
p ("Pays: ",textfield("pays")),
p ("e-mail: ",textfield("mail")));

print p ( "Selectionner validation_code pour continuern",
"autrement selectionner Annulationn");
menu_boutique();
}

sub validation_code {
my($actif) = @_;
return unless $actif;
my $nom = param ('nom');
my $adresse = param ('adresse');
my $ville = param ('ville');
my $code_postal = param ('code_postal');
my $pays = param ('pays');
my $mail = param ('mail');
# create a new
sub image_capcha {
my $text = new Random;
my $im = new GD::Image(800,600);

# allocate some colors
my $white = $im->colorAllocate(255,255,255);
my $black = $im->colorAllocate(0,0,0);
my $red = $im->colorAllocate(255,0,0);
my $blue = $im->colorAllocate(0,0,255);

my $wrapbox = GD::Text::Wrap->new( $im,
line_space => 4,
color => $black,
text => $text,
);

$wrapbox->set_font(gdMediumBoldFont);
$wrapbox->set_font('arial',12);
$wrapbox->set(align => 'center', width => 120);
$wrapbox->draw(10,140);
$im->rectangle($wrapbox->get_bounds(10,140),$red);

##print $cgi->header( -type => "image/png", -expires => "-1d");
binmode STDOUT ;
print $im->png();
}
my $image = &image_capcha();
print img {src=>$image,align=>'LEFT'};

## mail($numero_commande,$nom,$adresse,$ville,$code_postal,$pays
$telephone,$mail,$image);
## cpandrename($image);
}

sub annulation {
my($actif) = @_;
return unless $actif;
print p ("vous etes une mauvaise personne ou un robot spammeur");

}

sub pied_de_page_standard{ print end_form(),end_html() }




sub vers_doc { submit (-NAME => ".Etat", -VALUE => shift) }


sub mail {
my($numero_commande,$nom,$adresse,$ville,$code_postal,$pays,$telephone
$mail,$image) = @_;
my $smtp = Net::SMTP->new('127.0.0.1');
$smtp->mail($ENV{USER});
$smtp->to($mail);
$smtp->data();
$smtp->datasend("To: ",$mail);
$smtp->datasend("n");
$smtp->datasend("Cc: ","n");
$smtp->datasend("Cc: ","n");
$smtp->datasend("n");
$smtp->datasend("Subject: facture ",$numero_commande,"n");
$smtp->datasend("coordonnes personnellen");
$smtp->datasend($nom);
$smtp->datasend("n");
$smtp->datasend($adresse);
$smtp->datasend("n");
$smtp->datasend($ville,"n",$code_postal,"n",$pays);
$smtp->datasend("n");
$smtp->datasend($telephone);
$smtp->datasend("n");
$smtp->datasend($mail);
$smtp->datasend("n");
$smtp->datasend("image commandee ",$image,"n");
$smtp->dataend();

$smtp->quit;
}

sub cpandrename {
my($image) = @_;
## `cp images/$image temp/`;
## `cp images/commander.gif temp/`;
## rename ("temp/commander.gif", "temp/$image");
## `cp -f temp/$image images/`;
my $filehandle = "/var/www/html/jeanluc/images/";
$filehandle .= $image;
copy ($filehandle,"/var/www/html/jeanluc/temp/") or die "$!";
copy
("/var/www/html/jeanluc/images/commandergimp.gif","/var/www/html/jeanluc/temp/")
or die "$!";
my $filehandletemp = "/var/www/html/jeanluc/temp/";
$filehandletemp .=$image;
my @args = ("rm","-f",$filehandle);
system(@args) == 0 or die "systems @args failed :$?";
rename ("/var/www/html/jeanluc/temp/commandergimp.gif",$filehandletemp);
## `cp -f $filehandletemp /var/www/html/jeanluc/images`;
copy ($filehandletemp,"/var/www/html/jeanluc/images/");
## unlink $filehandletemp;
## my $filehandlebase = FileHandle->new($filehandle , "r");
## cp($filehandlebase , "/var/www/html/jeanluc/temp/") or die "$!";
## my $filehandleold = "/var/www/html/jeanluc/images/commander.gif";
## my $filehandleoldbase = FileHandle->new($filehandleold , "r");
## cp ($filehandleoldbase , "/var/www/html/jeanluc/temp/") or die "$!";
## rename( $filehandleold ,$filehandle);
## my $filehandlenew = "/var/www/html/jeanluc/temp/";
## $filehandlenew .=$image;
## rename ($filehandleoldbase , $filehandlenew);
## my $filehandletemp = FileHandle->new($filehandlenew , "r");
## cp ($filehandletemp , "/var/www/html/jeanluc/images/") or die "$!";
}


Emmanuel Florac
Le #6939361
Le Wed, 11 Jun 2008 21:55:24 +0200, swilting a écrit :

print header(),


C'est normal, il faut que tu envoies le header correspondant au type de
données que tu envoies; un truc comme

print header("image/png")

--
Ne pas savoir de quoi on parle est un avantage dont il ne faut pas
abuser.
R.Debray

Paul Gaborit
Le #6971281
À (at) Wed, 11 Jun 2008 21:55:24 +0200,
swilting
j ai reecrit le script il fonctionne
mais l image que je cherche à generer
cest le texte png de l image qui s affiche


J'ai quand même l'impression que vous vous êtes un peu mélangé les
pinceaux sur le fonctionnement de HTTP/HTML.

Un navigateur qui doit afficher un document HTML contenant une image
effectue *deux* requêtes au serveur HTTP : la première pour récupérer
le document HTML et la seconde pour récupérer l'image.

--
Paul Gaborit - Perl en français -
espie
Le #6971271
In article Paul Gaborit

À (at) Wed, 11 Jun 2008 21:55:24 +0200,
swilting
j ai reecrit le script il fonctionne
mais l image que je cherche à generer
cest le texte png de l image qui s affiche


J'ai quand même l'impression que vous vous êtes un peu mélangé les
pinceaux sur le fonctionnement de HTTP/HTML.

Un navigateur qui doit afficher un document HTML contenant une image
effectue *deux* requêtes au serveur HTTP : la première pour récupérer
le document HTML et la seconde pour récupérer l'image.


De toutes facons, moi, le mec qui repond a mon message sans donner aucune
des infos que je lui demande, je renonce a pouvoir l'aider. Il a
effectivement un gros probleme de methodologie a corriger a la base.
On verra ce qu'on pourra faire pour lui quand il aura un peu grandi.


swilting
Le #6976631
Marc Espie wrote:

In article swilting
je suis en train de faire un nouveau script
perl -c script.pl
syntax ok

perl script.pl
me donne bien la sortie que je veux

aidez moi je ne comprends pas pourquoi il ne marche pas sur apache


Commence par etre plus precis:

- quelle version d'apache ?
- quel OS ?
- quelle version de perl ?
- quelle version de CGI.pm ?
- avec mod_perl/fastcgi/autre zigouigoui ?
- tu as des CGI qui marchent ?
- tu as des CGI en perl qui marchent ?

(a vue de pif, je ne vois rien de bien flagrant dans ce script)
c est un 240plan de chez ovh

apache 1.3.41 je crois
le reste je sais pas

oui tout mes cgi sont en perl
j apperçoie une methode avec creation du fichier image via FileHandle
mais je sais qiue ce ne st pas la bonne solution je pense


Publicité
Poster une réponse
Anonyme