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>
<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)">
<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>
</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.
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.