Bonjour et merci d'avance.
Que dois-je rajouter pour ne pas autoriser la validation du formulaire au nom de domaine machinchose@yahoo.com. Je suis complètement pollué par ces derniers et je ne sais plus quoi faire (en moyenne 60 spams par jour). Et encore un grand merci pour votre aide.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
<table align="right" width="90%">
	<tr>
		<td><h3 class="title">Le livre d'or</h3><br></td>
	</tr>
	<tr>
		<td>
		<table align="right" width="90%">
				<tr>
					<td class="page">
					<?php
/* PARAMETRES A DEFINIR */
// Nombre maximum de commentaires  afficher par page
define('NB_COM_PAR_PAGES', 10);
// Nombre maximum de pages de commentaires affiches
define('NB_MAX_PAGES', 20);
// Nombre maximum de caractres possible dans un commentaire
define('LONGUEUR_MAX_COM', 1500);
// Nombre maximum de caractres par mot
// pour viter une augmentation de la largeur des tableaux
define('LONGUEUR_MAX_MOT', 70);
// Chemin du fichier qui stocke les messages du livre d'or
define('FICHIER_MESSAGES', 'livredor.dat');
 
$message = (isset($_POST['message'])) ? $_POST['message'] : "";
$nom = (isset($_POST['nom'])) ? $_POST['nom'] : "";
$email = (isset($_POST['email'])) ? $_POST['email'] : "";
$page = (isset($_GET['page'])) ? $_GET['page'] : 1;
 
 
// *******************************************************
// Vrification du nombre de caractres envoys dans 
// le commentaire ventuellement post par scurit
// contre certains utilisateurs mal intentionns.
// *******************************************************
 
if((strlen($nom)>LONGUEUR_MAX_COM) 
	|| (strlen($message)>LONGUEUR_MAX_COM)) {
  echo 'Dsol, la taille maximale des commentaires ';
  echo 'pouvant tre posts est limite  ';
  echo LONGUEUR_MAX_COM . ' caractres.<br/>'."\n";
  echo '<a href=' . $_SERVER['PHP_SELF'] . '>';
  echo 'Retour au Livre d\'Or</a>'."\n";
  exit;
}
 
 
// *******************************************************
// Cration du fichier livredor.dat s'il n'existe pas
// *******************************************************
 
if(!file_exists(FICHIER_MESSAGES)) {
	// attention le repertoire doit avoir les droits
	// en ecriture pour la creation du fichier
	$FichierLivre=fopen(FICHIER_MESSAGES,'w+');
	$ligne1 = "Fichier livre d'or, ne pas diter !\n";
	fputs($FichierLivre, $ligne1);
	fclose($FichierLivre);
}
 
// *******************************************************
// Dfinition de la fonction CoupeLongsMots pour couper
// des mots contenants plus de $len caractres.
// (pour ne pas tirer la mise en page)
// *******************************************************
 
function CoupeLongsMots($chaine,$len) 
{
	$pattern = '/([^ ]{'.$len.'})/si';
	$replace= '\1'.' <br/> ';
	return preg_replace($pattern, $replace, $chaine);
}
 
// *******************************************************
// Nettoyage et enregistrement des nouveaux commentaires
// envoys par le formulaire d'ajout
// *******************************************************
 
if ($message && $email && $nom) {
 
	// formattage de la date courante
	$tsnow=time();
	$jour=date("d/m/Y", $tsnow);
	$heure=date("H:i", $tsnow);
	$d=$jour.'  '.$heure;
 
	// nettoyage du nom
	$nom=htmlentities($nom);
	$nom=stripslashes($nom);
	$nom=trim($nom);
 
	// nettoyage du mail
	$email=htmlentities($email);
	$email=stripslashes($email);
	$email=trim($email);
 
	$arobas = strstr($email, '@');
	// ajout du commentaire que si @ dans le mail
	if ($arobas) { 
		// nettoyage du commentaire
		$message=htmlentities($message);
		$message=stripslashes($message);
		$message=trim($message);
		// on change les nouvelles lignes en <br/>
		$message=str_replace(chr(10)," <br/> ",$message);
		// on supprime les retours chariots
		$message=str_replace(chr(13),"",$message);
 
		// ouverture du fichier des commentaires
		$FichierDesCom=fopen(FICHIER_MESSAGES,"a+");
		// ecriture du mail, auteur et date sur une ligne
		fputs($FichierDesCom,"<a href=\"mailto:".$email."\">");
		fputs($FichierDesCom,$nom);
		fputs($FichierDesCom,"</a>");
		fputs($FichierDesCom,"|");
		fputs($FichierDesCom,$d."|\n");
		// ecriture du message sur une 2eme ligne
		fputs($FichierDesCom,$message."\n");
		fclose($FichierDesCom);
 
		// affichage d'un remerciement pour le commentaire
		echo "<div class='avertissement' align=\"center\">";
		echo "Merci pour votre participation !";
		echo "</div>";
		echo "<br/>";
	} else {
		// affichage d'une erreur mail non valide
		echo "<div class='avertissement' align='center'>";
		echo "Adresse email non valide !";
		echo "</div>";
		echo "<br/>";
	}
}
 
