Bonsoir à tous,
Je suis inculte en Perl mais j'ai un besoin ponctuel!
Sur un site que je dois reprendre, un formulaire Flash actionscript renvoie ses variables à un fichier perl chargé d'envoyer les champs du formulaires au gestionnaire du site, d'envoyer un mail de confirmation au visiteur, et d'inscrire ces données sur un fichier texte sur le serveur.
Il faut savoir que ce fichier fonctionnait sur un hébergement dédié OVH, mais plus depuis son passage sur un serveur mutualisé OVH aussi.
Avant de poster ici, j'ai vérifié beaucoup de choses et suis maintenant convaincu que le libellé de mon perl n'est pas adapté au serveur (d'ailleurs l'assistance OVH m'a conforté dans cette idée).
A ce jour, après quelques modifs, la situation est celle-ci:
Si un visiteur rempli le formulaire et l'envoie, personne ne reçoit quoique ce soit;par contre, si j'appelle mon fichier perl en http, le gestionnaire reçoit la page récapitulative prévue mais les champs ne sont pas renseignés...!

J'ajoute que Perl Express considère que la syntaxe est OK
J'ai l'impression qu'il peut s'agir d'une question de code texte mais les essais que j'ai fait n'ont aboutis à rien.
J'ai passé beaucoup d'heures à essayer de comprendre les rudiments, mais c'est quand même une affaire de connaisseurs, ce qui n'est pas du tout mon cas!!
Quelqu'un veut-il bien jeter un oeil averti sur mon code pour peut être déceler une erreur et diagnostiquer ce qui ne va pas ??
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/usr/bin/perl
 
local $| = 1;
 
###### DEBUT DES INFORMATIONS DE CONFIGURATION
 
# Liste des champs à afficher dans l'email, classés par ordre d'apparition
# !! Respecter les majuscules / minuscules dans le nom des champs !!
@champs=('stage', 'raison', 'adresse', 'codepostal', 'ville', 'nom', 'prenom', 'telephone', 'mail', 'objet');
 
# Chemin vers sendmail sur votre serveur
$sendmail='/usr/sbin/sendmail';
 
 # Vider l'archive lorsque le nombre d'enregistrements dépasse ce chiffre
$max = 50;
 
###### FIN DES INFORMATIONS DE CONFIGURATION
###### INUTILE D'EDITER AU DELA DE CETTE LIGNE
 
use CGI::Carp qw(fatalsToBrowser);
require Text::Iconv ;
print "Content-type:text/html\n\n";
 
&get_input;
&email;
&archive;
&vide;
 
sub vide {
   $mail = '';
   open (FILE3, "archive.txt");
   @lines = <FILE3>;
   close FILE3;
   if ($#lines > $max) {
      foreach (@lines) {
         chomp;
         if ($_ !~ m/[\w\d:]+/) {next;}
            $mail .= "$_\r\n";
         }
         foreach (@mails) {
         chomp($_);
         open (MAIL,"|$sendmail -t");
         print MAIL "To: $_\n";
         print MAIL "From: $mails[0]\n";
         print MAIL "Content-type:text/html\n";
         print MAIL "Subject: Archive des $max derniers enregistrements\n\n";
         print MAIL "$mail\r\n";
         close MAIL;
      }
      open (FILE3, ">archive.txt");
      print FILE3 "\n";
      close FILE3;
   }
}
 
sub archive {
   $mail='';
   foreach (@champs) {
      $mail .= "$param{$_}::";
   }
   $mail .= "\n";
   open (FILE3, ">>archive.txt");
   print FILE3 $mail;
   close FILE3;
}
 
sub email {
   open(FILE, "emails.txt");
   @mails = <FILE>;
   close FILE;
   open(FILE2, "modele.html");
   foreach (<FILE2>) {
      $template .= $_;
   }
   close FILE2;
   $template =~ m/<title>(.*?)<\/title>/i;
   $sujet = $1;
   foreach (@champs) {
      $mail .= "<u>$_ :</u> $param{$_}<br>\n";
   }
   $template =~ s/\*\*\*/$mail/g;
 
   foreach (@mails,$param{'mail'}) {
      chomp($_);
      open (MAIL,"|$sendmail -t");
      print MAIL "To: $_\n";
      print MAIL "From: $mails[0]\n";
      print MAIL "Content-type:text/html\n";
      print MAIL "Subject: $sujet\n\n";
      print MAIL "$template\n";
      close MAIL;
   }
}
 
sub get_input {
   @pairs = split(/&/, $ENV{'QUERY_STRING'});
   foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);
	  $value =~ tr/+/ /;
	  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
       	  my $converter = Text::Iconv->new("ISO8859-1", "UTF-8");
	  my $converter2 = Text::Iconv->new("UTF-8", "Latin-1");
	  $u = $converter->convert($value);
	  $value = $converter2->convert($value);
      $value =~ s/<!--(.|\n)*-->//g;
      chomp($value);
      $param{$name} = $value;
      $param{$name} =~ s/\r/\n/g;
      $param{$name} =~ s/\n/<br>/g;
   }
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
   @pairs = split(/&/, $buffer);
   foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);
	  $value =~ tr/+/ /;
	  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	  my $converter = Text::Iconv->new("ISO8859-1", "UTF-8");
	  my $converter2 = Text::Iconv->new("ISO8859-1", "Latin-1");
	  $u = $converter->convert($value);
	  $value = $converter2->convert($value);
      $value =~ s/<!--(.|\n)*-->//g;
      chomp($value);
      $param{$name} = $value;
      $param{$name} =~ s/\r/\n/g;
      $param{$name} =~ s/\n/<br>/g;
   }
}
Merci de votre aide !
jch69