Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/05/2008, 21h45   #1
Membre expérimenté
 
Inscription : décembre 2006
Messages : 947
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 947
Points : 563
Points : 563
Envoyer un message via MSN à {F-I}
Par défaut anti-spam

Bonsoir à tous,

Je commence à recevoir nombreux spam provenant le site d'association dans la page de contact...

J'envisage ajouter une couche de sécurité afin de contrer le spam, quel script devrai-je mettre en place ?

Merci d'avance de vos réponses
__________________
Il est plus facile de dire que de faire.
Handy-Mobil.fr - Animationumerique.com
{F-I} est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 10h15   #2
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
Tu as la solution classique captcha. (si c'est un petit site, c'est vraiment un buldozer)

Une solution efficace et simplement de rajouter une case à cocher (ça deroute deja 95% des spams), apres tu as les questions genre combien font 5+5 ou ecrire une phrase.
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 11h20   #3
Membre expérimenté
 
Inscription : décembre 2006
Messages : 947
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 947
Points : 563
Points : 563
Envoyer un message via MSN à {F-I}
Il s'agit d'un tout petit site d'une association

Je vais commencer avec la case à crocher, comment permettre vérifier avant l'envoi de mail ?

Si t'y connais, peux-tu peut-être (si tu veux bien) aller voir le site (cf ma signature) et dans la page de contact, voir le code source de la page et me montrer le code adapté à l'utilisation.

merci d'avance
__________________
Il est plus facile de dire que de faire.
Handy-Mobil.fr - Animationumerique.com
{F-I} est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 12h41   #4
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
La seule solution, c'est une verification coté serveur.

Cette protection est efficace tant que le spammeur n'etudie pas ton site precisément. Seulement pour un petit site, un spammeur n'ira jamais etudié ton code.
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 07h34   #5
Membre expérimenté
 
Inscription : décembre 2006
Messages : 947
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 947
Points : 563
Points : 563
Envoyer un message via MSN à {F-I}
Salut,

Merci de m'avoir répondu, en effet, on peut commencer à essayer avec ce module "case à crocher" pour un petit site.

Je m'y perds dans le codage :

