gilou Modérateur Modosaurus Rex | Bon, mettons déja cela en forme avec un numéro de ligne:
Code :
- #!/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'}) { @TO = split(/,/, $Form{'TO'}); } else { $t_to = 0; }
- &order_Form;
- if ($Form{'TO'}) {
- @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="javascript: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'}) { @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="javascript: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="javascript:history.back()" class="lien"> Retour au formulaire !</a><BR>
- ~;
- &affichage;
- }
- }
- sub verifie_referer
- {
- local($trouv) = 0;
- if (!$ENV{'HTTP_REFERER'}) { goto FIN_VR; }
- @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 = @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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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_B);
- 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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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"; }
- @DESTINATAIRES = split(/\r\n/, $Form{'DESTINATAIRES'});
- $Form{'DESTINATAIRES'} = join('|',@DESTINATAIRES);
- @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(',', @EMAILS);
- @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}">~; }
- @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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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="javascript: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) = @_;
- 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);
- }
- }
|
Tu confirmes que c'est cette ligne qui provoque le plantage?
$aff = qq~<b>Erreur : CHAMPS OBLIGATOIRES !!</b><BR>
parce que ca n'a pas l'air d'être lié à la notion de pièce jointe, ça...
A+, Message édité par gilou le 24-09-2008 à 12:39:13 ---------------
There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
|