Yanx
Messages postés1Date d'inscriptionvendredi 13 février 2015StatutMembreDernière intervention13 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)
########################################################################
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"); }
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
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.");
}
}
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);
&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"); }
}