Le codage de la page concerné (contact webmaster) :

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
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
<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoye']))
{
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $civilite		= stripslashes(trim($_POST['civilite']));
      $nom	     	= stripslashes(trim($_POST['nom']));
      $expediteur	= stripslashes(trim($_POST['email']));
      $sujet		= stripslashes(trim($_POST['sujet']));
      $message		= stripslashes(trim($_POST['message']));
    }
    else
    {
      $civilite		= trim($_POST['civilite']);
      $nom		    = trim($_POST['nom']);
      $expediteur	= trim($_POST['email']);
      $sujet		= trim($_POST['sujet']);
      $message		= trim($_POST['message']);
    }
 
    /* Expression régulière permettant de vérifier si le 
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
 
    /* Expression régulière permettant de vérifier qu'aucun 
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';
 
    /* Si le formulaire n'est pas posté de notre site on renvoie 
    * vers la page d'accueil */
    if($_SERVER['HTTP_REFERER'] != 'http://www.handy-mobil.fr/form_webmaster.php')
    {
      header('Location: http://www.handy-mobil.fr/');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($civilite) 
           || empty($nom) 
           || empty($expediteur) 
           || empty($sujet) 
           || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $expediteur))
    {
      $alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $expediteur) 
            || preg_match($regex_head, $nom) 
            || preg_match($regex_head, $sujet))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire (votre adresse e-mail) */
        $to = 'fabien-issartel@orange.fr';
		/* volontairement masqué pour éviter le spam*/
 
        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis www.handy-mobil.fr par '.$civilite.' '.$nom."\r\n\r\n";
        $msg .= 'Voici le message qui vous est adressé :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";
 
        /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
 
        /* Envoi de l'e-mail */
        if (mail($to, $sujet, $msg, $headers))
        {
            $alert = "envoi";
 
            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de 
            * renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 5);
 
            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de l\'e-mail';
        }
 
    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
    	<title>Handy-Mobil &gt; Contacts &gt; Webmaster</title> <!-- titre différent chaque page ? MAXI 100 caractères y compris les espaces -->
 
		<!-- Contenu -->
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta name="language" content="fr" />
		<meta http-equiv="Content-Language" content="fr" />
		<meta name="description" content="Page contact au webmaster du site" /> 
		<meta name="keywords" content="transport, handicap&eacute;, paralys&eacute;, Annemasse, Haute-Savoie, fauteil-roulant, Vall&eacute;e Verte, association, b&eacute;n&eacute;vole, personne, aide, d&eacute;placement, handicap&eacute;s, paralys&eacute;s, handicap&eacute;e, paralys&eacute;e, handicap" /> 
		<meta name="abstract" content="transport, handicap&eacute;, Annemasse, Haute-Savoie, b&eacute;n&eacute;vole" /> 
 
		<!-- Détails -->
		<meta name="author" content="ISSARTEL Fabien" />
		<meta name="reply-to" content="fabien-issartel@orange.fr" />
		<meta name="identifier-url" content="http://www.handy-mobil.fr" />
		<meta name="subject" content="Site d'association de transport handicap, Handy-Mobil" />
		<meta name="expires" content="never" />
		<meta name="copyright" content="" /> <!-- Nom et date du copyright du site -->
		<meta name="location" content="France, FRANCE" />
		<meta name="Date-Creation-ddmmyyyy" content="17102007" />
		<meta name="generator" content="NotePad++" />
		<meta http-equiv="VW96.OBJECT TYPE" content="Document" />
		<meta name="rating" content="general" />
 
		<!-- Destiné aux robots -->
		<meta name="robots" content="index, follow" />
        <meta name="revisit-after" content="30 days" />
 
		<!-- Fiche CSS et icône -->
		<link rel="stylesheet" media="screen" type="text/css" title="Fiche CSS Handy-Mobil" href="include/style.css" />
		<link rel="shortcut icon" href="images/favicon.ico" />
 
    </head>
	<body>
		<div id="cadre_principal">
			<div id="partie_header">
				<h1>Handy Mobil</h1>
				<h2>&raquo; des bénévoles à votre service !</h2>
				<?php include ("include/liens.php"); ?>
				<?php include ("include/compteur_visiteurs.php"); ?>
			</div>
			<div id="nav">
				<ul>
					<li><!-- Espace réservé aux photos --></li>
				</ul>
			</div>
			<div id="partie_corps">
			<h1>Formulaire de contact au webmaster.</h1>
			<br />
				<fieldset>
    				<legend>
					<?php
					if (isset($alert) && $alert == 'envoi')
					{
					echo 'Statut de l\'&eacute;mission du formulaire';
					$desactive_form = 0;
					}
					else
					{
						echo 'Veuillez remplir ce formulaire de contact';
					}
					?>
					</legend>
          					<?php
          						if (isset($alert) && $alert == 'envoi')
          						{
           							echo 'Le formulaire a &eacute;t&eacute; bien envoy&eacute;.';
									$desactive_form = 0;
          						}
								elseif(isset($alert))
								{
									echo '<p style="color:red">'.$alert.'</p>';
								}
								if (!isset($desactive_form))
								{
          					?>
 
							<form action="form_webmaster.php" method="post">
        						<p><label for="civilite">Civilité :&nbsp;</label>
        							<select id="civilite" name="civilite">
            							<option 
                							value="mr"
                								<?php 
                   									if (!isset($_POST['civilite']) || $_POST['civilite'] == 'Mr')
                   									{
                       									echo ' selected="selected"';
                   									}
               									?>
           									>
               								Monsieur
           								</option>
           								<option 
               								value="mme"
               									<?php 
                   									if (isset($_POST['civilite']) && $_POST['civilite'] == 'Mme')
                   									{
                  									     echo ' selected="selected"';
               										}
               									?>
            								>
                								Madame
            							</option>
            							<option 
                							value="mlle"
                								<?php 
                    								if (isset($_POST['civilite']) && $_POST['civilite'] == 'Mlle')
                   									{
                       									echo ' selected="selected"';
                   									}
               									?>
            								>
               									Mademoiselle
           								</option>
       								</select></p>
        						<p><label for="nom">Nom, prénom :&nbsp;</label>
        							<input type="text" id="nom" name="nom" 
        								value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>" 
       										 /></p>
								<p><label for="email">E-mail :&nbsp;</label>
       								<input type="text" id="email" name="email" 
        								value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>"
        									/></p>
        						<p><label for="sujet">Sujet :&nbsp;</label>
        							<input type="text" id="sujet" name="sujet" 
        								value="<?php echo (isset($_POST['sujet'])) ? $sujet : '' ?>"
        									/></p>
								<p><label for="message">Message :&nbsp;</label>
        							<textarea id="message" name="message" cols="50" rows="10"><?php echo (isset($_POST['message'])) ? $message : '' ?></textarea></p>
        						<p class="centrer"><input type="submit" name="envoye" value="Envoyer"/></p>
							</form>
							<?php
							}
							?>
				</fieldset>
			</div>
			<?php include ("include/footer.php"); ?>
		</div>
	</body>
