remytiti Posté 23 Septembre 2008 Posté 23 Septembre 2008 Bonjour, j'utilise un scrip perl qui traite les données d'un formulaire pis me les envoie par email tout marche bien jusqu'au moment ou dans mon formulaire je rajoute une piece jointe a partir de la je recois touours les données de formulaire par mail mais la piece jointe reste dans un repertoir sur mon serveur et j'ai comme reponse Internal Server Error quand je vai dans mes logs j'ai comme erreur Died at /web/sites/vhbu3/1/205/105681/public/www/bin/PForm.pl line 235. j'utilise une interface pour parametrer mon script en me rendant a l'adresse du script j'ai donc sur mon serveur le script PForm.pl(755) et un repertoire PFORM_data(777) qui contien le fichier htaccess pouvez vous m'aider je n'y comprend plus rien merci #!/usr/bin/perl $PFORM_DATAS_DIR = 'PFORM_datas'; # nom du sous-répertoires qui contiendra les données. &recup_conf; $MAX_UP = $CONF{'MAX_UPLOAD'} * 1024; if ($CONF{'DOMAIN'}) { $DOMAIN = $CONF{'DOMAIN'}; } else { $DOMAIN = ($ENV{'SERVER_NAME'} || $ENV{'HTTP_HOST'}); } $script = ($ENV{'REQUEST_URI'} || $ENV{'SCRIPT_NAME'}); $script =~ s/\?.*//gs; $site_base = 'http://'.$DOMAIN; $CGI = $site_base.$script; use CGI; $qw = new CGI; %Form=(); foreach ($qw->param) { s/^\s//; s/\s$//; $Form{$_}=$qw->param($_); } ## INSTALLATION ## if ($Form{'ACT'} eq 'INSTALL' && $CONF{'INSTALL'} != 1) { &install; } elsif ($CONF{'INSTALL'} != 1) { &form_install; } ## ADMINISTRATION ## elsif ($Form{'ACT'} eq 'ADMIN') { &admin_menu; } elsif ($Form{'ACT'} eq 'admin_config') { &admin_config; } elsif ($Form{'ACT'} eq 'modif_conf') { &admin_modif_conf; } elsif ($Form{'ACT'} eq 'admin_new_form') { &admin_new_form; } elsif ($Form{'ACT'} eq 'creer_new_form') { &creer_new_form; } elsif ($Form{'ACT'} eq 'admin_sup_form') { &admin_sup_form; } elsif ($Form{'ACT'} eq 'admin_sup_form_confirm') { &admin_sup_form_confirm; } elsif ($Form{'ACT'} eq 'admin_modif_form') { &admin_modif_form; } elsif ($Form{'ACT'} eq 'admin_aide_form') { &admin_aide_form; } ## GESTION DU FORMULAIRE ## elsif ($Form{'F'} && $Form{'F'} =~ /^\d{14}$/ && -e "$PFORM_DATAS_DIR/F_$Form{F}.dat" ) { &form_gestion; } else { &admin_enter; } ############################### sub form_gestion { $F = $Form{'F'}; $F_fic = $PFORM_DATAS_DIR.'/F_'.$F.'.dat'; if ($ENV{'CONTENT_LENGTH'} > $MAX_UP) { $aff = "L'ensemblre des fichiers attachés que vous envoyez a une taille trop grande !!<BR>Taille d'upload limitée pour raison de sécurité !"; &affichage; } open (CONF_FORM,"<$F_fic" ); while ($line=<CONF_FORM> ) { chomp($line); if ( ($line !~ /^$/) && ($line !~ /^\s+$/) && ($line !~ /^#/) && ($line =~ /^(.*)=================(.*)$/) ) { $C_FORM{"$1"}="$2"; } } close (CONF_FORM); &verifie_referer; if ($C_FORM{'REQUIS'} !~ /^$/) { &verifie_oblig; } $from = $Form{'email'}; $subject = $Form{'sujet'}; $name = $Form{'nom'}; $t_to = 0; if ($Form{'TO'}) { _AT_TO = split(/,/, $Form{'TO'}); } else { $t_to = 0; } &order_Form; if ($Form{'TO'}) { _AT_DEST = split(/\|/,$C_FORM{'DESTINATAIRES'}); foreach(@DEST) { ($pseud,$mail) = split(/,/, $_); foreach(@TO) { if ($_ eq $pseud) { $t_to++; push(@EMAILS, "$mail" ); } } } } if ($t_to == 0) { $aff = "<b>ERREUR DE CONFIGURATION</b><br>Il n'y a pas de champ 'TO' !"; &affichage; } if ($C_FORM{'CONFIRM'} && !$Form{'valid'}) { $aff .= $C_FORM{'CONFIRM_MESS'}.qq~\n<FORM METHOD="POST" ACTION="$CGI" ENCTYPE="multipart/form-data"> <TABLE cellspacing="0" cellpadding="4" border="0"> $aff_recap </TABLE> <INPUT TYPE="HIDDEN" NAME="valid" VALUE="1"> <BR> <INPUT TYPE="button" VALUE=" RETOUR " STYLE="$C_FORM{'CONFIRM_STYLE'}" OnClick="java script:history.back()"> <INPUT TYPE="SUBMIT" NAME="submit" VALUE=" VALIDER " STYLE="$C_FORM{'CONFIRM_STYLE'}"> </FORM> ~; &affichage; } else { # else 1 $i = 0; if ($C_FORM{'EXTENSIONS'}) { _AT_EXT_AUTORISE = split(/,/, $C_FORM{'EXTENSIONS'}); } foreach (keys %Form) { if ($_ =~ /^fichier/ && $Form{$_}) { if ($C_FORM{'EXTENSIONS'}) { foreach $ext(@EXT_AUTORISE) { if ($Form{$_} =~ /$ext$/i) { $ext_ok = 1; last; } } if ($ext_ok != 1) { $aff = qq~<b>Extension de fichier non autorisée !</b><BR><br> L'extension de la pièce jointe "$_" n'est pas autorisée !<br><br> <A HREF="java script:history.back()" CLASS="lien">RETOUR AU FORMULAIRE</A><BR> ~; &affichage; } } ©_du_fichier($Form{$_}); $out_file[$i] = $out_file; } } &sendmail; if (!$C_FORM{'REDIRECT'}) { $aff .= $C_FORM{'REDIRECT_MESS'}.qq~\n<BR><TABLE cellspacing="0" cellpadding="4" border="0"> $aff_recap </TABLE><BR> ~; &affichage; } else { print $qw->header(-LOCATION => $C_FORM{'REDIRECT_URL'}); exit; } } # fin else 1 } ## CLASSEMENT DANS L'ORDRE ## sub order_Form { if (!$C_FORM{'ORDRE_TYPE'}) { foreach (keys %Form) { if ($_ !~ /submit/i && $_ ne 'valid' && $Form{$_} ne '' && $Form{$_} !~ /^\s+$/) { $form_temp = $Form{"$_"}; $form_temp =~ s/\r\n/<BR>/g; $aff_recap .= qq~<TR><TD CLASS="texte" valign="top"><i>$_</i> :</TD><TD CLASS="texte" valign="top">$form_temp\n~ unless $_ =~ /^TO$|^PRIORITY$|^F$|^fichier/; if ($C_FORM{'CONFIRM'} && !$Form{'valid'}) { $aff_recap .= qq~<INPUT TYPE="HIDDEN" NAME="$_" VALUE="$Form{"$_"}">\n~ unless $_ =~ /^fichier/; if ($_ =~ /^fichier/) { $aff_recap .= qq~<TR><TD CLASS="texte" valign="top"><i>$_</i> (Veuillez entrer à nouveau le fichier):</TD><TD CLASS="texte" valign="top"><INPUT TYPE="file" NAME="$_" VALUE="$Form{"$_"}" STYLE="$C_FORM{'CONFIRM_STYLE'}">\n~; } } if (($C_FORM{'CONFIRM'} && $Form{'valid'}) || !$C_FORM{'CONFIRM'}) { $corps_mail .= qq~- $_ :\n$Form{"$_"}\n~ unless $_ =~ /^TO$|^PRIORITY$|^F$|^fichier/; } $aff_recap .= q~</TD></TR>~ unless $_ =~ /^TO$|^PRIORITY$|^F$/; } } } elsif ($C_FORM{'ORDRE_TYPE'} == 1) { foreach (sort keys %Form) { if ($_ !~ /submit/i && $_ ne 'valid' && $Form{$_} ne '' && $Form{$_} !~ /^\s+$/) { $form_temp = $Form{"$_"}; $form_temp =~ s/\r\n/<BR>/g; $aff_recap .= qq~<TR><TD CLASS="texte" valign="top"><i>$_</i> :</TD><TD CLASS="texte" valign="top">$form_temp\n~ unless $_ =~ /^TO$|^PRIORITY$|^F$|^fichier/; if ($C_FORM{'CONFIRM'} && !$Form{'valid'}) { $aff_recap .= qq~<INPUT TYPE="HIDDEN" NAME="$_" VALUE="$Form{"$_"}">\n~ unless $_ =~ /^fichier/; if ($_ =~ /^fichier/) { $aff_recap .= qq~<TR><TD CLASS="texte" valign="top"><i>$_</i> (Veuillez entrer à nouveau le fichier):</TD><TD CLASS="texte" valign="top"><INPUT TYPE="file" NAME="$_" VALUE="$Form{"$_"}" STYLE="$C_FORM{'CONFIRM_STYLE'}">\n~; } } if (($C_FORM{'CONFIRM'} && $Form{'valid'}) || !$C_FORM{'CONFIRM'}) { $corps_mail .= qq~- $_ :\n$Form{"$_"}\n~ unless $_ =~ /^TO$|^PRIORITY$|^F$|^fichier/; } $aff_recap .= q~</TD></TR>~ unless $_ =~ /^TO$|^PRIORITY$|^F$/; } } } # ici else { local(@order) = split(/\,/, $C_FORM{'ORDRE'}); foreach (@order) { if ($Form{$_} ne '') { $form_temp = $Form{"$_"}; $form_temp =~ s/\r\n/<BR>/g; $aff_recap .= qq~<TR><TD CLASS="texte" valign="top"><i>$_</i> :</TD><TD CLASS="texte" valign="top">\n$form_temp\n~; if ($C_FORM{'CONFIRM'} && !$Form{'valid'}) { $aff_recap .= qq~<INPUT TYPE="HIDDEN" NAME="$_" VALUE="$Form{"$_"}">\n~; } if (($C_FORM{'CONFIRM'} && $Form{'valid'}) || !$C_FORM{'CONFIRM'}) { $corps_mail .= qq~- $_ :\n$Form{"$_"}\n~; } $aff_recap .= q~</TD></TR>~; delete($Form{$_}); } } foreach (sort keys %Form) { if ($_ !~ /submit/i && $_ ne 'valid' && $Form{$_} ne '') { $form_temp = $Form{"$_"}; $form_temp =~ s/\r\n/<BR>/g; $aff_recap .= qq~<TR><TD CLASS="texte" valign="top"><i>$_</i> :</TD><TD CLASS="texte" valign="top">$form_temp\n~ unless $_ =~ /^TO$|^PRIORITY$|^F$|^fichier/; if ($C_FORM{'CONFIRM'} && !$Form{'valid'}) { $aff_recap .= qq~<INPUT TYPE="HIDDEN" NAME="$_" VALUE="$Form{"$_"}">\n~ unless $_ =~ /^fichier/; if ($_ =~ /^fichier/) { $aff_recap .= qq~<TR><TD CLASS="texte" valign="top"><i>$_</i> (Veuillez entrer à nouveau le fichier):</TD><TD CLASS="texte" valign="top"><INPUT TYPE="file" NAME="$_" VALUE="$Form{"$_"}">\n~; } } if (($C_FORM{'CONFIRM'} && $Form{'valid'}) || !$C_FORM{'CONFIRM'}) { $corps_mail .= qq~- $_ :\n$Form{"$_"}\n~ unless $_ =~ /^TO$|^PRIORITY$|^F$|^fichier/; } } $aff_recap .= q~</TD></TR>~ unless $_ =~ /^TO$|^PRIORITY$|^F$/; } } } ## ENVOI EMAIL ## sub sendmail { if (!$subject) { $subject = "Formulaire envoyé du web !"; } $mail = 'From: '.$from; if ($name !~ /^\s+$/ && $name ne '') { $mail .= ' ('.$name.')'; } if ($Form{'PRIORITY'} !~ /^1$|^3$|^5$/) { $Form{'PRIORITY'} = 3; } $to = join(',',@EMAILS); $mail .= "\n".'Reply-To: '.$from."\n".'To: '.$to."\n".'X-Mailer: P-FORM V5.0 PRO/http://www.perl-fr.com'."\n".'X-Priority: '.$Form{'PRIORITY'}."\n".'Subject: '.$subject."\n"; $date = &date(0); $mail .= 'Voici le résultat du formulaire envoyé du web du site '.$site_base.' le '.$date.' :'."\n\n".$corps_mail."\n"; if ($C_FORM{'INFOS'}) { $mail .= '-' x 70; $mail .= "\n".q~Informations complémentaires sur l'utilisateur :~."\n".'Ip : '.$ENV{'REMOTE_ADDR'}."\n"; if ($ENV{'REMOTE_HOST'}) { $mail .= 'Host : '.$ENV{'REMOTE_HOST'}."\n"; } $mail .= 'Langue : '.$ENV{'HTTP_ACCEPT_LANGUAGE'}."\n".'Systeme : '.$ENV{'HTTP_USER_AGENT'}."\n".'Page référente : '.$ENV{'HTTP_REFERER'}."\n"; $mail .= '-' x 70; $mail .= "\n"; } open(MAIL, "|$CONF{SENDMAIL} -t" ) || die "ne peut ouvrir $sendmail!\n"; print MAIL $mail; if ($i > 0) { foreach $i(1..$i) { if (-e $out_file[$i]) { $n_file = $out_file[$i]; $n_file =~ s/^.*[\/|\\|\:]//g; open(FILE, "uuencode $out_file[$i] $n_file|" ) or die; while(<FILE> ) { print MAIL; } close(FILE); } unlink("$out_file[$i]" ); } } close(MAIL); } ## VERIFICATION DES CHAMPS OBLIGATOIRES ## sub verifie_oblig { local(@oblig) = split (/\,/,$C_FORM{'REQUIS'}); local($err) = 0; local($aff_err); foreach(@oblig) { $_ =~ s/^\s//; $_ =~ s/\s$//; if ($_ eq 'email') { if (&verifie_email("$Form{email}" ) == 0) { $err++; $aff_err .= '- email<br>'."\n"; } } else { if (!$Form{"$_"} || $Form{"$_"} =~ /^\s+$/) { $err++; $aff_err .= '- '.$_.'<br>'."\n"; } } } if ($err > 0) { $aff = qq~<b>Erreur : CHAMPS OBLIGATOIRES !!</b><BR> Veuillez vérifier votre formulaire !<br> Les $err champ(s) obligatoire(s) suivants n'ont pas été remplis correctement :<br><br> $aff_err <BR><a href="java script:history.back()" class="lien"> Retour au formulaire !</a><BR> ~; &affichage; } } sub verifie_referer { local($trouv) = 0; if (!$ENV{'HTTP_REFERER'}) { goto FIN_VR; } _AT_DOMAINES = split(/,/, "$C_FORM{'DOMAINES'}" ); foreach(@DOMAINES) { if ($ENV{'HTTP_REFERER'} =~ /$_/i) { $trouv = 1; last; } } FIN_VR: if ($trouv == 0) { $aff = '<b>ERREUR !!<BR><BR>Le script n\'a pas été appelé d\'un site autorisé !!</b>'; &affichage; } } sub affichage { print "Content-type: text/html\n\n"; open(HAUT_HTML,"<$PFORM_DATAS_DIR/F_temp_h_$F.dat" ); while (<HAUT_HTML> ){ print $_; } close(HAUT_HTML); print $aff; open(BAS_HTML,"<$PFORM_DATAS_DIR/F_temp_b_$F.dat" ); while (<BAS_HTML> ){ print $_; } close(BAS_HTML); exit; } ############################### sub admin_enter { &style; &affiche_admin("<B>ADMINISTRATION</B>$badpass",qq|<TABLE BORDER="0" WIDTH="100%" ALIGN="CENTER" CELLPADDING="0" CELLSPACING="0"> <FORM METHOD="POST" ACTION="$CGI"><INPUT TYPE="HIDDEN" NAME="ACT" VALUE="ADMIN"> <TR><TD CLASS="texte_w" valign="top" align="center"><A HREF="http://www.perl-fr.com" target="_blank"><IMG SRC="http://vs6.hostfr.net/EXT/PForm/Pform.jpg" BORDER="0" ALIGN="absmiddle"></A></td><TD CLASS="texte_w">PASSWORD :<BR><INPUT TYPE="password" size="20" maxlength="20" name="pass" $STYLE> <BR><INPUT TYPE="submit" $STYLE VALUE=" ENTRER "></TD></TR></FORM></TABLE>|); } sub admin_menu { &pass_verif; &style; opendir (DIR, "$PFORM_DATAS_DIR" ); $nb_f = _AT_files = grep(/^F_\d{14}\.dat$/,readdir(DIR)); closedir(DIR); $sel = ''; if ($nb_f > 0) { foreach (@files) { if ($_ =~ /^F_(\d{14})\.dat$/) { $id = $1; } open (CONF_FIC,"<$PFORM_DATAS_DIR/$_" ); while ($line=<CONF_FIC> ) { chomp($line); if ( ($line !~ /^$/) && ($line !~ /^\s+$/) && ($line !~ /^#/) && ($line =~ /^(.*)=================(.*)$/) ) { if ($1 eq 'NAME') { $name = $2; } } } close(CONF_FIC); $opt_f .= qq|<OPTION VALUE="$id">$name</OPTION>\n|; } $sel = qq|\n<TR><TD CLASS="texte_w"><INPUT TYPE="RADIO" NAME="ACT" VALUE="admin_modif_form"> <SELECT NAME="Fm" $STYLE>\n$opt_f</OPTION>\n</td><TD CLASS="texte_w">Configuration du formulaire</TD><TD CLASS="texte_w"><A HREF="java script:alert('Modifiez la configuration du formulaire sélectionné ')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w"><INPUT TYPE="RADIO" NAME="ACT" VALUE="admin_sup_form"> <SELECT NAME="Fs" $STYLE>\n$opt_f</OPTION>\n</td><TD CLASS="texte_w">Supprimer le formulaire</TD><TD CLASS="texte_w"><A HREF="java script:alert('Supprimez le formulaire sélectionné \\n')">$IMG_POINT</A></td></TR> <TR><TD CLASS="texte_w"><INPUT TYPE="RADIO" NAME="ACT" VALUE="admin_aide_form"> <SELECT NAME="Fa" $STYLE>\n$opt_f</OPTION>\n</td><TD CLASS="texte_w">Créér un formulaire html</TD><TD CLASS="texte_w"><A HREF="java script:alert('Outil d\\'aide à la création de votre formulaire html ! \\n')">$IMG_POINT</A></td></TR>\n|; } &affiche_admin("<B>ADMINISTRATION</B>",qq|<TABLE BORDER="0" ALIGN="CENTER" CELLPADDING="2" CELLSPACING="0"> <FORM METHOD="POST" ACTION="$CGI"><INPUT TYPE="HIDDEN" NAME="pass" VALUE="$Form{pass}"> <TR><TD CLASS="texte_w"><INPUT TYPE="RADIO" NAME="ACT" VALUE="admin_config" checked></td><TD CLASS="texte_w">Configuration du script</TD><TD CLASS="texte_w"><A HREF="java script:alert('Modifiez la configuration principale du script \\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w"><INPUT TYPE="RADIO" NAME="ACT" VALUE="admin_new_form"></td><TD CLASS="texte_w">Nouveau formulaire</TD><TD CLASS="texte_w"><A HREF="java script:alert('Créez un nouveau formulaire \\n')">$IMG_POINT</A></TD></TR>$sel <TR><TD CLASS="texte_w"> </td><TD CLASS="texte"><INPUT TYPE="submit" $STYLE VALUE=" VALIDER "></TD><TD CLASS="texte_w"> </td></TR> </FORM></TABLE>|); } sub admin_aide_form { &pass_verif; &style; $Fa = $Form{'Fa'}; if ($Form{'i'}) { $i = $Form{'i'}; } else { $i = 0; } open (CONF_FORM,"<$PFORM_DATAS_DIR/F_$Fa.dat" ); while ($line=<CONF_FORM> ) { chomp($line); if ( ($line !~ /^$/) && ($line !~ /^\s+$/) && ($line !~ /^#/) && ($line =~ /^(.*)=================(.*)$/) ) { $C_FORM{"$1"}="$2"; } } close (CONF_FORM); if ($i >0) { foreach $i(1..$i) { if (!$Form{"nom_$i"}) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Veuillez remplir tous les champs obligatoires.<br><br> <A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } $hid .= qq~<INPUT TYPE="hidden" NAME="etiquette_$i" VALUE="$Form{"etiquette_$i"}"> <INPUT TYPE="hidden" NAME="nom_$i" VALUE="$Form{"nom_$i"}"> <INPUT TYPE="hidden" NAME="type_$i" VALUE="$Form{"type_$i"}"> <INPUT TYPE="hidden" NAME="value_$i" VALUE="$Form{"value_$i"}">~; if ($Form{"type_$i"} eq 'text' || $Form{"type_$i"} eq 'password') { if ($Form{"etiquette_$i"}) { $plus_form .= qq~$Form{"etiquette_$i"}<BR>\n~; } $plus_form .= qq~<INPUT TYPE="$Form{"type_$i"}" NAME="$Form{"nom_$i"}"~; if ($C_FORM{CONFIRM_STYLE}) { $plus_form .= qq~ STYLE="$C_FORM{CONFIRM_STYLE}"~; } if ($Form{"value_$i"}) { $plus_form .= qq~ VALUE="$Form{"value_$i"}"~; } $plus_form .= qq~><BR>\n~; } if ($Form{"type_$i"} eq 'select') { if (!$Form{"value_$i"}) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Veuillez remplir tous les champs obligatoires.<br><br> <A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } if ($Form{"etiquette_$i"}) { $plus_form .= qq~$Form{"etiquette_$i"}<BR>\n~; } $plus_form .= qq~<SELECT NAME="$Form{"nom_$i"}"~; if ($C_FORM{CONFIRM_STYLE}) { $plus_form .= qq~ STYLE="$C_FORM{CONFIRM_STYLE}"~; } $plus_form .= qq~>\n~; $n_tab = 'val'.$i; @$n_tab = split(/,/, $Form{"value_$i"}); foreach(@$n_tab) { $plus_form .= q~<OPTION>$_</OPTION>\n~; } $plus_form = '<BR>\n'; } if ($Form{"type_$i"} eq 'textarea') { if ($Form{"etiquette_$i"}) { $plus_form .= qq~$Form{"etiquette_$i"}<BR>\n~; } $plus_form .= qq~<TEXTAREA NAME="$Form{"nom_$i"}"~; if ($C_FORM{CONFIRM_STYLE}) { $plus_form .= qq~ STYLE="$C_FORM{CONFIRM_STYLE}"~; } $plus_form .= qq~>\n~; if ($Form{"value_$i"}) { $plus_form .= qq~$Form{"value_$i"}~; } $plus_form .= qq~\n</TEXTAREA><BR>\n~; } if ($Form{"type_$i"} =~ /^radio$|^checkbox$/) { if (!$Form{"value_$i"}) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Veuillez remplir tous les champs obligatoires.<br><br> <A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } $plus_form .= qq~<INPUT TYPE="$Form{"type_$i"}" NAME="$Form{"nom_$i"}" VALUE="$Form{"value_$i"}">~; if ($Form{"etiquette_$i"}) { $plus_form .= qq~ $Form{"etiquette_$i"}~; } $plus_form .= "<BR>\n"; } if ($Form{"type_$i"} eq 'hidden') { if (!$Form{"value_$i"}) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Veuillez remplir tous les champs obligatoires.<br><br> <A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } $plus_form .= qq~<INPUT TYPE="hidden" NAME="$Form{"nom_$i"}" VALUE="$Form{"value_$i"}">\n~; } if ($Form{"type_$i"} eq 'file') { if ($Form{"nom_$i"} !~ /fichier/) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Un champs fichier doit avoir le mot 'fichier' dans son nom.<br><br> <A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } if ($Form{"etiquette_$i"}) { $plus_form .= qq~$Form{"etiquette_$i"}<BR>\n~; } $plus_form .= qq~<INPUT TYPE="file" NAME="$Form{"nom_$i"}"~; if ($C_FORM{CONFIRM_STYLE}) { $plus_form .= qq~ STYLE="$C_FORM{CONFIRM_STYLE}"~; } $plus_form .= "><BR>\n"; } if ($Form{"type_$i"} eq 'submit') { if (!$Form{"value_$i"}) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Veuillez remplir tous les champs obligatoires.<br><br> <A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } if ($Form{"nom_$i"} !~ /submit/i) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Un champ image ou bouton de soummision doit avoir obligatoirement dans son nom le mot : submit !.<br><br>\n<A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } $plus_form .= qq~<INPUT TYPE="submit" NAME="submit" VALUE="$Form{"value_$i"}"~; if ($C_FORM{CONFIRM_STYLE}) { $plus_form .= qq~ STYLE="$C_FORM{CONFIRM_STYLE}"~; } $plus_form .= "><BR>\n"; } if ($Form{"type_$i"} eq 'reset') { if (!$Form{"value_$i"}) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Veuillez remplir tous les champs obligatoires.<br><br> <A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } $plus_form .= qq~<INPUT TYPE="reset" NAME="$Form{"nom_$i"}" VALUE="$Form{"value_$i"}"~; if ($C_FORM{CONFIRM_STYLE}) { $plus_form .= qq~ STYLE="$C_FORM{CONFIRM_STYLE}"~; } $plus_form .= "><BR>\n"; } if ($Form{"type_$i"} eq 'image') { if (!$Form{"value_$i"}) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Veuillez remplir tous les champs obligatoires.<br><br>\n<A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } if ($Form{"nom_$i"} !~ /submit/i) { &affiche_admin('<B>ADMINISTRATION</B>',qq|<b>Erreur</b> :<br>Un champ image ou bouton de soummision doit avoir obligatoirement dans son nom le mot : submit !.<br><br>\n<A HREF="java script:history.back()">Retour au formulaire</a><BR>\n|); } $plus_form .= qq~<INPUT TYPE="image" NAME="submit" SRC="$Form{"value_$i"}" BORDER="0"><BR>\n~; } } } $i++; $aff = qq|<b>Aide à la création d'un formulaire html pour '$C_FORM{NAME}'.</b><BR> <TABLE BORDER="0" ALIGN="CENTER" CELLPADDING="2" CELLSPACING="0"> <FORM METHOD="POST" ACTION="$CGI"><INPUT TYPE="HIDDEN" NAME="pass" VALUE="$Form{pass}"> <INPUT TYPE="HIDDEN" NAME="ACT" VALUE="admin_aide_form"><INPUT TYPE="HIDDEN" NAME="Fa" VALUE="$Fa"> <INPUT TYPE="HIDDEN" NAME="i" VALUE="$i"> $hid <TR><TD CLASS="texte_w">Etiquette :</td><TD CLASS="texte_w"><INPUT TYPE="text" NAME="etiquette_$i" $STYLE size="20"></TD><TD CLASS="texte_w"><A HREF="java script:alert('Etiquette :\\nTitre du champ.\\n\\nFACULTATIF\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w">Nom du champ :</td><TD CLASS="texte_w"><INPUT TYPE="text" NAME="nom_$i" $STYLE size="20"></TD><TD CLASS="texte_w"><A HREF="java script:alert('Le nom que portera le champ, utilisé par le script\\n\\nOBLIGATOIRE\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w">Type du champ :</td><TD CLASS="texte_w"><SELECT NAME="type_$i" $STYLE><OPTION VALUE="text">Champ de texte</OPTION><OPTION VALUE="password">Champ password</OPTION> <OPTION VALUE="textarea">Zone de texte</OPTION><OPTION VALUE="checkbox">Case à cocher</OPTION> <OPTION VALUE="radio">Bouton radio</OPTION><OPTION VALUE="SELECT">Liste / Menu</OPTION><OPTION VALUE="file">Champ de fichier</OPTION> <OPTION VALUE="hidden">Champ masqué</OPTION><OPTION VALUE="submit">Bouton de soumission</OPTION><OPTION VALUE="reset">Bouton reset</OPTION> <OPTION VALUE="image">Bouton image</OPTION> </SELECT></TD><TD CLASS="texte_w"><A HREF="java script:alert('Type de champ...')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w">Valeur par default :</td><TD CLASS="texte_w"><INPUT TYPE="text" NAME="value_$i" $STYLE size="20"></TD><TD CLASS="texte_w"><A HREF="java script:alert('Valeur par défault du champ\\n\\nOBLIGATOIRE pour les champs :\\n- bouton radio\\n- case à cocher\\n- champ caché\\n\\nDans le cas d\\'un champ de type Liste/Menu :\\nséparez les valeurs par une virgule !\\n\\nDans le cas d\\'un champ image, mettre l\\'adresse url ce celle-ci\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w"> </td><TD CLASS="texte"><INPUT TYPE="submit" $STYLE VALUE=" AJOUTER UN CHAMP "></TD><TD CLASS="texte_w"> </td></TR> </FORM></TABLE><BR><BR> Code html du formulaire à copier / coller dans le code source de votre page html :<BR> <TEXTAREA $STYLE cols="90" ROWS="10" readonly> <FORM METHOD="post" ACTION="$CGI" ENCTYPE="multipart/form-data"> <INPUT TYPE="HIDDEN" NAME="F" VALUE="$Fa"> $plus_form </FORM> </TEXTAREA><br><br> Attention, pour le bon fonctionnement du formulaire, les champs suivant doivent obligatoirement être présents :<BR> TO,submit,$C_FORM{'REQUIS'} |; $aff .= &bout_retour; &affiche_admin('<B>ADMINISTRATION</B>',$aff); } sub admin_sup_form { &pass_verif; &style; $aff = &bout_retour; open (FIC, "<$PFORM_DATAS_DIR/F_$Form{Fs}.dat" ); while ($line=<FIC> ) { chomp($line); if ( ($line !~ /^$/) && ($line !~ /^\s+$/) && ($line !~ /^#/) && ($line =~ /^(.*)=================(.*)$/) ) { if ($1 eq 'NAME') { $name = $2; } } } close(FIC); &affiche_admin('<B>ADMINISTRATION</B>',qq|<FORM METHOD="POST" ACTION="$CGI"><INPUT TYPE="HIDDEN" NAME="pass" VALUE="$Form{pass}"> <INPUT TYPE="HIDDEN" NAME="Fs" VALUE="$Form{Fs}"><INPUT TYPE="HIDDEN" NAME="ACT" VALUE="admin_sup_form_confirm"> <INPUT $STYLE TYPE="submit" VALUE="Confirmer la suppression du formulaire $name ?"> </FORM>$aff|); } sub admin_sup_form_confirm { &pass_verif; &style; $aff = &bout_retour; $Fs = $Form{'Fs'}; unlink("$PFORM_DATAS_DIR/F_$Fs.dat" ); unlink("$PFORM_DATAS_DIR/F_temp_b_$Fs.dat" ); unlink("$PFORM_DATAS_DIR/F_temp_h_$Fs.dat" ); &affiche_admin('<B>ADMINISTRATION</B>',qq|Le formulaire a été supprimé !<br>$aff|); } sub admin_new_form { &pass_verif; &style; $aff = &configuration_form(1); $aff .= &bout_retour; &affiche_admin("<B>ADMINISTRATION</B>",qq|<B>Créer un nouveau formulaire :</B><br>$aff|); } sub admin_modif_form { &pass_verif; &style; $Fm = $Form{'Fm'}; $aff = &configuration_form(2); $aff .= &bout_retour; &affiche_admin("<B>ADMINISTRATION</B>",qq|<B>Modifier le formulaire :</B><br>$aff|); } sub configuration_form { $sel_c1 = ''; $sel_c2 = ''; $sel_i1 = ''; $sel_i2 = ''; $sel_r1 = ''; $sel_r2 = ''; $sel_o1 = ''; $sel_o2 = ''; $sel_o3 = ''; $hid = ''; if ($_[0] == 1) { $Val_submit = 'CREER'; $Val_T_H = qq|<HTML>\n<HEAD>\n<STYLE type="text/css">\n.lien { FONT-SIZE: 9pt; COLOR: #3E4044; FONT-FAMILY: Arial; }\n.texte { FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Arial; }\n</STYLE>\n<TITLE>\nCONTACT\n</TITLE></HEAD>\n<BODY>\n|; $Val_T_B = "</BODY>\n</HTML>\n"; $C_FORM{'DOMAINES'} = $DOMAIN; $C_FORM{'CONFIRM_MESS'} = qq~<b>Confirmation !</b><BR>\nPour valider le formulaire, merci de confirmer les informations suivantes :~; $C_FORM{'CONFIRM_STYLE'} = 'FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 8pt; BACKGROUND-COLOR: #EAB522'; $C_FORM{'REDIRECT_URL'} = 'http://'; $C_FORM{'REDIRECT_MESS'} = "<b>Merci !</b><BR> <i>Votre message a bien été envoyé.</i><br>Nous vous répondrons dans les plus brefs délais.<BR>Voici les informations que vous nous avez soumises :"; } if ($_[0] == 2) { $Val_submit = 'MODIFIER'; open(FIC_T_H, "<$PFORM_DATAS_DIR/F_temp_h_$Fm.dat" ); while (<FIC_T_H> ) { $Val_T_H .= $_; } close(FIC_T_H); open(FIC_T_B, "<$PFORM_DATAS_DIR/F_temp_b_$Fm.dat" ); while (<FIC_T_B> ) { $Val_T_B .= $_; } close(FIC_T_; open (CONF_FORM,"<$PFORM_DATAS_DIR/F_$Fm.dat" ); while ($line=<CONF_FORM> ) { chomp($line); if ( ($line !~ /^$/) && ($line !~ /^\s+$/) && ($line !~ /^#/) && ($line =~ /^(.*)=================(.*)$/) ) { $C_FORM{"$1"}="$2"; } } close (CONF_FORM); $C_FORM{'DOMAINES'} =~ s/,/\n/g; $C_FORM{'DESTINATAIRES'} =~ s/\|/\n/g; if ($C_FORM{'CONFIRM'} == 1) { $sel_c1 = ' selected'; } else { $sel_c2 = ' selected'; } if ($C_FORM{'INFOS'} == 1) { $sel_i1 = ' selected'; } else { $sel_i2 = ' selected'; } if ($C_FORM{'REDIRECT'} == 1) { $sel_r1 = ' selected'; } else { $sel_r2 = ' selected'; } if ($C_FORM{'ORDRE_TYPE'} == 1) { $sel_o2 = ' selected'; } elsif ($C_FORM{'ORDRE_TYPE'} == 2) { $sel_o3 = ' selected'; } else { $sel_o1 = ' selected'; } $hid = qq~<INPUT TYPE="HIDDEN" NAME="Fm" VALUE="$Fm">~; } return<<FORM; <br><TABLE WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="2" CELLSPACING="0"> <FORM METHOD="POST" ACTION="$CGI"><INPUT TYPE="HIDDEN" NAME="pass" VALUE="$Form{pass}"><INPUT TYPE="HIDDEN" NAME="ACT" VALUE="creer_new_form"> $hid <TR><TD CLASS="texte" valign="top">Configuration :</td><TD CLASS="texte_w" valign="top"> </TD><TD CLASS="texte_w" valign="top"> </TD></TR> <TR><TD CLASS="texte_w" valign="top">Nom du formulaire :</td><TD CLASS="texte_w" valign="top"><INPUT TYPE="text" size="25" maxlength="25" name="NAME" $STYLE VALUE="$C_FORM{NAME}"></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Nom du formulaire :\\nIl permettra de vous y retrouver parmi les différents formulaires\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w" valign="top">Noms de domaine autorisés à utiliser ce formulaire :</td><TD CLASS="texte_w" valign="top"><TEXTAREA $STYLE NAME="DOMAINES" COLS="35" ROWS="4">$C_FORM{DOMAINES}\n</TEXTAREA></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Les noms de domaine qui pourront appeler\\nle script pour ce formulaire de leur site\\n\\nAttention : 1 par ligne !\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w" valign="top">Pseudos et emails des destinataires de ce formulaire :</td><TD CLASS="texte_w" valign="top"><TEXTAREA $STYLE NAME="DESTINATAIRES" COLS="35" ROWS="4">$C_FORM{DESTINATAIRES}</TEXTAREA></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Mettre un pseudo et un email par ligne, séparé par une virgule\\n\\nexemple :\\nToto,toto\@toto.com\\nTiti,titi\@titi.org\\n\\nCeci permet de ne pas avoir d\\'email visible dans le code source de vos pages\\n\\nSi vous mettez plusieurs destinataires vous pourrez soit :\\n- faire choisir au visiteur à qui écrire\\n- soit mettre les pseudos dans un champ caché séparé par une virgule\\npour que le résultat du formulaire soit envoyé à tous en même temps\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte" valign="top">Option 1 : confirmation :</td><TD CLASS="texte_w" valign="top"> </TD><TD CLASS="texte_w" valign="top"> </TD></TR> <TR><TD CLASS="texte_w" valign="top">Demander une confirmation avant validation du formulaire ?</td><TD CLASS="texte_w" valign="top"><SELECT $STYLE NAME="CONFIRM"><OPTION VALUE="1"$sel_c1>OUI</OPTION><OPTION VALUE="0"$sel_c2>NON</OPTION></SELECT></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Avant de valider le formulaire, l\\'utilisateur\\ndevra relire ce qu\\'il a écrit avant de valider\\n\\nATTENTION : Dans le cas de champs de type \\'fichier\\', l\\'utilisateur sera invité, dans ce cas, à rechercher à nouveau les fichiers à envoyer !\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w" valign="top">Si oui, message sur la page de confirmation :</td><TD CLASS="texte_w" valign="top"><TEXTAREA $STYLE NAME="CONFIRM_MESS" COLS="35" ROWS="4">$C_FORM{CONFIRM_MESS}</TEXTAREA></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Message que l\\'utilisateur verra sur la page de confirmation\\nau dessus des informations à valider\\n\\nVous pouvez utiliser du code html !\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w" valign="top">Si oui, style du bouton de soumission :</td><TD CLASS="texte_w" valign="top"><INPUT TYPE="text" $STYLE NAME="CONFIRM_STYLE" SIZE="30" MAXLENGTH="255" VALUE="$C_FORM{CONFIRM_STYLE}"></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Bouton de soumission :\\npolice de caractère,couleur,taille de la police, couleur de fond .ect... ')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte" valign="top">Option 2 : informations sur l'utilisateur :</td><TD CLASS="texte_w" valign="top"> </TD><TD CLASS="texte_w" valign="top"> </TD></TR> <TR><TD CLASS="texte_w" valign="top">Recevoir des informations complémentaires sur l'utilisateur ?</td><TD CLASS="texte_w" valign="top"><SELECT $STYLE NAME="INFOS"><OPTION VALUE="1"$sel_i1>OUI</OPTION><OPTION VALUE="0"$sel_i2>NON</OPTION></SELECT></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Informations complémentaires sur l\\'utilisateur\\ndans l\\'email recu :\\n\\n- adresse IP\\n- nom d\\'hote\\n- systeme d\\'exploitation\\n- langue\\n- page référente\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte" valign="top">Option 3 : après validation du formulaire :</td><TD CLASS="texte_w" valign="top"> </TD><TD CLASS="texte_w" valign="top"> </TD></TR> <TR><TD CLASS="texte_w" valign="top">Utiliser une page de redirection après envoi ?</td><TD CLASS="texte_w" valign="top"><SELECT $STYLE NAME="REDIRECT"><OPTION VALUE="1"$sel_r1>OUI</OPTION><OPTION VALUE="0"$sel_r2>NON</OPTION></SELECT></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Si oui :\\n après envoi, l\\'utilisateur sera redirigé vers une page de votre choix.\\n\\nSi non :\\nl\\'utilisateur verra alors un message que vous déterminez\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w" valign="top">Si oui, url de redirection :</td><TD CLASS="texte_w" valign="top"><INPUT TYPE="text" size="30" maxlength="255" name="REDIRECT_URL" $STYLE VALUE="$C_FORM{REDIRECT_URL}"></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Url de redirection après validation du formulaire si vous utilisez cette option.\\n\\nL\\'url doit commencer par : http://\n')">$IMG_POINT< [...] lt;/TR> <TR><TD CLASS="texte_w" valign="top">Si non, message de remerciement après envoi :</td><TD CLASS="texte_w" valign="top"><TEXTAREA $STYLE NAME="REDIRECT_MESS" COLS="35" ROWS="4">$C_FORM{REDIRECT_MESS}</TEXTAREA></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Message que l\\'utilisateur verra après envoi du formulaire\\n\\nVous pouvez utiliser du code html !\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte" valign="top">Champs obligatoires :</td><TD CLASS="texte_w" valign="top"> </TD><TD CLASS="texte_w" valign="top"> </TD></TR> <TR><TD CLASS="texte_w" valign="top">Champs obligatoires :</td><TD CLASS="texte_w" valign="top"><INPUT TYPE="text" size="30" maxlength="255" name="REQUIS" $STYLE name="REQUIS" VALUE="$C_FORM{REQUIS}"></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Ces champs devront obligatoirement être remplis par le visiteur.\\n\\nSéparez chaque nom de champ par une virgule, exemple :\\n\\nemail,nom,message\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte" valign="top">Ordre des champs :</td><TD CLASS="texte_w" valign="top"> </TD><TD CLASS="texte_w" valign="top"> </TD></TR> <TR><TD CLASS="texte_w" valign="top">Choix de l'ordre des champs :</td><TD CLASS="texte_w" valign="top"><SELECT name="ORDRE_TYPE" $STYLE><OPTION VALUE="0"$sel_o1>DESORDRE</OPTION><OPTION VALUE="1"$sel_o2>ORDRE ALPHABETIQUE</OPTION><OPTION VALUE="2"$sel_o3>ORDRE AU CHOIX</OPTION></SELECT></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Ordre dans lequel les champs seront recus :\\n\\n- désordre : pas d\\'ordre préci.\\n- alphabétique : les champs seront envoyés dans l\\'ordre alphabétique en fonction leur noms.\\n- Au choix : vous définissez l\\'ordre d\\'envoi.\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w" valign="top">Si ordre 'AU CHOIX', nom des champs :</td><TD CLASS="texte_w" valign="top"><INPUT TYPE="text" size="30" maxlength="255" name="ORDRE" $STYLE VALUE="$C_FORM{ORDRE}"></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Les champs seront envoyés dans l\\'ordre que vous spécifiez.\\n\\nSéparez chaque nom de champ par une virgule, exemple :\\n\\nsujet,nom,email,message\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte" valign="top">Fichiers joints :</td><TD CLASS="texte_w" valign="top"> </TD><TD CLASS="texte_w" valign="top"> </TD></TR> <TR><TD CLASS="texte_w" valign="top">Pièces jointes autorisées :</td><TD CLASS="texte_w" valign="top"><INPUT TYPE="text" size="30" maxlength="255" name="EXTENSIONS" $STYLE VALUE="$C_FORM{EXTENSIONS}"></TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('Uniquement si votre formulaire donne la possibilité d\\'envoyer un ou plusieurs fichiers joints.\\n\\nDans ce cas :\\n\\n- Laissez vide si vous ne souhaitez pas limiter les extensions de fichier.\\n\\n- Entrez les extensions de fichier autorisées, séparées par une virgule et sans point\\nsi vous souhaitez n\\'autoriser que certains types de fichiers.\\nEx : jpg,jpeg,gif,bmp,png,mp3,txt\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte" valign="top">Affichage :</td><TD CLASS="texte_w" valign="top"> </TD><TD CLASS="texte_w" valign="top"><A HREF="java script:alert('- Créez une page html\\n- Coupez son code html en 2 parties\\n- Entre ces 2 parties s\\'afficheront les messages générés par le script \\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w" valign="top" colspan="3">Code html de haut de page :<BR> <TEXTAREA $STYLE NAME="HTML_TEMP_HAUT" COLS="90" ROWS="12"> $Val_T_H </TEXTAREA><BR> <BR><font color="#666666"><i>-= ici s'afficheront les messages =-</i></FONT><BR><BR> Code html de bas de page :<BR> <TEXTAREA $STYLE NAME="HTML_TEMP_BAS" COLS="90" ROWS="12"> $Val_T_B </TEXTAREA><BR> </td></TR> <TR><TD CLASS="texte_w"> </td><TD CLASS="texte"><INPUT TYPE="submit" $STYLE VALUE="-= $Val_submit LE FORMULAIRE =-"></TD><TD CLASS="texte_w"> </td></TR> </FORM></TABLE> FORM } sub creer_new_form { &pass_verif; &style; $err = 0; $Fm = $Form{'Fm'}; if (!$Form{'NAME'} || $Form{'NAME'} =~ /^\s+$/) { $err++; $aff_err = "- NOM DU FORMULAIRE<br>\n"; } if (!$Form{'DOMAINES'} || $Form{'DOMAINES'} =~ /^\s+$/) { $err++; $aff_err .= "- Noms de domaines autorisés<br>\n"; } if (!$Form{'DESTINATAIRES'} || $Form{'DESTINATAIRES'} =~ /^\s+$/) { $err++; $aff_err .= "- Pseudos, Emails<br>\n"; } if ($Form{'CONFIRM'} && ($Form{'CONFIRM_MESS'} =~ /^\s+$/ || !$Form{'CONFIRM_MESS'})) { $err++; $aff_err .= "- Message de confirmation<br>\n"; } if ($Form{'REDIRECT'} && $Form{'REDIRECT_URL'} !~ /http:\/\/\S+?\.\S+/) { $err++; $aff_err .= "- Url de redirection<br>\n"; } if (!$Form{'REDIRECT'} && ($Form{'REDIRECT_MESS'} =~ /^\s+$/ || !$Form{'REDIRECT_MESS'})) { $err++; $aff_err .= "- Message après envoi<br>\n"; } if (!$Form{'HTML_TEMP_HAUT'} || $Form{'HTML_TEMP_HAUT'} =~ /^\s+$/) { $err++; $aff_err = "- code html du haut de page<br>\n"; } if (!$Form{'HTML_TEMP_BAS'} || $Form{'HTML_TEMP_BAS'} =~ /^\s+$/) { $err++; $aff_err = "- code html du bas de page<br>\n"; } if ($Form{'ORDRE_TYPE'} == 2 && ($Form{'ORDRE'} =~ /^\s+$/ || !$Form{'ORDRE'})) { $err++; $aff_err .= "- ordre des champs<br>\n"; } _AT_DESTINATAIRES = split(/\r\n/, $Form{'DESTINATAIRES'}); $Form{'DESTINATAIRES'} = join('|',@DESTINATAIRES); _AT_DEST = split(/\|/,$Form{'DESTINATAIRES'}); foreach (@DEST) { ($pseud,$mail) = split(/,/, $_); if (!&verifie_email($mail)) { $err++; $aff_err .= "- emails : mauvais format<br>\n"; last; } push(@EMAILS, "$pseud" ); } if ($err != 0) { &affiche_admin('ERREUR !',&bad_form); } $DEST = join(',', _AT_EMAILS); _AT_DOMAINES = split(/\r\n/, $Form{'DOMAINES'}); $Form{'DOMAINES'} = join(',',@DOMAINES); if (!$Fm) { $num = &date(1); } else { $num = $Fm; } open(N_FORM, ">$PFORM_DATAS_DIR/F_$num.dat" ); print N_FORM<<CONF_FORM; NAME=================$Form{'NAME'} DOMAINES=================$Form{'DOMAINES'} DESTINATAIRES=================$Form{'DESTINATAIRES'} CONFIRM=================$Form{'CONFIRM'} CONF_FORM if ($Form{'CONFIRM'} == 1) { $Form{'CONFIRM_MESS'} =~ s/\r\n//g; print N_FORM qq|CONFIRM_MESS=================$Form{'CONFIRM_MESS'}\nCONFIRM_STYLE=================$Form{'CONFIRM_STYLE'}\n|; } print N_FORM qq|INFOS=================$Form{'INFOS'}\nREDIRECT=================$Form{'REDIRECT'}\n|; if ($Form{'REDIRECT'} == 1) { print N_FORM qq|REDIRECT_URL=================$Form{'REDIRECT_URL'}\n|; } if ($Form{'REDIRECT'} == 0) { $Form{'REDIRECT_MESS'} =~ s/\r\n//g; print N_FORM qq|REDIRECT_MESS=================$Form{'REDIRECT_MESS'}\n|; } print N_FORM qq|REQUIS=================$Form{'REQUIS'}\nORDRE_TYPE=================$Form{'ORDRE_TYPE'}\n|; if ($Form{'ORDRE_TYPE'} == 2) { print N_FORM qq|ORDRE=================$Form{'ORDRE'}\n|; } if ($Form{'EXTENSIONS'}) { print N_FORM qq|EXTENSIONS=================$Form{'EXTENSIONS'}\n|; } close(N_FORM); eval { chmod(0777,"$PFORM_DATAS_DIR/F_$num.dat" ); }; open(N_FORM_th, ">$PFORM_DATAS_DIR/F_temp_h_$num.dat" ); print N_FORM_th $Form{'HTML_TEMP_HAUT'}; close(N_FORM_th); eval { chmod(0777,"$PFORM_DATAS_DIR/F_temp_h_$num.dat" ); }; open(N_FORM_tb, ">$PFORM_DATAS_DIR/F_temp_b_$num.dat" ); print N_FORM_tb $Form{'HTML_TEMP_BAS'}; close(N_FORM_tb); eval { chmod(0777,"$PFORM_DATAS_DIR/F_temp_b_$num.dat" ); }; $aff = &bout_retour; $pas_oubli = ''; if ($Form{'REQUIS'}) { $pas_oubli = qq~<BR>N'oubliez pas que les champs suivant doivent être présent dans votre formulaire :<br><b>$Form{'REQUIS'}</b><BR>~; } &affiche_admin("<B>ADMINISTRATION</B>",qq|Le formulaire "<i>$Form{'NAME'}</i>" a été créé ou modifié !<br><br>Il porte le numéro <b>$num</b>.<br><br> Voici le code html d'entête de votre formulaire :<br> <TEXTAREA $STYLE COLS="90" ROWS="10"> <FORM METHOD="post" ACTION="$CGI" ENCTYPE="multipart/form-data"> <INPUT TYPE="HIDDEN" NAME="F" VALUE="$num"> <INPUT TYPE="HIDDEN" NAME="TO" VALUE="$DEST"> ICI LE RESTE DU CODE DE VOTRE FORMULAIRE </FORM> </TEXTAREA> <BR>$pas_oubli $aff|); } sub pass_verif { if ($Form{'pass'} ne $CONF{'PASSWORD'}) { $badpass = q| : <B><font color="#FF0000">password incorrect !</font></B>|; &admin_enter; } } sub form_config { &style; if ($CONF{'INSTALL'} != 1) { $Val_act = 'INSTALL'; $hid = ''; } else { $Val_act = 'modif_conf'; $hid = qq~<INPUT TYPE="HIDDEN" NAME="pass" VALUE="$Form{pass}">~; } _AT_sendm = ('sendmail','/usr/lib/sendmail','/usr/bin/sendmail','/bin/sendmail','/usr/sbin/sendmail','/usr/local/bin/sendmail','/usr/local/lib/sendmail'); foreach $s_mail(@sendm) { if (($s_mail ne '') && (-e "$s_mail" ) && (-x "$s_mail" )) { $path_sendmail .= $s_mail.'\n\n'; } } if (!$path_sendmail) { $path_sendmail = 'AUCUN !!\n\nRenseignez vous auprès de votre hébergeur !\n'; } return<<FORM_CONFIG; <TABLE WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="0" CELLSPACING="0"> <FORM METHOD="POST" ACTION="$CGI"> <INPUT TYPE="HIDDEN" NAME="ACT" VALUE="$Val_act">$hid <TR><TD CLASS="texte_w">PASSWORD :</td><TD CLASS="texte_w"><INPUT TYPE="password" size="20" maxlength="20" name="PASSWORD" $STYLE VALUE="$CONF{PASSWORD}"></TD><TD CLASS="texte_w"><A HREF="java script:alert('Votre mot de passe pour la section d\\'administration.\\n\\n20 caractères maximum !\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w">PASSWORD (confirmation) :</td><TD CLASS="texte_w"><INPUT TYPE="password" size="20" maxlength="20" name="PASSWORD2" $STYLE VALUE="$CONF{PASSWORD}"></TD><TD CLASS="texte_w"><A HREF="java script:alert('Entrez à nouveau votre mot de passe.\\n\\n20 caractères maximum !\\n')">$IMG_POINT</A></TD></TR> <TR><TD CLASS="texte_w">Nom de domaine :</td><TD CLASS="texte_w"><INPUT TYPE="text" size="30" maxlength="255" name="DOMAIN" $STYLE VALUE="$DOMAIN"></TD><TD CLASS="texte_w"><A HREF="java script:alert('Votre nom de domaine\\n avec ou sans www.')">$IMG_POINT</A&g [...] lt;/TR> <TR><TD CLASS="texte_w">Chemin vers 'sendmail' :</td><TD CLASS="texte_w"><INPUT TYPE="text" size="30" maxlength="150" name="SENDMAIL" $STYLE VALUE="$CONF{SENDMAIL}"></TD><TD CLASS="texte_w"><A HREF="java script:alert('SENDMAIL\\n\\nprogramme serveur mail\\n\\nChemin\\(s\\) détecté\\(s\\) : \\n\\n$path_sendmail')">$IMG_POINT</A></td></TR> <TR><TD CLASS="texte_w">Taille maximum des fichiers uploadés :</td><TD CLASS="texte_w"><INPUT TYPE="text" size="10" maxlength="10" name="MAX_UPLOAD" $STYLE VALUE="$CONF{MAX_UPLOAD}"> Ko</TD><TD CLASS="texte_w"><A HREF="java script:alert('Il s\\'agit de la taille maximale que font l\\'ensemble des pièces jointes envoyé en même temps\\n\\nTaille approximative en Ko\\n')">$IMG_POINT</A></td></TR> <TR><TD CLASS="texte_w"> </td><TD CLASS="texte"><INPUT TYPE="submit" $STYLE VALUE=" VALIDER "></TD><TD CLASS="texte_w"> </td></TR> </FORM></TABLE> FORM_CONFIG } sub admin_config { &pass_verif; &style; $aff = q~Configuration principale du script :<BR><BR>~; $aff .= &form_config; $aff .= &bout_retour; &affiche_admin('<B>ADMINISTRATION</B>',$aff); } sub admin_modif_conf { &style; &pass_verif; &modif_config; $aff = 'La configuration du script a été modifié.'; $Form{'pass'} = $CONF{'PASSWORD'}; $aff .= &bout_retour; &affiche_admin('<B>ADMINISTRATION</B>',$aff); } sub modif_config { $err = 0; if (!$Form{'PASSWORD'} || $Form{'PASSWORD'} =~ /^\s+$/) { $err++; $aff_err = "- PASSWORD<br>\n"; } if (!$Form{'PASSWORD2'} || $Form{'PASSWORD2'} =~ /^\s+$/) { $err++; $aff_err .= "- PASSWORD (confirmation)<br>\n"; } if ($Form{'PASSWORD2'} ne $Form{'PASSWORD'}) { $err++; $aff_err .= "- password différent de password (confirmation)<br>\n"; } if ($Form{'DOMAIN'} !~ /$ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'}/i || $Form{'DOMAIN'} =~ /^http/) { $err++; $aff_err .= "- Nom de DOMAINE<br>\n"; } if (!$Form{'SENDMAIL'} || $Form{'SENDMAIL'} =~ /^\s+$/ || !-e $Form{'SENDMAIL'} || !-x $Form{'SENDMAIL'}) { $err++; $aff_err .= "- Chemin du programme SENDMAIL<br>\n"; } if ($Form{'MAX_UPLOAD'} !~ /^\d+$/) { $err++; $aff_err .= "- Taille maximale de l'ensemble des fichiers joints.<br>\n"; } if ($err != 0) { &style; &affiche_admin('ERREUR !',&bad_form); } &modif_conf('PASSWORD' => $Form{'PASSWORD'},'DOMAIN' => $Form{'DOMAIN'},'SENDMAIL' => $Form{'SENDMAIL'},'MAX_UPLOAD' => $Form{'MAX_UPLOAD'}); } sub bout_retour { return qq|<FORM METHOD="POST" ACTION="$CGI"><INPUT TYPE="HIDDEN" NAME="ACT" VALUE="ADMIN"><INPUT TYPE="HIDDEN" NAME="pass" VALUE="$Form{pass}"><INPUT TYPE="submit" $STYLE VALUE=" RETOUR AU MENU "></FORM>\n|; } sub bad_form { return qq|Votre formulaire comporte des erreurs, veuillez vérifier les champs suivants :<br><br>$aff_err<br><br><A HREF="java script:history.back()" CLASS="texte">$IMG_BACK Retour au formulaire</A><BR>\n|; } sub style { $STYLE = qq|STYLE="FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 8pt; BACKGROUND-COLOR: #EAB522"|; $IMG_POINT = qq|<IMG SRC="http://vs6.hostfr.net/EXT/PForm/point_i.gif" BORDER="0" ALIGN="absmiddle">|; $IMG_BACK = qq|<IMG SRC="http://vs6.hostfr.net/EXT/PForm/back.gif" BORDER="0" ALIGN="absmiddle">|; } sub form_install { if (!-d "$PFORM_DATAS_DIR" ) { &affiche_admin('<b>Installation : ERREUR !</b>',"Le répertoire <i>$PFORM_DATAS_DIR</i> n'est pas présent !<br>Veuillez le créer avant l'installation du script !" ); } if (!-w "$PFORM_DATAS_DIR" ) { &affiche_admin('<b>Installation : ERREUR !</b>',"Le répertoire <i>$PFORM_DATAS_DIR</i> doit être en CHMOD 777 !" ); } $aff = "Pour finir l'installation du script, veuillez remplir le formulaire suivant :<br><br>\n"; $aff .= &form_config; &affiche_admin('<b>INSTALLATION</b>',"$aff" ); } sub install { &make_fic("$PFORM_DATAS_DIR/\.htaccess","<Limit GET>\norder deny,allow\ndeny from all\n</Limit>" ); &make_fic("$PFORM_DATAS_DIR/CONFIG\.dat","INSTALL=================0\n" ); eval { chmod(0777,"$PFORM_DATAS_DIR/CONFIG\.dat" ); }; $CONF{'INSTALL'} = 1; &modif_config; &affiche_admin('<b>INSTALLATION : FIN !</b>',qq|L'installation du script est maintenant terminée !<BR> Pour commencer à créer vos formulaires,<br>rendez vous à l'adresse du script pour entrer dans votre section d'administration :<BR><BR> <A HREF="$CGI" CLASS="texte">$CGI</A><BR>|); } sub copy_du_fichier { my $file = $_[0]; if ($file =~ /([^\/\\]+)$/) { $Filename = $1; $Filename =~ s/^\.+//; $File_Handle = $file; } $Filename =~ s/ /_/g; $out_file = $PFORM_DATAS_DIR.'/'.$Filename; if (!open(OUTFILE, ">$out_file" )) { $aff = "<b>PROBLEME DE CHMOD OU DE CHEMIN DU REPERTOIRE : $PFORM_DATAS_DIR !</b>"; &affichage; } undef $BytesRead; undef $Buffer; while ($Bytes = read($File_Handle,$Buffer,1024)) { $BytesRead += $Bytes; print OUTFILE $Buffer; } close($File_Handle); close(OUTFILE); eval { chmod(0777, "$out_file" ); }; $i++; } sub affiche_admin { print "Content-type: text/html\n\n"; print<<EOF; <html> <head> <title>P-Form v5.0 Gold - Administration !</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> A:link { FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } A:visited { FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } A:hover { FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: underline; color: #FFFFFF } .titre { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #FFFFFF; FONT-SIZE: 12pt; FONT-WEIGHT: bold } .lien { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #CCCCCC; FONT-SIZE: 7pt; } .texte_pt { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #FFFFFF; FONT-SIZE: 7pt; } .texte { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 10pt; } .texte_w { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #FFFFFF; FONT-SIZE: 10pt; } </style> </head> <body bgcolor="#FFFFFF" text="#000000"> <br> <table width="650" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#023A69" bgColor="#BFC9D3"> <tr> <td align="center" bgcolor="#023A69" class="titre">Section d'administration de P-Form v5.0 Gold</td> </tr> <tr> <td><br> <table width="75%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#EAB522"> <tr> <td align="center" class="texte"> $_[0] </td> </tr> </table> <hr align="center" width="75%" size="1" noshade color="#023A69"> <table width="75%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td class="texte_w"> $_[1] </td> </tr> </table> <hr align="center" width="75%" size="1" noshade color="#023A69"> <br> </td> </tr> <tr> <td align="center" bgcolor="#023A69" class="texte_pt">P-Form 5.0 gold <a class="lien" href="http://www.perl-fr.com" target="_blank">© Perl-fr.com</a></td> </tr> </table> </body> </html> EOF exit; } sub make_fic { open (FIC_CREATE, ">$_[0]" ) || &affiche_admin("<b>Impossible de créer le fichier $_[0] !</b>" ); print FIC_CREATE "$_[1]"; close (FIC_CREATE); } sub recup_conf { open (CONF_FIC,"$PFORM_DATAS_DIR/CONFIG.dat" ) or goto NOHERE; while ($line=<CONF_FIC> ) { chomp($line); if ( ($line !~ /^$/) && ($line !~ /^\s+$/) && ($line !~ /^#/) && ($line =~ /^(.*)=================(.*)$/) ) { $CONF{"$1"}="$2"; } } close (CONF_FIC); NOHERE: } sub modif_conf { my (%NEW_CONF) = _AT__; foreach (keys (%NEW_CONF)) { $CONF{"$_"} = $NEW_CONF{"$_"}; } open (CONF_W,">$PFORM_DATAS_DIR/CONFIG.dat" ); foreach (sort keys(%CONF)) { print CONF_W ($_."=================".$CONF{"$_"}."\n" ) unless $CONF{"$_"} eq ''; } close (CONF_W); } sub date { local($sec,$min,$heure,$jour,$mois,$an,$date,$numero); ($sec,$min,$heure,$jour,$mois,$an) = localtime(time); $mois++; $an+=1900; if ($jour < 10) {$jour='0'.$jour;} if ($mois < 10) {$mois='0'.$mois;} if ($min < 10) {$min='0'.$min;} if ($heure < 10) {$heure='0'.$heure;} if ($sec < 10) {$sec='0'.$sec;} $date = $jour.'/'.$mois.'/'.$an.' à '.$heure.'h'.$min; $numero = $an.$mois.$jour.$heure.$min.$sec; if ($_[0] == 1) { return $numero; } else { return $date; } } sub verifie_email { local ($email)=@_; $email=~ s/\.\@/\@/; if ($email =~ /^$/) { return(0);} if ($email =~ /^\s+$/) { return(0);} if ($email!~ /\@/) { return(0);} if (length $email > 255) { return(0); } if ($email=~ /[\,|\s|\;]/) {return (0);} if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/ || ($email !~ /^.+\@localhost$/ && $email !~ /^.+\@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) { return(0); }else{ return(1); } }
jcaron Posté 24 Septembre 2008 Posté 24 Septembre 2008 Je pense que ton copier-coller a perdu non seulement les tabs mais aussi certains retours-chariots, donc difficile de trouver la ligne 235 à coup sûr, mais j'ai tendance à penser que c'est là: open(FILE, "uuencode $out_file[$i] $n_file|" ) or die; Bref, il ne doit pas trouver uuencode. Tu peux remplacer le die par die "pas pu lancer uuencode: $!" qui te donnera un message d'erreur plus explicite. Ceci dit c'est un peu vielliot uuencode, MIME serait quand même nettement plus adapté. Jacques.
remytiti Posté 24 Septembre 2008 Auteur Posté 24 Septembre 2008 (modifié) Merci pour ta reponse et oui effectivement c'est bien cette ligne je n'y connais pas grand chose mais comment je pourais utiliser mime dans ce script ? merci sinon je vien de chager diie et maintenant dans les logs j'ai ce message d'erreur pas pu lancer uuencode: No such file or directory at /web/sites/vhbu3/1/205/105681/public/www/cgi-bin/PForm.pl line 235. Modifié 24 Septembre 2008 par remytiti
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant