5328 sujets

Sémantique web et HTML

Bonsoir à tous,

Je suis attaqué par beaucoup de spams via mon formulaire sur un petit siteweb basique et j'ai besoin d'un coup de pouce pour intégrer un captcha ou autre filtre afin de ne plus recevoir de spams...

Je dois avouer que le siteweb est fait de copiers/collers et d'idées de gauche à droite. Ma connaissance en HTML est basique et en PHP quasi inexistante malheureusement...

Mon code HTML pour le formulaire :


<form
              action="sendmail.php"
              method="POST"
              id="tm_contact_form"
              enctype="multipart/form-data">
              <div class="form-group">
                <input
                  type="text"
                  id="contact_nom"
                  name="contact_nom"
                  class="form-control rounded-0 border-top-0 border-right-0 border-left-0"
                  placeholder="Votre nom"
                  required="" />
              </div>
			  <div class="form-group">
                <input
                  type="text"
                  id="contact_prenom"
                  name="contact_prenom"
                  class="form-control rounded-0 border-top-0 border-right-0 border-left-0"
                  placeholder="Votre prénom"
                  required="" />
              </div>
              <div class="form-group-2">
                <input
                  type="email"
                  id="contact_email"
                  name="contact_email"
                  class="form-control rounded-0 border-top-0 border-right-0 border-left-0"
                  placeholder="Votre adresse mail"
                  required="" />
              </div>
			  <div class="form-group">
                <input
                  type="text"
                  id="contact_phone"
                  name="contact_phone"
                  class="form-control rounded-0 border-top-0 border-right-0 border-left-0"
                  placeholder="Votre numéro de téléphone"
                  required="" />
              </div>
              <div class="form-group-2 input-field">
                <select class="tm-select" name="contact_sujet" id="contact_sujet">
                  <option value="select">Sujet ?</option>
                  <option value="Coaching">Coaching</option>
                  <option value="Ateliers">Ateliers</option>
                  <option value="Commentaire">Commentaire</option>
                  <option value="Autre">Autre</option>
                </select>
              </div>

              <div class="tm-mb-5">
                <textarea
                  rows="10"
                  id="contact_message"
                  name="contact_message"
                  class="form-control rounded-0"
                  placeholder="Votre message"
                  required=""></textarea>
              </div>
              <div class="">
                <button
                  type="submit"
                  class="btn btn-secondary tm-btn-submit rounded-0">
                  Envoyer
                </button>
              </div>
            </form>


Mon code PHP pour envoyer le formulaire :


<?php

$url='http://www.manon-goeders.be/confirmation';
// using file() function to get content
$lines_array=file($url);
// turn array into one variable
$lines_string=implode('',$lines_array);
//output, you can also save it locally on the server
//echo $lines_string;

$EmailFrom = $_POST["contact_email"]; 
$EmailTo = "coaching@manon-goeders.be";
$Subject = "Contact via siteweb.";
$Nom = $_POST["contact_nom"];
$Prenom = $_POST["contact_prenom"]; 
$Email = $_POST["contact_email"];
$Phone = $_POST["contact_phone"]; 
$Sujet = $_POST["contact_sujet"];  
$Message = $_POST["contact_message"]; 

// validation
$validationOK=true;
if (!$validationOK) {
  echo "Error";
  exit;
}

// email body text
$Body = "";
$Body .= "Nom: ";
$Body .= $Nom;
$Body .= "\n";
$Body .= "Prénom: ";
$Body .= $Prenom;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Numéro de téléphone: ";
$Body .= $Phone;
$Body .= "\n";
$Body .= "Sujet: ";
$Body .= $Sujet;
$Body .= "\n";
$Body .= "Message: ";
$Body .= "\n";
$Body .= $Message;
$Body .= "\n";

// send email  
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
  echo $lines_string;
}
else{
  echo "Une erreur s'est produite à l'envoi de votre message.";
}
?>


Voilà ! Merci beaucoup à tous ceux qui vont me donner un coup de pouce !

Bonne soirée.
Modérateur
yo,

+1 pour le honeypot c'est transparent pas compliqué et souvent efficace.

et +1 aussi pour le recaptchaV3 de google est aussi invisible et il marche plutôt bien (la v2 demande une action de l'utilisateur comme un captcha normal)
Modérateur
@_laurent:
Perso, j'ai un captcha fait à base d'ascii art. Je me traine cet objet depuis des années et je n'ai jamais eu de souci.
Perso, le recaptcha de google, je ne suis pas fan (mais vraiment pas). Cela dit, c'est une technique parmi tant d'autres. Une technique intéressante et qui me semble redoutable :
- le pot de miel
- injection en JS d'une checkbox à cocher.

bien que je n'ai pas copié la css, le rendu du copié collé du site avec mon captcha : https://codepen.io/niuxe/pen/QWdGwGa
Modifié par niuxe (30 Mar 2021 - 13:37)
niuxe a écrit :
Perso, j'ai un captcha fait à base d'ascii art. Je me traine cet objet depuis des années et je n'ai jamais eu de souci.


Whaw c'est énorme, j'adore le rendu et quelle bonne idée tu as eu ! Smiley smile

Juste pour savoir, ce que vous appelez la technique du pot de miel, c'est ce qui consiste à placer dans le formulaire un champ (masqué en CSS avec display none) et s'il est rempli -> die(); ?

ça a l'air d'être "assez fiable" comme technique, mais si c'est très certainement facilement contournable. Côté accessibilité, on est d'accord que les lecteurs d'écrans n'accèdent pas aux infos en display: none; du coup, pas de souci de ce côté-là avec cette technique ?
Modérateur
Ah c'est pas bête l'ASCII Art !
Je ne doute vraiment pas de l'efficacité hein perso je prèfere utiliser des solution invisibles parceque les captcha me sortent par les yeux haha.
Je ne suis pas non plus très fan de google mais sur des gros wordpress avec desja des compte analytics, adwords etc branché dessus ca se met en 1 clic c'est assez confort.
Sinon oui le pot de miel ou l'injection Js restent mes techniques préférées.

Bonne journée !
Bonjour à tous et merci pour les différentes réponses et suggestions,

Comme expliqué, je ne suis pas très à l'aise en PHP et HTML.

Ce qu'il me faudrait est un exemple ou un code que je peux essayer de comprendre et adapter à ma situation, c'est pour cela que je nécessite vôtre aide.

Merci d'avance,

JP