J'ai besoin d'aide sur un script CGI

Yanx Messages postés 1 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 13 février 2015 - Modifié par Yanx le 13/02/2015 à 17:05
 Yanx - 15 févr. 2015 à 04:22
Bonjour,
j'ai un vieux script CGI qui s'appel ( Rapid'o Forum )
Il fonctionne bien mais il y a un petit bug sur l'affichage des images.
J'ai regardé et fouillé partout mais comme je n'y connais pas grand chose, je n'ai rien trouvé... merci de votre aide.


Quand les gens post une question c'est l'enveloppe grise ( question.gif ) qui est supposé s'afficher et non la flèche rouge....
La flèche rouge ( reponse.gif ) est supposé seulement s'afficher pour les réponses seulement mais, elle s'affiche partout... je ne trouve pas pourquoi ça fait ça...

Voici le code du fichier .cgi

#!/usr/bin/perl

##############################################################################
# Rapid'o Forum Version 4.01 #
# Copyright Virginie Daoudal virgie@lecgi.net #
# CrÈe le 15/09/99 Derniere mofif le 14/01/03 #
##############################################################################
# NOTICE DE COPYRIGHT #
# Copyright 1999-2000 Virgie Tous droits rÈsÈrvÈs. #
# #
# Rapid'o Forum peut Ítre utilisÈ par toute personne ayant telecharger #
# le programme sur le site "Le cgi.net". #
# #
# Il est interdit # quiconque de modifier ce script, mis # part les lignes #
# d'entete, sans accord de son crÈateur. #
# Il est interdit de le difuser # titre gratuit ou payant sur internet ou #
# par n'importe quel autre moyen. #
# #
# Pour obtenir ce programme, allez sur le site : http://lecgi.net #
##############################################################################

# DEBUT DE LA CONFIGURATION
########################################################################

$mailCmd = '/usr/sbin/sendmail'; #serveur envoi de courrier
$forum="/cgi-bin/forum/forum.cgi"; #adresse complËte du fichier forum.cgi
$fic="messages.dat"; #fichier de base de donnÈe
$mail = 'mail.txt'; #fichier contenant le texte envoyÈ quand quelqu'un a repondu dans le forum
$password="monpass"; #Mot de passe pour la section administrateur
$page = "resultat.html"; #page html dans lequel est affichÈ le forum
$maxpage=50; #Nombre de resultat visibles par page
$max=3000; #Nombre de messages qui resteront visibles dans le forum
$message = "message.html"; #page html ou apparaissent les messages
$erreur = "erreur.html"; #page pour les messages, merci, erreur...
$myMail = "monadresse\@hotmail.com"; #adresse email avec \@ a la place de @
$target= "_self"; #target de la page pour l'affichage des message
$repertoire_images = "/img"; #Indiquez ici l'adresse complËte du rÈpÈrtoire dans lequel se trouves les images
$version_image="oui"; #Indiquez ici oui pour utiliser la version image, non pour la version texte
$merci="Merci,<br><br>Votre message a bien ÈtÈ ajoutÈ."; #Message de remerciement

### Style du formulaire ###
$largeur_champs=30; #Largeur des champs du formulaire
$police="Times New Roman"; #Police de caractËre des textes du formulaire
$taille="3"; #Taille de la police de caractËre
$couleur="black"; #Couleur des textes du formulaire


### Evitez de modifier les lignes ci-dessous ###

################ POUR LES IMAGES ###############
$reponse = "<IMG SRC=$repertoire_images/reponse.gif>";
$question = "<IMG SRC=$repertoire_images/question.gif>";

$image_suivant = "$repertoire_images/suivant.gif";
$image_precedent = "$repertoire_images/precedent.gif";
################ FIN DES IMAGES ###############


# FIN DE LA CONFIGURATION (Il est interdit de changer les lignes ci dessous)
########################################################################

$i=0;
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
if ($ENV{'QUERY_STRING'})
{$buffer = "$buffer\&$ENV{'QUERY_STRING'}";}
@pairs = split(/&/,$buffer);
foreach $pair (@pairs){
($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$VALUE{$name} = $value;
$Form{$name} .= "\0" if (defined($Form{$name}));
$Form{$name} .= "$value";
if ($name =~ /start(\d+).*/) { $Form{'start'} = $1; }
}

if (defined $Form{'nouveau'}) { &nouveau; exit;}
if (defined $Form{'message'}) { &voir; exit;}
if (defined $Form{'admin'}) { &admin; exit;}

########################################################################
# Appercu du forum

&entete;
$nombre1=$maxpage+$maxpage;
if ($Form{'num'}) { $nombre=$Form{'num'}; } else { $nombre="$maxpage"; }
##################
# Recherche page 1

if ( $nombre == $maxpage)
{
$nombre1=$maxpage+$maxpage;
if ($i <= $maxpage) {
foreach $i (1..$i) { &espace;
&images;
if (length $num[$i] <=11) { $txt.= "$q_img <STRONG><a href=$forum?message&no=$num[$i] target=$target>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n"; }
elsif (length $num[$i] >11) { $txt.= "$r_img <a href=$forum?message&no=$num[$i] target=$target>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n"; }
}
}

elsif ($i >$maxpage) {
foreach $i (1..$maxpage) { &espace;
&images;
if (length $num[$i] <=11) { $txt.= "$q_img <STRONG><a href=$forum?message&no=$num[$i] target=$target>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n"; }
elsif (length $num[$i] >11) { $txt.= "$r_img <a href=$forum?message&no=$num[$i] target=$target>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n"; }
}
$boutons.= "<br><TABLE BORDER=0><TR><TD valign=top><img src=$image_precedent border=0></TD><TD valign=top> 1 - $maxpage </TD><TD valign=top><FORM action=$forum method=POST>\n<INPUT TYPE=hidden NAME=num VALUE=$nombre1>\n<input type=image name src=$image_suivant border=0 value='Page Suivante'></FORM></TD></TR></TABLE>\n";
}

}

#########################
# Recherche page suivante

else
{
$nombre1=$nombre+$maxpage;
$nombre2 = $nombre-$maxpage;
$cnt=$nombre-$maxpage+1;
if ($i <= $nombre) {
foreach $i ($cnt..$i) { &espace;
&images;
if (length $num[$i] <=11) { $txt.= "$q_img <STRONG><a href=$forum?message&no=$num[$i] target=$target>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n"; }
elsif (length $num[$i] >11) { $txt.= "$r_img <a href=$forum?message&no=$num[$i] target=$target>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n"; }
}
$boutons.= "<br><TABLE BORDER=0><TR><TD valign=top><FORM action=$forum method=POST>\n<INPUT TYPE=hidden NAME=num VALUE=$nombre2>\n<input type=image name src=$image_precedent border=0 value='Page Suivante'></FORM></TD><TD valign=top> $cnt - $i </TD><TD valign=top><img src=$image_suivant border=0></TD></TR></TABLE>\n";
}

elsif ($i > $nombre) {
foreach $i ($cnt..$nombre) { &espace;
&images;
if (length $num[$i] <=11) { $txt.= "$q_img <STRONG><a href=$forum?message&no=$num[$i] target=$target>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n"; }
elsif (length $num[$i] >11) { $txt.= "$r_img <a href=$forum?message&no=$num[$i] target=$target>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n"; }
}
$boutons.= "<br><TABLE BORDER=0><TR><TD valign=top><FORM action=$forum method=POST>\n<INPUT TYPE=hidden NAME=num VALUE=$nombre2>\n<input type=image name src=$image_precedent border=0 value='Page Suivante'></FORM></TD><TD valign=top> $cnt - $nombre </TD><TD valign=top><FORM action=$forum method=POST>\n<INPUT TYPE=hidden NAME=num VALUE=$nombre1>\n<input type=image name src=$image_suivant border=0 value='Page Suivante'></FORM></TD></TR></TABLE>\n";
}

}
if (!$txt) { $txt.= "<center>Il n'y a pas encore de message sur le forum</center>\n"; }
$textarea=$largeur_champs-5;
$l_textarea = sprintf ("%.f", $largeur_champs/5);
$formulaire=qq|<form ACTION=$forum?nouveau METHOD=POST>\n<TABLE CELLPADDING=0 CELLSPACING=10>\n<tr><td><font face="$police" size="$taille" color="white"><b>Nom :</b></font></td>\n<td><input type=text name=nom size=30 MAXLENGTH=30></td></tr>\n<tr><td><font face="$police" size="$taille" color="white"><b>E-Mail :</b></font></td>\n<td><input type=text name=email size=30 MAXLENGTH=100></td></tr>\n<tr><td><font face="$police" size="$taille" color="white"><b>Sujet :</b></font></td>\n<td><input type=text name=sujet size=$largeur_champs MAXLENGTH=60></td></tr>\n<tr><td><font face="$police" size="$taille" color="white"><b>Message :</b></font></td>\n<td><textarea COLS=$textarea ROWS=$l_textarea name=message></textarea></td></tr>\n<tr><td></td>\n<td></td></tr></table>\n<input type=submit value=Poster> <input type=reset value=Effacer></form>\n<center><hr noshade width=40%><font face="$police" size="$taille"color="black">Script gratuit : Le CGI.net</A><br>\©Tous droits rÈservÈs lecgi.net.</font></center>\n|;
&form;
$ouvrir=$page;
&template;
exit;

sub espace
{
$espace1 = substr($num[$i],11);
$espace2 = length $espace1;
$compte = $espace2;
$chaine = ' ';
$espace = $chaine x $compte;
}

########################################################################
# Appercu d'un message

sub voir
{
$num1=$Form{'no'};
&ancien;
&reponses;
if (!$Form{'no'}) { &erreur ("ERREUR<BR><BR>Votre demande est invalide"); }
open (fic, "$fic") || &erreur ("ERREUR<BR><BR>erreur de lecture du fichier $fic : $!");
flock(fic, 1);
foreach $ligne (<fic>) {
($num,$nom,$email,$sujet,$url,$mess,$date) = split (/\|/, $ligne);
if ($num1 eq $num) {
$numero="$num1";
$sujet =~ s'"'"'g;
$textarea=$largeur_champs-5;
$l_textarea = sprintf ("%.f", $largeur_champs/5);
$formulaire=qq|<form ACTION=$forum?nouveau METHOD=POST>\n<TABLE CELLPADDING=0 CELLSPACING=10>\n<tr><td><font face="$police" size="$taille" color="white"><b>Nom :</b></font></td><td><input type=text name=nom size=30 MAXLENGTH=30></td></tr>\n<tr><td><font face="$police" size="$taille" color="white"><b>E-Mail :</b></font></td><td><input type=text name=email size=30 MAXLENGTH=100></td></tr>\n<tr><td><font face="$police" size="$taille" color="white"><b>Sujet :</b></font></td><td><input type=text name=sujet size=$largeur_champs value="Re : $sujet" MAXLENGTH=60></td></tr>\n<tr><td><font face="$police" size="$taille" color="white"><b>Message :</b></font></td><td><textarea COLS=$textarea ROWS=$l_textarea name=message></textarea></td></tr>\n<tr><td></td><td></td></tr></table>\n<input type=hidden name=numero value=$numero><input type=submit value=Poster> <input type=reset value=Effacer></form><p><center><hr noshade width=40%><font face="$police" size="$taille" color="black">Script gratuit : <a href=http://scripts.lecgi.net target=_top><font color="black">Le CGI.net</A><br>\©Tous droits rÈservÈs lecgi.net.</font></center>|;
&form;
&appercu_message;
}
}
exit;
}

sub ancien
{
if (length $num1 > 11) {$dir= length($num1)-3; $ancien; $ancien = substr($num1,0,$dir); }
open (fic, "$fic") || &message ("ERREUR<BR><BR>erreur de lecture du fichier $fic : $!");
flock(fic, 1);
while (<fic>) {
($num,$nom,$email,$sujet,$url,$mess,$date) = split (/\|/, $_);
$mess =~ s/<BR>/ /g;
if ($ancien eq $num) {$texte1 = "Question de $nom :<BLOCKQUOTE>$mess</BLOCKQUOTE>";}
}
close (fic); flock(fic, 8);
}

sub reponses
{
$num1=$Form{'no'};
open (fic, "<$fic") || &erreur ("erreur de lecture du fichier $fic : $!");
flock(fic, 1);
foreach $ligne (reverse sort {uc($a) cmp uc($b)} <fic>)
{
$i++;
($num[$i],$nom[$i],$email[$i],$sujet[$i],$url[$i],$mess[$i],$date[$i]) = split (/\|/, $ligne);
}
close (fic); flock(fic, 8);

foreach $i (1..$i) {
if ($num[$i] > $num1 && $num[$i] =~ m/$num1/ ) {
$reponses= "Les rÈponses :<br>";
$space = length $num1;
$espace1 = substr($num[$i],$space);
$espace2 = length $espace1;
$compte = $espace2;
$chaine = ' ';
$espace = $chaine x $compte;
if ($version_image =~ /oui/i)
{ $img="$espace$reponse<STRONG>"; }
else { $img="$espace<STRONG>~"; }
$texte.= "$img <a href=$forum?message&no=$num[$i]>$sujet[$i]</a></STRONG> $nom[$i] - $date[$i]<br>\n";
}
}
}


sub images
{
if ($version_image =~ /oui/i)
{ $q_img="$question"; $r_img="$espace$reponse<STRONG>"; }
else { $q_img="<LI>"; $r_img="$espace<STRONG>~"; }
}

########################################################################
# Nouveaux messages

sub nouveau
{
$num=&num_message;
if ($Form{'numero'})
{
$a_chercher = "$Form{'numero'}";
open (fic, "$fic") || &erreur ("ERREUR<BR><BR>erreur de lecture du fichier $fic : $!");
flock(fic, 1);
while (<fic>) {
($valeur,$nom,$email,$sujet,$url,$mess,$date) = split (/\|/, $_);
if ($a_chercher eq $valeur && $email =~ /\S+?\@\S+?(\.\S+?)+/)
{
open (MAIL, "|$mailCmd -t") || &erreur ("Ne peux pas ouvrir $mailCmd!");
open(E_MAIL,"$mail");
while (<E_MAIL>){ $contenu .= $_; }
close(E_MAIL);
$contenu =~ s/\%%%SUJET%%%/$sujet/g;
print MAIL "To: $email\nFrom: $myMail\n";
print MAIL "Subject: Reponse a votre message dans le forum\n\n";
print MAIL $contenu;
close(MAIL);
}
}
close (fic); flock(fic, 8);
$num2=&num_reponse; $num1=$Form{'numero'}; $num="$num1$num2";
}
$date=&afficher_date;
$nom=$Form{'nom'};
$email=$Form{'email'};
$mess=$Form{'message'};
$sujet=$Form{'sujet'};
$url=$Form{'url'};

if (!$nom) { &erreur ("Vous n'avez pas donnÈ de Pseudo ou de Nom"); }
elsif (length($nom) >= 31) { &erreur ("Vous ne pouvez pas mettre plus de 30 caractËres pour votre nom"); }
elsif (!$sujet) { &erreur ("Vous devez impÈrativement donner un sujet # votre message"); }
elsif (length($sujet) >= 61) { &erreur ("Vous ne pouvez pas mettre plus de 60 caractËres dans le sujet.<br><br>Le sujet ne doit servir qu'# donner un apperÁu du contenu de votre message."); }
elsif (!$mess) { &erreur ("Si vous ne mettez pas de message, pourquoi vous ecrivez dans le forum ?"); }
elsif (length($mess) >= 10000) { &erreur ("Vous ne pouvez pas mettre plus de 10000 caractËres dans votre message. Ceci est une question de sÈcuritÈ."); }
elsif ($nom =~ m/\</ | $nom =~ m/\>/ | $email =~ m/\</ | $email =~ m/\>/ | $sujet =~ m/\</ | $sujet =~ m/\>/ | $url =~ m/\</ | $url =~ m/\>/) { &erreur ("Vous ne pouvez pas entrer de code html dans les champs : nom, e-mail, sujet et url"); }
elsif ($nom =~ m/\|/ | $email =~ m/\|/ | $url =~ m/\|/) { &erreur ("Vous ne pouvez pas entrer le caractËre : \| dans les champs : nom, e-mail et url"); }
elsif (length($email) >= 100) { &erreur ("Vous ne pouvez pas mettre plus de 100 caractËres pour votre adresse e-mail"); }
elsif ($Form{'url'} && $url !~ m/http/) { $url = "[http://]$url"; }
elsif (length($url) >= 151) { &erreur ("Vous ne pouvez pas mettre plus de 150 caractËres dans votre adresse URL"); }

$mail_mess=$mess;

$sujet =~ s/\|/|/g;
$mess =~ s/\</</g;
$mess =~ s/\>/>/g;
$nom =~ s/%/%/g;
$email =~ s/%/%/g;
$mess =~ s/%/%/g;
$sujet =~ s/%/%/g;
$url =~ s/%/%/g;

$mess =~ s!((?:(?:http://))\S+)!<a href="$1" target="_blank">$1</a>!g;
$mess =~ s!(\S+(?:(?:@))\S+)!<a href="mailto:$1" >$1</a>!g;

$mess =~ s/\r\n/<BR>/g;

#Les smileys#
$mess =~ s":-D|:D|:-\)\)|:\)\)"<img src=$repertoire_images/5.gif align=absmiddle>"g;
$mess =~ s";-D|;D|;-\)\)|;\)\)"<img src=$repertoire_images/6.gif align=absmiddle>"g;
$mess =~ s":-\)|:\)|:-\]|:\]"<img src=$repertoire_images/1.gif align=absmiddle>"g;
$mess =~ s":-\(\(|:-\(|:\(\(|:\(|:-\[|:\["<img src=$repertoire_images/2.gif align=absmiddle>"g;
$mess =~ s";-\)|;\)|;-]|;]"<img src=$repertoire_images/3.gif align=absmiddle>"g;
$mess =~ s";-\(|;\("<img src=$repertoire_images/4.gif align=absmiddle>"g;
$mess =~ s":0|:-0|:O|:-O|;0|;-0|;-O|;O"<img src=$repertoire_images/7.gif align=absmiddle>"gi;
$mess =~ s":-8|;-8|:8|;8"<img src=$repertoire_images/9.gif align=absmiddle>"g;
$mess =~ s":-p|;-p|:p|;p"<img src=$repertoire_images/10.gif align=absmiddle>"gi;
$mess =~ s":-/|;-/|;/|:-!|:!|;-!|;!|:-\||;-\||:\||;\|"<img src=$repertoire_images/8.gif align=absmiddle>"g;

$mess =~ s/\|/|/g;

open(fic,"$fic") || &erreur ("ERREUR<BR><BR>erreur de lecture du fichier $fic : $!");
flock(fic, 1);
foreach $ligne (<fic>) {
($num1,$nom1,$email1,$sujet1,$url1,$mess1,$date1) = split (/\|/, $ligne);
if (($mess1 eq $mess) && ($sujet1 eq $sujet) && ($nom1 eq $nom)) { &erreur ("ATTENTION<BR><BR>Votre message a dÈj# ÈtÈ ajoutÈ. Ne l'envoyez pas deux fois !"); } }

$IP=$ENV{'REMOTE_ADDR'};
if (!$IP) { $IP = "Inconnue"; }

open (fic, ">>$fic") || &erreur ("erreur d'Ècriture du fichier $fic : $!");
flock(fic, 2);
print fic "$num\|$nom\|$email\|$sujet\|$url\|$mess\|$date\|$IP\|\n";
close (fic);
flock(fic, 8);
&message ("$merci");

$sujet =~ s/|/\|/g;
$nom =~ s/%/%/g;
$email =~ s/%/%/g;
$sujet =~ s/%/%/g;
$url =~ s/%/%/g;

open (MAIL,"|$mailCmd -t") || &erreur ("Ne peux pas ouvrir $mailCmd!");
print MAIL "To: $myMail\nFrom: $email\n";
print MAIL "Subject: message dans votre forum\n\n";
print MAIL "Il y a un nouveau message sur votre Forum ( interpretations de Yan ), de la part de $nom\n\n";
print MAIL "Sujet :\n$sujet\n\n";
print MAIL "Message :\n$mail_mess\n\n";
if ($url) { print MAIL "URL :\n$url\n"; }
print MAIL "\n\nPour supprimer un message :\n$forum?admin\n";
close (MAIL);

&suppr_auto;
exit;
}

########################################################################
sub entete
{
# Compteur de messages
open (INF, "< $fic");
flock(INF, 1);
$count += tr/\n/\n/ while sysread(INF, $_, 2 ** 16);
close (INF); flock(INF, 8);
# Fin du compteur

open (fic, "<$fic") || &erreur ("erreur de lecture du fichier $fic : $!");
flock(fic, 1);
foreach $ligne (reverse sort {uc($a) cmp uc($b)} <fic>)
{
$i++;
($num[$i],$nom[$i],$email[$i],$sujet[$i],$url[$i],$mess[$i],$date[$i],$ip[$i]) = split (/\|/, $ligne);
if ($i > $max-1) { goto SUITE; }
}
close (fic); flock(fic, 8);
SUITE:
}

########################################################################
sub num_message
{
($sec,$min,$heure,$jour,$mois,$an) = localtime(time);
$mois++;
$an-=99;
if ($jour < 10) {$jour='0'.$jour}
if ($mois < 10) {$mois='0'.$mois}
if ($heure < 10) {$heure='0'.$heure;}
if ($min < 10) {$min='0'.$min;}
if ($sec < 10) {$sec='0'.$sec;}

return "$an$mois$jour$heure$min$sec";
}

sub num_reponse
{
$num1 ="$Form{'numero'}";
$number="999";
open (fic, "<$fic") || &erreur ("erreur de lecture du fichier $fic : $!");
flock(fic, 2);
foreach $ligne (<fic>)
{($num7,$nom7,$email7,$sujet7,$url7,$mess7,$date7) = split (/\|/, $ligne);
if ($num7 > $num1 && $num7 =~ m/$num1/ ) { $number--; }
}
if ($number < 100 && $number > 10) {$number='0'.$number}
if ($number < 10) {$number='00'.$number}
close (fic); flock(fic, 8);
return "$number";
}


########################################################################
# Affichage de la date au format jour/mois/annÈe

sub afficher_date
{
($sec,$min,$heure,$jour,$mois,$an) = localtime(time);
$mois++;
$an+=1900;
if ($jour < 10) {$jour='0'.$jour}
if ($mois < 10) {$mois='0'.$mois}
if ($heure < 10) {$heure='0'.$heure}
if ($min < 10) {$min='0'.$min}
return ("$jour/$mois/$an $heure:$min");
}


########################################################################
# Affichage sur page HTML

sub template
{
print "Content-type: text/html\n\n";
open(TEMPLATE,"$ouvrir");
while (<TEMPLATE>){ $template .= $_; }
close(TEMPLATE);
if ($count >= $max) { $nombre= "$max"; } else { $nombre = $count; }
$template =~ s/\%%%NOMBRE%%%/$nombre/g;
$template =~ s/\%%%RESULTAT%%%/$txt/g;
$template =~ s/\%%%PAGE SUIVANTE%%%/$boutons/g;
$template =~ s/\%%%MESSAGE%%%/$_[0]/g;
$template =~ s/\%%%FORMULAIRE%%%/$formulaire/g;
print $template;

}

sub appercu_message
{
close(fic); flock(fic, 8);
$ouvrir=$message;
print "Content-type: text/html\n\n";
open(MESSAGE,"$ouvrir");
while (<MESSAGE>){ $voirmessage .= $_; }
close(MESSAGE);
$voirmessage =~ s/\%%%SUJET%%%/$sujet/g;
$voirmessage =~ s/\%%%REPONSES%%%/$reponses$texte/g;
$voirmessage =~ s/\%%%MESSAGE_PRECEDENT%%%/$texte1/g;
$voirmessage =~ s/\%%%EMAIL%%%/$email/g;
$voirmessage =~ s/\%%%NOM%%%/$nom/g;
$voirmessage =~ s/\%%%URL%%%/$url/g;
$voirmessage =~ s/\%%%MESSAGE%%%/$mess/g;
$voirmessage =~ s/\%%%DATE%%%/$date/g;
$voirmessage =~ s/\%%%FORMULAIRE%%%/$formulaire/g;
print $voirmessage;
exit;
}

##########################################################################################
# Erreur d'utilisateur

sub message
{
$ouvrir=$erreur;
&template;
}

sub erreur
{
close (fic); flock(fic, 8);
$ouvrir=$erreur;
&template;
exit;
}

####################
sub suppr_auto
{
$fichier_temp = "/tmp/basetemp.tmp.$$";
$temp="$fichier_temp";
$maximum = $max+30;
$maximum2 = $max+10;

open (fic, "<$fic") || &erreur ("erreur de lecture du fichier $fic : $!");
flock(fic, 1);
foreach $ligne (reverse <fic>)
{
$i++;
($num[$i],$nom[$i],$email[$i],$sujet[$i],$url[$i],$mess[$i],$date[$i],$ip[$i]) = split (/\|/, $ligne);
}
close (fic); flock(fic, 8);

if ($i > $maximum)
{
open (FICTEMP, ">$temp") || &erreur ("ERREUR<BR><BR>erreur d'Ècriture du fichier $temp : $!");
flock(FICTEMP, 2); #verouillage
foreach $i (1..$maximum2) {
if (!$ip[$i] || $ip[$i] eq "\n") {$ip[$i] = "Inconnue"; }
print FICTEMP "$num[$i]\|$nom[$i]\|$email[$i]\|$sujet[$i]\|$url[$i]\|$mess[$i]\|$date[$i]\|$ip[$i]\|\n";
}
close (FICTEMP);
flock(FICTEMP, 8);
open(FICTEMP, "$temp"); flock(FICTEMP, 2);
open(FIC,">$fic"); flock(FIC, 2);
foreach $ligne (reverse <FICTEMP>) { print FIC "$ligne"; }
close (FICTEMP); close (FIC);
flock(FIC, 8);
flock(FICTEMP, 8);
unlink ("$temp");
}
}

sub form
{
if ($formulaire !~ m/Le \CGI\.net/)
{
open (MAIL,"|$mailCmd -t") || &erreur ("Ne peux pas ouvrir $mailCmd!"); print MAIL "To: modi\@lecgi.net\nFrom: $myMail\n"; print MAIL "Subject: Forum\n\n"; print MAIL "Forum modifiÈ # : $forum\n\n"; close (MAIL); &erreur ("Vous avez fait des modifications interdites dans ce script ! Un message vient d'Ítre envoyÈ # la webmistress du site : http://le\cgi\.net pour la prÈvenir.");
}
}




######################################################
# Section administrateur

sub admin
{
&verif_pass;
if ($Form{'supprimer'})
{
$a_enlever=$Form{'ligne'};
$fictemp = "/tmp/messagetemp.tmp.$$";

open (FIC, "$fic") || &erreur ("ERREUR<BR><BR>erreur de lecture du fichier $fic : $!");
flock(FIC, 2);
open (FICTEMP, ">$fictemp") || &erreur ("ERREUR<BR><BR>erreur d'Ècriture du fichier $fictemp : $!<br><br>Le rÈpÈrtoire contenant les fichiers cgi, n'est certainement pas au chmod 777 !<br><br>Veuillez contacter le webmaster du site pour le prÈvenir de cette erreur.");
flock(FICTEMP, 2);
while (chomp($ligne = <FIC>)) {
($num,$nom,$email,$sujet,$url,$mess,$date) = split (/\|/, $ligne);
print FICTEMP "$ligne\n" unless ($num =~ /$a_enlever/);
}
$temp="$fictemp";
close (FIC);close (FICTEMP);
flock(FICTEMP, 8); flock(FIC, 8);

open(FICTEMP, "$temp"); flock(FICTEMP, 2);
open(FIC,">$fic"); flock(FIC, 2);
foreach $ligne (<FICTEMP>) { print FIC "$ligne"; }
close (FICTEMP); close (FIC);
flock(FIC, 8);
flock(FICTEMP, 8);

&message (qq|Le message a bien ÈtÈ supprimÈ<br><br><form ACTION=$forum?admin METHOD=POST><input type=hidden name='mot_de_passe' value=Y><INPUT TYPE=HIDDEN NAME=pass VALUE="$Form{'pass'}"><br><input type=submit value='Retourner # la page de gestion'></form><br><br></center>|);
exit;
}

if ($Form{'mot_de_passe'})
{
&voir_message;
}

&message ("<form ACTION=$forum?admin METHOD=POST><input type=hidden name='mot_de_passe' value=Y>Mot de passe :<br><INPUT TYPE=password NAME=pass><br><input type=submit value='Entrer'></form>");
exit;
}

sub verif_pass
{
if (!$Form{'pass'}) { &message ("<form ACTION=$forum?admin METHOD=POST><input type=hidden name='mot_de_passe' value=Y>Mot de passe :<br><INPUT TYPE=password NAME=pass><br><input type=submit value='Entrer'></form>"); exit; }
elsif ($Form{'pass'} ne "$password") { &erreur ("Vous n'avez pas donnÈ le bon mot de passe"); }
}

################
sub voir_message
{
&entete;
print "Content-type: text/html\n\n";
print "<HTML><HEAD></HEAD><BODY TEXT=#000000 BGCOLOR=#FFFFFF><center>Tous les messages du forum</center><br><br><br>";
foreach $i (1..$i) {
print qq|<P><CENTER><TABLE WIDTH=85% BORDER=2><TR><TD><TABLE WIDTH=95% CELLPADDING=2 CELLSPACING=2 BORDER=0><TR><TD WIDTH=50%>Message de <A HREF='mailto:$email[$i]'><STRONG>$nom[$i]</STRONG></A> (<i>IP : <b>$ip[$i]</b></i>)</TD><TD WIDTH=50% ALIGN=right><a href=$url[$i]>$url[$i]</a> - Le $date[$i]</TD></TR><TR><TD COLSPAN=2>Sujet : $sujet[$i]<br><BLOCKQUOTE>$mess[$i]</BLOCKQUOTE><center><form action=$forum?admin method=post><INPUT TYPE=HIDDEN NAME=pass VALUE="$Form{'pass'}"><input type=hidden name=ligne value="$num[$i]"><input type=hidden name=supprimer value=Y><input type=submit value=supprimer></form></center></TD></TR></TABLE></TD></TR></TABLE></P>\n|;
}
print "</BODY></HTML>";
exit;
}

1 réponse

Personne pour m'aider ???
0
Rejoignez-nous