</html>

Le codage qui est à rajouter :

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
# <?php
# // Récuperation des valeurs en GET ou en POST
# $try=(isset($_GET['try'])?$_GET['try']:(isset($_POST['try'])?$_POST['try']:''));
# $nobotv=(isset($_GET['nobotv'])?$_GET['nobotv']:(isset($_POST['nobotv'])?$_POST['nobotv']:''));
# $nobotc=(isset($_GET['nobotc'])?$_GET['nobotc']:(isset($_POST['nobotc'])?$_POST['nobotc']:''));
# $nobots=(isset($_GET['nobots'])?$_GET['nobots']:(isset($_POST['nobots'])?$_POST['nobots']:''));
#
# // Variable
# $nobot = time().'_'.rand(50000, 60000);
#
#
# if($try=='send')
# {
# // Ici Le visiteur soumissione le formulaire
# if(($nobotc!=md5($nobotv)) or ($nobotv=='') or ($nobots!=''))
# {
# echo "\n<br /> <b>Anti-Spam</b> : Vous n'avez pas cocher la case !";
# // ICI on réafiche votre formulaire, car le test a echoué
# // On réaffiche le formulaire
# include 'mon_formulaire.php';
# }
# else
# {
# // Le test est bon... On continue
# // Envoi du mail, insertion ds MySQL, ou ce que vs voulez...
# }
# }
# else
# {
# // Ici on affiche le formulaire, c'est l'affichage par défaut
# include 'mon_formulaire.php';
# }
# ?>
#
#
#
#
#
# CONTENU DE 'mon_formulaire.php'
#
# <form action="mapage.php" method="POST">
# <input type="hidden" name="try" value="send">
# <input type="hidden" name="nobotv" value="<?php echo $nobot; ?>">
#
# <!-- ICI tout ce que vous voulez dans votre formulaire HTML -->
#
#
# <!-- On Rajoute cette petite case à cocher en bas du formulaire -->
#
# <h3>Anti-Spam :</h3>
# <input type="checkbox" name="nobotc" value="<?php echo md5($nobot); ?>" />Je confirme que je suis un être humain, et pas un robot spammeur.
# <div style="position: absolute; visibility: hidden; left: -5000; top : -5000">
# <br><input type="checkbox" name="nobots" value="<?php echo time(); ?>" />I'm a Stupid Spam-Robot
# </div>
#
# </form>

Comment je les mets ensemble ?

Merci d'avance
__________________
Il est plus facile de dire que de faire.
Handy-Mobil.fr - Animationumerique.com
{F-I} est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h34.


 
 
 
 
Partenaires

Hébergement Web