Livre d'or

Description

Un livre d'or très simple, n'utilisant pas de base de données.

Source / Exemple :


LIVRE.PHP

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
   <title>Livre d'or</title>
   <?
function RecordMessage($MessagesFile)
{
 global $nom;
 global $commentaire;

 if (!file_exists($MessagesFile))
 {
  $pntFile1=fopen($MessagesFile,"w+");
  $ret=fputs($pntFile1,"<HR>\r");
  $ret=fclose($pntFile1);
 }

 $idlck=fopen($MessagesFile.".bak","w");
 fclose($idlck);

 $ret=copy($MessagesFile,$MessagesFile.".bak");
 $pntFile1=fopen($MessagesFile,"w");
 $pntFile2=fopen($MessagesFile.".bak","r");
 // write the message

 $commentaire= ereg_replace(chr(13),"<BR>",$commentaire); // replace chr(13) by <BR>
 $commentaire= str_replace("\'","'",$commentaire);
 $commentaire= str_replace('\"','"',$commentaire);

 if($commentaire&&$nom)
 {
 $ret=fputs($pntFile1," <CENTER>\r");
 $ret=fputs($pntFile1,"  <I>$commentaire</I>\r");
 $ret=fputs($pntFile1," </CENTER>\r");
 $ret=fputs($pntFile1,"</P>\r");
 $ret=fputs($pntFile1,"<BR>\r");
 $ret=fputs($pntFile1,"$nom ");
 $ret=fputs($pntFile1,date("d/m/Y H:i"));
 $ret=fputs($pntFile1,"<BR>\r");
 $ret=fputs($pntFile1,"<HR>\r");
 }
 $contents = fread( $pntFile2, filesize( "$MessagesFile.bak" ) );
 $ret  =fputs($pntFile1,$contents);
 $ret=fclose($pntFile2);
 $ret=fclose($pntFile1);
 $ret=unlink("$MessagesFile.bak");
}
?>
   <?
function lit_actu($fichier)
{
    $lecture=fopen($fichier, "r");
    $chaine=fread($lecture,filesize($fichier));//lit le contenu du fichier
    fclose($lecture);
    return $chaine;
}
     ?>

<?
$MessagesFile=("messages.txt");
$ecriture=RecordMessage($MessagesFile);
?>

  <style>
  a{
      text-decoration:none;
  }
  </style>
  <SCRIPT LANGUAGE="JavaScript">
  function verifform(formulaire)
  {
      if(formulaire.commentaire.value == "" && formulaire.nom.value == "")
      alert('Remplissez le formulaire !');
      else
      formulaire.submit();
  }
</SCRIPT>
</head>
<body text="#000099" bgcolor="#E9E9E9" link="#000099" vlink="#000099" alink="#000099">
<center><table COLS=1 WIDTH="80%" >
<tr>
<td>
<center><h2>LIVRE D'OR</h2></center>
</td>
</tr>
</table></center>
<br>&nbsp;
<center><table COLS=1 WIDTH="80%">
<tr><td><center>
<form method="post" action="livre.php">
<b><font color="#000099">Votre nom ou pseudo</font></b><br>
<input type="text" name="nom" size="20" maxlength="40"><br><br>
<b>Veuillez taper votre message ci-dessous</b><br>
<textarea name="commentaire" cols="40" rows="5"></textarea>
<br><br>
<input type="button" value="envoyer" onClick="verifform(this.form)">
&nbsp;&nbsp;
<input type="reset" value="effacer">
</form>
</center>
</td></tr>
</table></center>
<center><h3>MESSAGES</h3></center>
<center><table COLS=1 WIDTH="50%" BGCOLOR="#FFFFFF" BORDER=0>
<tr>
<?
$actu=lit_actu("messages.txt");
?>
<TD VALIGN=CENTER>
<b>
<? echo "$actu"; ?>
</b>
</TD></td>
</tr>
</table></center>
<br>&nbsp;
</body>
</html>

Conclusion :


Suite aux conseils de GRenard, il semblerait que la méthode de déclaration de variables "global" n'est plus usitée pour des raisons de sécurité, il conviendra donc d'utiliser la méthode $_POST.

$nom=$_POST['nom'];
$commentaire=$_POST['commentaire'];

à la place de :

global $nom;
global $commentaire;

Attention, cette méthode ne fonctionne pas chez Tiscali, mais fonctionne parfaitement chez Free.
A vous de tester pour les autres hébergeurs.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (familypm)