Robots spammeurs - SOS

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Robots spammeurs - SOS

Re: Robots spammeurs - SOS

par @rthur » 20 nov. 2018, 10:12

Code : Tout sélectionner

$un = "1"; $deux = "2"; $trois = "3"; $quatre = "4"; $cinq = "5"; $six = "6"; $sept = "7"; $huit = "8"; $neuf = "9"; if (stripos($_POST["objet_poster"], $un) || stripos($_POST["objet_poster"], $deux) || stripos($_POST["objet_poster"], $trois) || stripos($_POST["objet_poster"], $quatre) || stripos($_POST["objet_poster"], $cinq) || stripos($_POST["objet_poster"], $six) || stripos($_POST["objet_poster"], $sept) || stripos($_POST["objet_poster"], $huit) || stripos($_POST["objet_poster"], $neuf) === false) {
Ouh là quelle horreur :-D
C'est le moment de regarder le fonctionnement de preg_match() et des expressions régulières pour remplacer tout ce code par 1 ligne : http://php.net/preg_match

Ensuite, sur le fond effectivement interdire les chiffres me semblent très radical comme approche

Re: Robots spammeurs - SOS

par two3d » 20 nov. 2018, 08:30

C'est dommage d'interdire des chiffres car vous allez perdre des messages qui sont pas du spam.

Votre condition doit comporter des parenthèses (au tout début et avant "=== false"):
if ((stripos($_POST["objet_poster"], $un) || stripos($_POST["objet_poster"], $deux) || stripos($_POST["objet_poster"], $trois) || stripos($_POST["objet_poster"], $quatre) || stripos($_POST["objet_poster"], $cinq) || stripos($_POST["objet_poster"], $six) || stripos($_POST["objet_poster"], $sept) || stripos($_POST["objet_poster"], $huit) || stripos($_POST["objet_poster"], $neuf)) === false)	{ 
car là il me semble que vous faite que demander si
stripos($_POST["objet_poster"], $neuf) === false
au final

Re: Robots spammeurs - SOS

par Gload » 20 nov. 2018, 01:39

Bonsoir,

J'ai cherché la solution, du coup je fonctionne avec la variable stripos.
Par contre, elle fonctionne bien avec des lettres mais pas avec des chiffres...
Vu que les robots laissent des messages en objet avec des codes de ce style "4478755", je voudrais interdire les chiffres dans le champ objet.

Voici ma requête:

Code : Tout sélectionner

$un = "1"; $deux = "2"; $trois = "3"; $quatre = "4"; $cinq = "5"; $six = "6"; $sept = "7"; $huit = "8"; $neuf = "9"; if (stripos($_POST["objet_poster"], $un) || stripos($_POST["objet_poster"], $deux) || stripos($_POST["objet_poster"], $trois) || stripos($_POST["objet_poster"], $quatre) || stripos($_POST["objet_poster"], $cinq) || stripos($_POST["objet_poster"], $six) || stripos($_POST["objet_poster"], $sept) || stripos($_POST["objet_poster"], $huit) || stripos($_POST["objet_poster"], $neuf) === false) {
Mais ça ne fonctionne pas avec les chiffres.. uniquement avec des lettres.. pouvez-vous m'aider ?

Re: Robots spammeurs - SOS

par @rthur » 19 nov. 2018, 15:15

Re: Robots spammeurs - SOS

par two3d » 19 nov. 2018, 11:50

Je ne sais pas installé recaptcha par contre je fait une vérif toute bête pour ne plus avoir se genre de message, j’interdis d'envoyer le formulaire si le message contient une URL

Re: Robots spammeurs - SOS

par or 1 » 18 nov. 2018, 20:18

pour le champ caché à ne pas remplir et masqué en css, je mettrais plutôt un nom très courant comme email.

Robots spammeurs - SOS

par Gload » 18 nov. 2018, 15:14

Bonjour,

Je viens vers vous car je suis désespéré :(
Je suis prestataire de service de ce fait, mon serveur est exposé publiquement à divers clients.

Ma fonction première n'est pas de faire du développement d'où ma demande...

Bref, voici mon souci :

j'ai un formulaire de demande de contact avec mes clients, et... je vous laisse regarder la capture d'écran... :priere:
Image

J'ai essayé de mettre en place un captcha classique, un recaptcha Google, et même le fameux "honeypot" pour induire le robot en erreur mais rien y fait.
Concernant le Recaptcha Google, je ne suis pas sûr d'arriver correctement à l'installer car il me semble qu'il est très efficace.

Pouvez-vous m'aider, s'il vous plaît ? Je désespère (et ne vous fiez pas à l'IP, elle change constamment... j'ai 150 demandes comme ça par jour...)

Merci à vous.

(PS : voici mon code de formulaire avec la requête PHP avec ma "protection" actuelle (qui fonctionne pas).
L'input "vente" est l'input cachée, selon la méthode Honeypot) :

Code : Tout sélectionner

<?php date_default_timezone_set('Europe/Paris'); $date = ''.date('d/m/Y').' à '.date('H:i:s').''; if(isset($_POST['vente']) && $_POST['vente'] != '') die(); if($_GET[action]=="enregistrer") { $a = addslashes($_POST["artiste_poster"]); $b = addslashes($_POST["email_poster"]); $c = addslashes($_POST["objet_poster"]); $d = addslashes($_POST["titre_poster"]); $e = $_SERVER['REMOTE_ADDR']; $f = ''.date('d/m/Y').' à '.date('H:i:s').''; if(!empty($a) AND !empty($b)) { $req = $bdd->prepare('INSERT INTO `contact` (pseudo, email, objet, message, ip, date) VALUES ("'.$a.'", "'.$b.'", "'.$c.'", "'.$d.'", "'.$e.'", "'.$f.'")'); echo('<meta http-equiv="refresh" content="0;URL=contact_ok.php"> '); $req->closeCursor(); $req->execute(); header("Location: ?m=1"); } else { header("Location: ?m=2"); } } if($_GET[m]=="1") { echo('<center><div class="alert alert-success" style="width:750px;"><center>La news a été ajoutée !</center></div></center>'); } if($_GET[m]=="2") { echo('<center><div class="alert alert-error" style="width:750px;"><center><b>ATTENTION !</b> Veuillez remplir tous les champs !</center></div></center>'); } ?> <form class="light_bg comment-form" action="?action=enregistrer" method="POST"> <div class="kode-left-comment-sec"> <input placeholder="vente*" style="text-transform: none" name="vente" type="hidden" value="" data-default="Vente*" size="30"> <div class="kf_commet_field"> <input placeholder="Nom et prénom*" style="text-transform: none" name="artiste_poster" type="text" value="" data-default="Name*" size="30" required> </div> <div class="kf_commet_field"> <input placeholder="Adresse e-mail valable*" style="text-transform: none" name="email_poster" type="text" value="" data-default="Email*" size="30" required> </div> <div class="kf_commet_field" style="width: 100%" > <input placeholder="Objet (recrutement, problème, bug ?)*" style="text-transform: none" name="objet_poster" type="text" value="" data-default="Website" size="30" required> </div> </div> <div class="kode-textarea"> <textarea placeholder="Message*" style="text-transform: none" name="titre_poster" required></textarea> </div> <br> <center> <p class="form-submit" style="margin-top:10px;"><input name="envoyer_musique" type="submit" class="submit btn-1 theme-bg" value="Envoyer"></p></center> </form>