Un livre d'or sans mysql, mais avec txt

Soyez le premier à donner votre avis sur cette source.

Vue 9 419 fois - Téléchargée 1 399 fois

Description

Soyez indulgent, c'est ma première source. J'ai mis beaucoup de commentaire, c'est pour moi, si j'oublie.
C'est un livre d'or qui fonctionne sans base de données MySQL, mais qui utilise des fichiers textes.
Elle n'est pas très complète, vous pouvez l'améliorer assez facilement.

Source / Exemple :


//le fichier 'Index.php'
<HTML>
<HEAD>
	<TITLE>Livre d'or</TITLE>
</HEAD>
<BODY background="images/filigrane.bmp" bgproperties="fixed">
<H1>Livre d'or</H1>
<table border="0" width="100%">
<a href="livredor_enregistrer.php" class=lien>Insérer un commentaire</a>
<?php
//on ouvre le dossier
$dossier = "livredor/";
$dir = opendir("$dossier");
//Pendant que la variable file peut prendre la valeur de readdir($dir)
While ($file=readdir($dir)) {
	//on demande le type du fichier (lettres a partir du point)
	$filetype = strstr("$file",".");
	//si le fichier est un document texte
	if ($filetype=='.txt') {
		//On récupère les données inclues dans le nom (pseudo,date d'écriture, commentaire/email)
		$date_ecrit=strtok($file,'_');
		$pseudo_2=strtok('_');
		$type=strtok('_');
		//Si c'est un fichier contenant l'e-mail
		if ($type=="aemail.txt") {
			echo("<TR><TD colspan=\"2\"><HR></TD></TR><TR><TD valign=top bgcolor=\"#99CCFF\">$pseudo_2</TD><TD valign=top>$date_ecrit");
			//on l'ouvre (dans le dossier 'livredor'),
			$fichier = "$dossier"."$file";
			$fpe = fopen("$fichier","r+");
			//et on récupère le contenu du fichier (pas besoin de tester la fin du fichier, un e-mail tient sur une ligne)
			$size_email=filesize("$fichier");
			$size_email++;
			$email = fgets($fpe,$size_email);
			stripslashes($email);
			fclose($fpe);
			if ($email) {
				echo " <a href=\"mailto:$email\" class=lien><img src=\"envoyer.bmp\" border=\"0\"></img></TD>";
			}
		//Si c'est un fichier contenant le commentaire
		} else if ($type=="bcommentaire.txt") {
			//on l'ouvre (dans le dossier 'livredor'),
			$fichier = "$dossier"."$file";
			$fpcomm = fopen("$fichier","r+");
			//et on insere le contenu du fichier dans la variable commentaire, en testant la fin du fichier.
			while (!feof($fpcomm)) {
			//Si c'est un fichier contenant les commentaires
			if ($commentaire) {
				$commentaire = "$commentaire"."<br>";
			}
			$size_comm=filesize("$fichier");
			$size_comm++;
			$commentaire_part = "$commentaire".fgets($fpcomm,$size_comm);
			$commentaire = "$commentaire_part";
			}
			//On enlève les anti-slashes, qui perturbent tout
			stripslashes($commentaire);
			//On ferme le fichier
			fclose($fpcomm);
			echo "</TR><TR><TD></TD><TD valign=top>$commentaire</TD></TR>";
			$commentaire='';
		}
	}
}
closedir($dir)
?>
</table>
</BODY>
</HTML>

//Le fichier 'livredor_enregistrer.php'
<SCRIPT language="JavaScript">
<!--
function ControleVide_lo()
{
        if(document.Livredor.pseudo.value=='') {
        	alert('Vous devez indiquer votre pseudo');
                document.Livredor.pseudo.focus();
        } else if(document.Livredor.commentaire.value=='') {
        	alert('Vous devez mettre un commentaire');
                document.Livredor.commentaire.focus();
        } else {
		document.Livredor.method = "POST";
                document.Livredor.action = "livredor/livredor_inser.php";
                document.Livredor.submit();
	}
}
//-->
</script>
<html>
<head>
	<title>Livre d'or</title>
</head>
<body background="images/filigrane.bmp" bgproperties="fixed">
<H1>Livre d'or</H1>
<table width="100%">
<form Name="Livredor" action="livredor/livredor_inser.php">
    <TR>
	<TD>Pseudo ou prénom:</TD>
        <TD><Input Type="text" Name="pseudo" Size="50" Maxlength="100"></TD>
    </TR>
    <TR>
	<TD>e-mail*:</TD>
        <TD><Input Type="text" Name="email" Size="50" Maxlength="100"></TD>
    </TR>
    <TR>
    	<TD valign=top>commentaires:</TD>
        <TD><Textarea Name="commentaire" Rows="10" Cols="70"></Textarea></TD>
    </TR>
    <TR>
    	<TD colspan="2"><div align="center"><Input Type="button" OnClick="ControleVide_lo()" Value="Soumettre"></TD>
    </TR>
