Comment créer un captcha google dans un formulaire ?
reCAPTCHA Formulaire Google
1. Préambule:
Compatible: PHP 5 PHP 7
ce script met en place le reCAPTCHA Google dans un exemple de formulaire contact.
C'est le plus souvent là que l'on utilise un captcha quel qu'il soit.
Cependant vous pouvez aussi utiliser le reCAPTCHA, n'importe où, pour valider une réponse à une action donnée.
Notre exemple est basé sur la version 2 du nouveau reCAPTCHA, censé protégé votre site du spam et donc éviter de lourdes pénalité en terme de SEO.
Celà dit, aucune méthode n'est fiable à 100 %.
De plus, l'expérience utilisateur est parfois un peu fastidieuse, lorsqu'il s'agit de confirmer en cliquant sur une série d'images.
Et ce n'est pas parceque la solution est implémentée sur votre site, que c'est pour toujours, c'est un peu comme les masques, dans 2 mois ou un an, l'API peut changer ou devenir obsolète.
C'est pourquoi nous vous proposons une alternative, avec un autre script, sans API, donc directement implémenté côté serveur.
Voir: >> Captcha Images Alpha
+ un script en PHP totalement sécurisé pour 10 €
Voir: >> Script Captcha sécurité
Les fichiers source vous permettent en 5 minutes, de charger un répertoire TEST sur votre site.
Utilisez un libellé qui vous permettra d'identifier facilement le site à l'avenir.
Dans notre exemple : Mon Libellé
Type de reCAPTCHA
Sélectionnez version 2 Case à cocher
Domaines
Ajoutez le nom de votre site
Propriétaires
Idéalement, si vous êtes connecté à la console, avec le compte GMAIL sous lequel votre site est enregistré dans la Search console, l'adresse mail du propriétaire sera directement affichée.
Récupération des clés Site Key et Secret Key.
Dès l'enregistrement du formulaire, votre site est ajouté et les clés reCAPTCHA générées sont affichées.
La clé du site et la clé secrète seront à renseigner dans le Script reCAPTCHA Google ci-dessous.
Script reCAPTCHA Google
Scipt complet
<?php
define('SITE_NOM', 'mon-site.com'); // Nom de votre site
define('MAIL_CONTACT', 'admin@mon-site.com'); // Adresse mail de votre site
?>
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
<a id="contact-site"></a>
<h1>Test reCAPTCHA Google :</h1>
<?php
if (isset($_POST['envoie_gg_captcha']))
{
$name;$email;$comment;$captcha;
if(isset($_POST['name'])){
$name=$_POST['name'];
}
if(isset($_POST['email'])){
$email=$_POST['email'];
}
if(isset($_POST['comment'])){
$comment=$_POST['comment'];
}
if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha){
$Message_retour = "Veuillez cocher la case du captcha.";
}
$secretKey = "ICI_Votre-clé-secrète-Google";
// envoi la demande au serveur
$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secretKey) . '&response=' . urlencode($captcha);
$response = file_get_contents($url);
$responseKeys = json_decode($response,true);
// Doit renvoyer JSON avec succès comme vrai
if($responseKeys["success"]) {
$headerMail = "MIME-Version: 1.0\r\n";
$headerMail .= "Content-type: text/html; charset=UTF-8\r\n";
$headerMail .='Content-Transfer-Encoding: 8bit'."\r\n";
$headerMail.="From: $email \r\n";//pour répondre au message
$mailSujet = "Contact depuis ".SITE_NOM." par: " . $name;
$mailMessage = "
E-mail message : ".$email."
Nom : ".$name."
Message : ".nl2br($comment)."
";
mail(MAIL_CONTACT,$mailSujet,nl2br($mailMessage),$headerMail);
$Message_retour = "Votre message a bien été envoyé. PS: Le mail n'est pas envoyé sur cette démo ...";
} else {
$Message_retour = "Vérifiez les informations Ou cochez la case du captcha .";
}
}
?>
<br /> <br />
<div id="message"><span style="color:#ff0000;"><?php echo $Message_retour ?></span></div>
<br />
<form method="post" action="#contact-site" id="comment_form">
<label for="name"><span style="color:#ff0000;">*</span> Nom</label>
<input name="name" id="name" type="text" class="" value="<?php echo $name; ?>" required="">
<br /> <br />
<label for="email"><span style="color:#ff0000;">*</span> Adresse e-mail</label>
<input name="email" id="email" type="email" class="" value="<?php echo $email; ?>" required="">
<br /> <br />
<label for="comment"><span style="color:#ff0000;">*</span> Message</label>
<?php if(get_magic_quotes_gpc()) {$comment = stripslashes($comment);} ?>
<textarea name="comment" id="comment" rows="4" style="height: 80px !important;" class="" required=""><?php echo $comment; ?></textarea>
<br /> <br />
<div class="g-recaptcha" data-sitekey="ICI_Votre-cle-Site-Google"></div>
<br />
<input type="submit" id="submit" name="envoie_gg_captcha" class="" value="Envoyer">
</form>
<br />
<br />