IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

anti-spam


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 991
    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

  2. #2
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    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.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 991
    Par défaut
    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

  4. #4
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    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.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 991
    Par défaut
    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 : 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
    <?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 : 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
    # <?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

Discussions similaires

  1. Anti spam
    Par wodel dans le forum Réseau
    Réponses: 1
    Dernier message: 27/11/2005, 12h43
  2. [Sécurité] Anti spam
    Par mic79 dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 14h49
  3. Anti Spam sous RedHat
    Par TuxP dans le forum Réseau
    Réponses: 3
    Dernier message: 03/02/2004, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo