Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Comme d'habitude, la mise en forme vous appartient, je me contenterai du minimum esthétique pour la clarté du cours.
_files/clin0000.png)
Ce sont surtout les balises
<form> et
<input> qui nous intéressent.
Libre à vous d'appeler le fichier comme vous voulez.
Pour ce cours, on va le nommer
livredor.htm.
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | <html>
<head>
<title>Livre d'or</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Le Livre d'OR</h1>
<!-- On commence le formulaire : pour le résultat on invoquera la page "message.php" grâce à l'attribut action de la balise form -->
<form action="message.php" method="post">
<div>
<fieldset> <legend>Votre Nom</legend>
<input type="text" name="pseudo" />
</fieldset>
<fieldset><legend>Postez un message pour le livre d'or</legend>
<textarea cols="66" rows="6" name="message"></textarea>
</fieldset>
<input type="submit" />
<!-- On va créer un lien vers une autre page pour ceux qui veulent consulter le livre d'or sans poster dedans -->
<p>
Pour consulter simplement le livre d'or, <a href="consultezlo.php">cliquez ici</a>
</p>
</div>
</form>
<!-- Notre formulaire est fini, on ferme la balise form -->
</body>
</html>
|
Voilà le fichier "
message.php" qui sera invoqué par l'attribut
action de la balise
<form> du formulaire "
livredor.htm"
(Voir partie html).
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 | <?php
// Pour éviter qu'une unique personne poste 50 fois dans le livre d'or, on va insérer un cookie
setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
// Si le cookie est égal à l'ip du client, alors on le stoppe
if(isset($_COOKIE['ip']) && $_COOKIE['ip']==$_SERVER['REMOTE_ADDR'])
{
echo "<h1>Vous ne pouvez émettre qu'un seul avis et vous l'avez déjà donné !</h1>";
// On stoppe le script
exit;
}
// Mettons le (futur) fichier dans une variable.
$commentaires="messages.txt";
// assignons nos 2 variables du formulaire, et on en profite pour les protéger des balises HTML
$pseudo=htmlentities($_POST['pseudo']);
$message=htmlentities($_POST['message']);
//Pensons au retour à la ligne et aux stripslashes pour la variable $message
$message=stripslashes(nl2br($message));
// On met en place quelques conditions pour les cellules (nom et message)
// On vérifie avant tout si le fichier existe : si ce n'est pas le cas, on le crée
if(!is_file($commentaires))
{
$verif=@fopen($commentaires,"w+");
}
// On vérifie que le login ou le message ne sont pas vide
elseif (trim($message)=="" || trim($pseudo)=="")
{
echo "Vous devez remplir tous les champs ! <a href="livredor.htm">Retour sur le livre d'or</a>";
// On sort du script !
exit;
}
// Après ces quelques vérifications d'usage, on passe à l'exécution de ce formulaire
// Si ok, on ouvre en écriture-enregistrement du fichier message.txt
$verif=@fopen($commentaires,"r+");
// On analyse les anciennes données et on les stocke
$stock=@fread($verif,filesize($commentaires));
// On met la date dans une variable
$date=date ("d/m/Y à H:i");
// On paramètre le tout dans la variable $opinion
$opinion="<b>".$pseudo."</b> a écrit le : ".$date."<br />\n".$message."<br />\n<hr />";
//On remet le curseur du fichier en début de ligne
rewind($verif);
//On insère le nouveau commentaire
fputs($verif,$opinion." \n".$stock);
//On clôt le fichier
fclose($verif);
// On affiche le tout
readfile($commentaires);
?>
|
On va maintenant créer la page
consultezlo.php pour ceux qui veulent simplement consulter le livre d'or.
Vous allez voir : elle est on ne peut plus simple.
Code : PHP1
2
3
4 | <?php
$consultez="messages.txt";
readfile($consultez);
?>
|
Certaines lignes de code se doivent d'avoir quelques explications.
La fonction setcookie
Code : PHP1
2 | // Pour éviter qu'une unique personne poste 50 fois, on va insérer un cookie
setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
|
- 1e argument : la variable sera $_COOKIE['ip'],
- 2e argument : la valeur de l'ip du client,
- 3e argument : la durée du cookie.
Pour en savoir plus, je vous renvoie aux cours de M@teo21 :
Cours sur les cookies
On vérifie si le fichier existe
Avec la fonction
is_file().
Code : PHP1
2
3
4
5 | // On vérifie avant tout si le fichier existe : si ce n'est pas le cas, on le crée
if(!is_file($commentaires))
{
$verif=@fopen($commentaires,"w+");
}
|
Devant la fonction, on a mis l'opérateur de négation "
!" qui lui indique le contraire de ce qu'elle doit faire; donc là, textuellement la condition veut dire :
si le fichier "
message.txt" n'existe pas {on le crée}
La variable $verif
Que nous dit elle ?
Code : PHP1 | $verif=fopen($commentaires,"w+");
|
La fonction
fopen() ouvre le fichier en positionnant toujours un curseur (ou pointeur) de texte.
Le mode
"w+" veut dire lecture et écriture, il efface totalement le contenant du fichier et positionne le curseur en début du fichier. En fait, on l'utilise ici pour créer une fois pour toutes le fichier
"message.txt", puisque le mode
"w+" crée le fichier s'il n'existe pas.
Pour conserver les anciens commentaires, petite astuce : j'appelle à la barre :
La fonction fread();
Code : PHP1
2 | // On analyse les anciennes données et on les stocke
$stock=fread($verif,filesize($commentaires));
|
La fonction
fread() va lire la totalité du fichier et placer le curseur à la fin de celui-ci ; il a aussi besoin d'un second argument : la taille du fichier.
Pour ne pas être embarrassé, on met la fonction
filesize().
Donc, la variable
$stock comprendra la totalité des messages sauvegardés.
La variable $opinion
Cette variable comprendra le nom, la date et le commentaire soumis par le formulaire.
Code : PHP1
2 | // On paramètre le tout dans la variable $opinion
$opinion="<b>".$pseudo."</b> a écrit le : ".$date."<br />\n".$message."<br />\n<hr />";
|
On place le curseur en début de fichier.
Code : PHP1
2 | //On remet le curseur du fichier en début de ligne
rewind($verif);
|
On peut alors insérer notre variable
$opinion dans le fichier
commentaire.txt.
Code : PHP1
2 | //On insère le nouveau commentaire
fputs($verif,$opinion." \n".$stock);
|
La fonction
readfile() va nous permettre de lire l'intégralité du fichier (
commentaire.txt) et de l'afficher.
Code : PHP1
2 | // On affiche le tout
readfile($commentaires);
|
Voilà pour ce qui est de l'approfondissement de ce script.
Sur certains serveurs, il faudra que vous modifiez le
CHMOD du fichier pour qu'il soit accessible en lecture et écriture ; pour en savoir plus sur le CHMOD, je vous renvoie une fois de plus aux cours de M@teo21 :
cours sur le CHMOD.