</table>
</form>

  • :facultatif<br>
Vous ne pouvez enregistrer plus d'un commentaire par jour, sinon, le deuxième commentaire effacera le précédent. </body> </html> //Le fichier 'livredor_inser.php' <html> <head> <META http-EQUIV="Refresh" CONTENT="1; url=http://www.votresite.com/livredor.php"> <title>Livre d'or</title> </head> <body> <?php global $pseudo; global $commentaire; global $email; //On récupère les variables du formulaire $pseudo = $HTTP_POST_VARS['pseudo']; $commentaire = $HTTP_POST_VARS['commentaire']; if ($HTTP_POST_VARS['email']!='') { $email = $HTTP_POST_VARS['email']; } //On récupère la date $date = date("j"); if (strlen($date) < 2) { $date = "0".$date; } $date .= date("-m-Y"); //On définit un nom de fichier (date_pseudo_noaemail) $nom = "$date"."_$pseudo"."_noaemail"; //On le crée (avec l'option ériture) $fp = fopen($nom.'.txt','w+'); //On se place en début de fichier fseek($fp,0); //On écrit l'e-mail à l'intérieur fputs($fp,$email); //On le ferme fclose($fp); //On définit un nom de fichier (date_pseudo_nobcommentaire) $nom = "$date"."_$pseudo"."_nobcommentaire"; //On le crée (avec l'option ériture) $fp = fopen($nom.'.txt','w+'); //On se place en début de fichier fseek($fp,0); //On écrit le commentaire à l'intérieur fputs($fp,$commentaire); //On le ferme fclose($fp); mail("vous@votresite.com","Un commentaire dans le livre dor","Un commentaire a été inséré dans le livre d'or de votre site","From:robot-livredor@votresite.com\nReply-To: no@reply.com"); ?> </body> </html>

Conclusion :


Et voilà!
Dans 'livredo_inser.php', n'oubliez pas de changer l'adresse de redirection (ligne 3) et l'e-mail du webmaster (ligne47).
Bien sûr, ce code n'est pas très complet, mais il est toujours en cours d'amélioration. Vous pouvez ajouter des fonctions pour la mise en forme du message (gras, url, smiley,...), ou ajouter une fonction pour vérifier l'e-mail.

N'oubliez surtout pas de placer les fichiers texte dans le dossier 'livredor'(a créer), Avec Ultimate Zip, je n'ai pas réussi à garder des dossiers, que des fichiers.

N'hésitez pas à relever les bugs et les lourdeurs du code, et à me les signaler.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_JackNUMBER
Messages postés
236
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
26 juin 2011
1
heu...
juste une remarque, les images en BMP ne passe pas sur internet...
>> les formats les plus connus sont: JPG, GIF et PNG

voilà, sinon c'est cool ^^
BioSs007
Messages postés
19
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 septembre 2013

J'ai un prblème, quand il y a plusieurs commentaire, les nom et le commentaires s'enmêlent. Pourquoi ?
Anapiro
Messages postés
2
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
18 décembre 2005

oui, je te remercie beaucoup de m'avoir repondu Samby.
En fait, j'ai trouvé le probleme.
J'ai fait exactement les changements que j'ai deja indiqué au dessus, à la diference que j'ai absolument tout enlevé et tout re-uploader. Avant je me contentais de changer une ligne sur une page et de re-uploader la page tandis que là je re-uploadais le tout et ça a marché...

le seul probleme maintenant c'est que sur les deux livres d'or que j'ai mis dans deux dossier bien distinct pour ne pas avoir de probleme de chevauchement, il y en a un qui bug parce que arivé au troisieme commentaire il met le pseudo en haut et le commentaire en bas à la suite des deux précédents...

si tu vois ce que c'est fais moi signe sinon je vais essayer de voir d'ou ça peut venir...

merci beaucoup en tout cas...
Samiby
Messages postés
118
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
2 janvier 2006

Théoriquement, enlever le "no" devrait marcher ...
L'es-tu bien enlevé aux lignes contenant "noaemail" et "nobcommentaire" ?
Anapiro
Messages postés
2
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
18 décembre 2005

salut, en fait, c'est parce que je souhaiterais que les messages laissé s'afiche imediatement et qu'il n'y ai pas à enlever le "no".

Dans un premier temps, j'ai suprimer le "no" dans livredor_inser.php (lignes :26&37 dans livredor_inser.php), puis apres reflexion je l'ai retabli et dans livredor.php je lui ai demandé d'afficher directement les messages contenant le "no"'lignes :24&39 dans livredor.php) . Ceci dit, ni l'une ni l'autre des manipulations n'ont fonctionnés...

Pourrais tu m'indiquer comment faire donc pour que les messages aparaissent sans que j'ai à les "aprouver" ?

merci.

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.