// *******************************************************
// Lecture des messages dj posts dans le livre, 
// et stockage des donnes dans des tableaux
// *******************************************************
 
// lecture du fichier des commentaires
$TabLivre=file(FICHIER_MESSAGES);
// nombre de lignes du fichier
$nLignesTabLivre=count($TabLivre)-1;
// nombre total de commentaires
$nbCom=$nLignesTabLivre/2;
 
// on recupere les noms, dates, commentaires
for($cpt=1;$cpt<=$nbCom;$cpt++) {
	$noms[$cpt]=strtok($TabLivre[($cpt*2)-1],"|");
	$dates[$cpt]=strtok("|");
	$comments[$cpt]=$TabLivre[($cpt*2)];
	$noms[$cpt] = trim(stripslashes($noms[$cpt]));
	$dates[$cpt] = trim(stripslashes($dates[$cpt]));
	$comments[$cpt] = trim(stripslashes($comments[$cpt]));
}
 
 
// *******************************************************
// Affichage des commentaires dj posts
// *******************************************************
 
if($nbCom>0) {
 
	// nombre de pages de commentaires theorique
	$nbdepages= floor((($nbCom-1)/NB_COM_PAR_PAGES)+1);
 
	echo "<div class='general'>";
	echo "</h1>\n";
	echo "<br/><br/>\n";
 
	// affiche les liens vers les pages suivantes
	// en haut de page a droite
	if($nbCom>NB_COM_PAR_PAGES) {
		echo "<div class='pages'>pages ";
		for($i=1;$i<=min(NB_MAX_PAGES,$nbdepages);$i++) {
			// si c'est le numero de page courante
			if($i==$page) {
				echo $i . ' &nbsp;';
			// sinon on met un lien dessus
			} else {
				echo '<a href="index.php?p=partner&page='.$i.'">';
				echo $i . '</a> &nbsp;';
			}
		}
		echo "</div>\n";
	}
 
	// position du 1er commentaire de la page courante
	// a afficher (lecture debutant par la fin)
	$FirstComPage= $nbCom-(($page-1)*NB_COM_PAR_PAGES);
	// position du dernier a afficher (plus ancien)
	$LastComPage = max(1,($nbCom-($page*NB_COM_PAR_PAGES)+1));
	// affiche les commentaires de la page courante
	for($cpt=$FirstComPage;$cpt>=$LastComPage;$cpt--) {
		echo "<div class='auteurdate'><b>";
		echo CoupeLongsMots($noms[$cpt],LONGUEUR_MAX_MOT);
		echo "</b> a &eacute;crit, le ".$dates[$cpt]."</div>\n";
		echo "<div class='commentaire'>";
		echo CoupeLongsMots($comments[$cpt],LONGUEUR_MAX_MOT);
		echo "</div>\n";
	}
 
	// affiche les liens vers les pages suivantes
	// en bas de page a droite
	if($nbCom>NB_COM_PAR_PAGES) {
		echo "<div class='pages'>pages &nbsp;";
		for($i=1;$i<=min(NB_MAX_PAGES,$nbdepages);$i++) {
			// si c'est le numero de page courante
			if($i==$page) {
				echo $i . ' &nbsp;';
			// sinon on met un lien dessus
			} else {
				echo '<a href="index.php?p=partner&page='.$i.'">';
				echo $i . '</a> &nbsp;';
			}
		}
		echo "</div>";
	}
 
	echo "<br/> \n";
 
}
 
// *******************************************************
// Avertissement s'il n'y a pas encore de commentaire
// *******************************************************
 
else if ($nbCom<1) {
    echo "<div align=\"center\" class=\"avertissement\">";
    echo "Le livre d'or ne comporte encore aucun commentaire.";
    echo "</div>";
    echo "<br/>";
}
 
 
// *******************************************************
// Formulaire permettant de poster un nouveau commentaire
// *******************************************************
 
?>
</div>
 
<p>&nbsp;</p>
 
<div class="general">
<fieldset>
<legend>Ajouter un nouveau commentaire :</legend>
 
<form method='post' action='index.php?p=partner'>
<table cellpadding='5'>
  <tr>
  	<th><b>Votre nom</b> :&nbsp;</th>
    <td>
      <input type='text' name='nom' maxlength='70' />
    </td>
  </tr>  
  <tr>
    <th><b>Votre email</b> :&nbsp;</th>
    <td>
      <input type='text' name='email' maxlength='100' />
    </td>
  </tr>  
  <tr>
    <th><b>Votre message</b> :&nbsp;</th>
    <td>
      <textarea rows='6' name='message' cols='40'></textarea>
    </td>
  </tr>
  <tr>
  	<td>&nbsp;</td>
    <td> 
      <input type='submit' value='Envoyer !' name='B1' />
    </td>  
  </tr>
 
</table>
</form>
</fieldset>
</div>
 
		<!--INFORMATIONS-->
		</td>
		</tr>
		</table>
 
		</td>
	</tr>
</table>