ReCaptcha et PHP

Fermé
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 - Modifié le 22 avril 2017 à 23:38
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 - 2 mai 2017 à 13:12
Bonjour,

Je ne comprends pas comment intégré dans ma page contact.php, le code pour avoir un reCaptcha.
Dans tous les forums, vidéos, site de google, ou l'on parle de reCaptcha et de PHP, on parle de code html (voir image (balise <head>)).



Ma page contact est en php et pas en html.
Pourquoi parle t'on de code html alors que c'est pour du php ?
Quelqu'un pourrait me dire comment mettre les bons codes aux bons endroits (je n'ai pas de page en html sur mon site).

Merci d'avance pour vos conseils...

24 réponses

valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 1 mai 2017 à 17:24
J'ai supprimé
if(isset($_POST['submit']) && !empty($_POST['submit'])):
else:
$errMsg = '';
$succMsg = '';
endif;


1) Je ne reçois pas de mail alors qu'un message me dit le contraire (avec ou sans avoir coché le captcha)
2) Ou dois-je mettre le code
print_r($responseData);
?

Voici mon code:
<?php

if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']) ||
empty($_POST['phone']) ||
empty($_POST['sex']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "Pas de données envoyées!";
return false;
}
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
//your site secret key
$secret = 'ma clé secrète';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success):

//contact form submission code
$name = $_POST['name'];
$sex = $_POST['sex'];
$phone = $_POST['phone'];
$email_address = $_POST['email'];
$message = $_POST['message'];

$to = 'mon adresse mail';
$email_subject = "site web";
$email_body = "Site web.\n\n$sex $name\n\nEmail: $email_address\n\nTéléphone: $phone\n\nMessage:\n$message";
$headers = "From: robot@adresse du site web\n";
mail($to,$email_subject,$email_body,$headers);

return true;

else:
$errMsg = 'Erreur de vérification, veuillez réessayer.';
endif;
else:
$errMsg = 'Merci de cocher la case.';
endif;

?>
1
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
1 mai 2017 à 18:10
peux-tu répondre au #15?
que fais-tu ensuite (ailleurs) avec $errMsg?
quel est le message que tu reçois t'indiquant que le mail est envoyé? d'où vient ce message?
0
Utilisateur anonyme
23 avril 2017 à 00:16
Alors ça se voit que tu débutes, car le PHP génère du HTMl, enfin plus précisément il génère du texte, qui une fois envoyé, et interprété par défaut par le navigateur comme du HTML, à moins que l'header est changé.

Donc il suffit de coller les balises comme indiquer sur Google, si tu ne sais pas comment faire, montre nous ton code pour qu'on te l'explique.
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 23 avril 2017 à 08:52
Merci beaucoup ZeNairolf, mais avant d'avoir posé la question, j'ai fait quelques recherches avant (c'est la moindre des choses).
Effectivement, je débute.

Mon soucis est que dans ma page, je n'ai pas de balise <head>, d’où mon soucis pour mettre les lignes de codes de proposés par google...

<?php 

include_once('templates/page_head.php');

?>
<section class="contact">


<div class="container">
<div class="row">
<div class="col-md-12">
<div class="contact-form">
<div id="success" class="col-md-10"></div>
<form name="contactForm" id="contactForm" method="POST" action="mail/mail.php">
<div class="col-md-6">
<div class="row control-group">
<div class="form-group col-xs-12">
<label>Civilité</label>
<select class="form-control" name="sex" id="sex">
<option value="Mr">Monsieur</option>
<option value="Mm">Madame</option>
<option value="Melle">Mademoiselle</option>
</select>
</div>
<div class="form-group col-xs-12">
<label>Nom</label>
<input type="text" name="name" class="form-control" placeholder="Votre Nom" id="name" required>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12">
<label>Email</label>
<input type="email" name="email" class="form-control" placeholder="Votre Adresse Mail" id="email" required>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12">
<label>Téléphone</label>
<input type="text" name="phone" class="form-control" placeholder="Votre téléphone" id="phone" required>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row control-group">
<div class="form-group col-xs-12">
<label>Message</label>
<textarea rows="12" name="message" class="form-control" placeholder="Votre Message" id="message" required></textarea>
</div>
</div>
</div><br>
<div class="row">
<div class="form-group col-xs-11 text-right">
<button type="submit" id="btnSubmit" class="btn btn-info">Envoyer</button>
</div>
</div>
<br>
</form>
</div>
</div>
</div>
</div>


</section>

<?php

include_once('templates/page_footer.php');

?>
0
Utilisateur anonyme
23 avril 2017 à 09:04
A vrai dire tu as un head, mais il se trouve sans doute dans templates/page_head.php que tu inclus en début de page, sinon le script tu peux toujours le mettre avant
<section class="contact">
, où à la fin, car si je me trompe pas le script se lance après le chargement de la page, donc peut importe.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
23 avril 2017 à 08:55
Bonjour,

Le script JS de Google est à insérer dans la partie <head> de ta page, qu'elle soit en PHP ou en HTML.

Ensuite, l'autre code est à insérer dans la partie <form> de ton formulaire, qui est probablement en HTML, même au sein d'une page PHP.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
23 avril 2017 à 09:01
Le temps d'écrire ma réponse, tu as fourni ton code.
Il faut commencer par apprendre les bases, c'est à dire la structure d'une page HTML ou en PHP.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 23 avril 2017 à 09:17
Ce n'est pas moi qui ai créer mon site web, mais mon ami webmaster qui est aujourd'hui décédé. Je me trouve donc tout seul dans ma campagne pour essayer d'apporter des modifs à mon site.
Effectivement, il y a bien une balise head dans templates/page_head.php.
Je vais apporter les modifications et reviens vers vous si cela ne fonctionne pas.
Merci pour votre aide...
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 23 avril 2017 à 11:06
Je reviens vers vous après avoir mis les codes indiqué par google SAUF celui de la réponse car je ne comprends pas.

1) J'ai mis le code <script src='https://www.google.com/recaptcha/api.js'></script> avant la balise </head>
2) J'ai mis le code <div class="g-recaptcha" data-sitekey="ma clé publique"></div> à l'emplacement ou je veux voir le captcha à l'intérieur de la balise <form>
=> le captcha fonctionne.

N'ayant pas utiliser de réponse (même si la captcha fonctionne), je reçois le message même si je n'ai pas coché la case (et c'est normal).

Pourriez-vous m'expliquer comment mettre le code réponse dans mon fichier car je ne comprends pas (https://translate.google.fr/translate?sl=en&tl=fr&js=y&prev=_t&hl=fr&ie=UTF-8&u=https%3A%2F%2Fdevelopers.google.com%2Frecaptcha%2Fdocs%2Fverify&edit-text=&act=url%29 ?



Merci encore pour votre aide ;-)
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 23 avril 2017 à 15:31
Je précise qu'il faut que le mail soit envoyé qui SI le captcha à été validé...
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
26 avril 2017 à 08:25
Bonjour à tous et toutes,
Une idée sur mon problème ?
Merci
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
27 avril 2017 à 15:07
Bonjour à tous et toutes,
Y a t-il quelqu'un qui puisse m'aider ?
Merci
0
Utilisateur anonyme
27 avril 2017 à 18:01
Normalement il y a un champ g-recaptcha-response dans ta variable $_POST, si je me trompe pas la variable c'est $_POST["g-recaptcha-response"], il faut vérifier si il est bon.
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
28 avril 2017 à 21:47
Merci ZeNairolf, c'est bien mon problème:
Comment faire pour vérifier et valider l'envoi que si et seulement si le captcha est bien validé.

Voici mon code d'origine (sans recaptcha):
<?php

if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']) ||
empty($_POST['phone']) ||
empty($_POST['sex']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "Pas de données envoyées!";
return false;
}

$name = $_POST['name'];
$sex = $_POST['sex'];
$phone = $_POST['phone'];
$email_address = $_POST['email'];
$message = $_POST['message'];

$to = 'mon adresse mail';
$email_subject = "Envoi depuis le site";
$email_body = "Site web.\n\n$sex $name\n\nEmail: $email_address\n\nTéléphone: $phone\n\nMessage:\n$message";
$headers = "From: robot@adresse de mon site web\n";
mail($to,$email_subject,$email_body,$headers);

return true;
?>


J'ai essayer plusieurs chose mais mon mail n'est même plus envoyé maintenant.

Voici le code auquel j'ai apporter modifications:
<?php

if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']) ||
empty($_POST['phone']) ||
empty($_POST['sex']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "Pas de données envoyées!";
return false;
}
if(isset($_POST['submit']) && !empty($_POST['submit'])):
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
//your site secret key
$secret = 'ma clé secrète';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success):


//contact form submission code
$name = $_POST['name'];
$sex = $_POST['sex'];
$phone = $_POST['phone'];
$email_address = $_POST['email'];
$message = $_POST['message'];

$to = 'mon adresse mail';
$email_subject = "Envoi depuis le site";
$email_body = "Site web.\n\n$sex $name\n\nEmail: $email_address\n\nTéléphone: $phone\n\nMessage:\n$message";
$headers = "From: robot@adresse de mon site web\n";
mail($to,$email_subject,$email_body,$headers);

return true;

else:
$errMsg = 'Erreur de vérification, veuillez réessayer.';
endif;
else:
$errMsg = 'Merci de cocher la case.';
endif;
else:
$errMsg = '';
$succMsg = '';
endif;


?>



Auriez-vous une idée sur les erreurs rencontrés (pas d'envoi et info comme quoi le message est bien envoyé même si le captcha n'est pas coché) ?

Mil merci pour votre aide...
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
1 mai 2017 à 14:38
tu as choisi d'utiliser $errMsg et $succMsg.
avant cela, en cas d'erreur, tu faisais:
echo "Pas de données envoyées!";
return false;

pourquoi changer?
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
1 mai 2017 à 15:36
ceci me semble superflu:
if(isset($_POST['submit']) && !empty($_POST['submit'])):
else:
    $errMsg = '';
    $succMsg = '';
endif;
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
1 mai 2017 à 10:05
Personne pour me venir en aide ? ;-)
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
Modifié le 1 mai 2017 à 10:35
bonjour, qu'affiche le php?
peux-tu faire
print_r($responseData);
?
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 1 mai 2017 à 17:02
Bonjour,

Merci pour ton aide.
Les msg se sont croisés.

J'ai changé les codes car j'ai essayer 2 tutos différents sur le web.

Il faut que je mette
print_r($responseData);
dans ma page php ? Si oui, à quel endroit ?
Merci
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
1 mai 2017 à 17:04
je pense que tu dois suivre ma suggestion en #16.
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 1 mai 2017 à 18:39
Merci yg_be,

Désolé mais mon ami webmaster qui à fait le site web est décédé. C'est pour cela que j’essaie de le faire évoluer tant bien que mal et malgré le trop peu de connaissance dans ce domaine.

J'ai répondu "J'ai changé les codes car j'ai essayer 2 tutos différents sur le web".

Je reçois le message "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais."
Ce message viens du fichier "script.js".

Qu'est-ce que fais-tu ensuite (ailleurs) avec $errMsg? Je ne sais pas... :-(
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
1 mai 2017 à 19:17
Je propose d'éliminer les $errMsg, et de les remplacer par la logique précédente (qui, je suppose, fonctionnait bien):
donc, remplace (deux fois)
$errMsg = 'message d'erreur';

par
echo "message d'erreur";
return false;

Tant que tu y es, ajoute
print_r($responseData)
; quand tu arrives à l'erreur "Erreur de vérification, veuillez réessayer.". Cela permettra d'e savoir plus si cela se produit.
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15 > yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024
1 mai 2017 à 19:27
Merci, je fais les essais ;-)
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
1 mai 2017 à 19:37
Je n'ai strictement aucun retour.
Ni mail, ni affichage du $responseData.
Néanmoins, il faut savoir que le captcha fonctionne bien car tant que je n'ai pas cocher la case, et cocher les bonnes images, celui n'affiche pas sa validation avec son encoche verte.
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
1 mai 2017 à 19:53
ajoute
echo "email envoyé";
avant
return true;

teste à nouveau, et envoie ton code modifié.
le problème est peut-être causé par les modifications que tu as faites dans l'autre fichier, comme tu expliques en #7.
peux-tu partager ce fichier avant et après tes modifications?
quand tu écris "Je n'ai strictement aucun retour", veux-tu dire que c'est comme si rien ne se passait quand tu cliques sur un bouton (quel bouton)?
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 1 mai 2017 à 20:27
"email envoyé" ne s'affiche pas.
En fait rien n'a changé...

Voici le code ajouter au <head> de mon formulaire:
<script src='https://www.google.com/recaptcha/api.js'></script>

Voici le code ajouter au <form> de mon formulaire:
<div class="g-recaptcha" data-sitekey="ma clé publique"></div>


Voici le code coté serveur:
<?php

if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']) ||
empty($_POST['phone']) ||
empty($_POST['sex']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "Pas de données envoyées!";
return false;
}

//contact form submission code
$name = $_POST['name'];
$sex = $_POST['sex'];
$phone = $_POST['phone'];
$email_address = $_POST['email'];
$message = $_POST['message'];


if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
//your site secret key
$secret = 'ma clé secrète';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success):


//Envoi du mail
$to = 'Mon adresse mail';
$email_subject = "Site web";
$email_body = "Site web.\n\n$sex $name\n\nEmail: $email_address\n\nTéléphone: $phone\n\nMessage:\n$message";
$headers = "From: robot@adresse de mon site web\n";
mail($to,$email_subject,$email_body,$headers);
echo "email envoyé";
return true;

else:
print_r($responseData);
return false;
endif;
else:
echo "Merci de cocher la case.";
return false;
endif;

?>


Seul ce qui est en gras à été ajouter par rapport au fichier d'origine (et fonctionnel)
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
Modifié le 1 mai 2017 à 21:22
peux-tu partager le fichier avec le formulaire, avant et après tes modifications?
quand tu écris "Je n'ai strictement aucun retour", veux-tu dire que c'est comme si rien ne se passait quand tu cliques sur un bouton (quel bouton)? ou bien reçois-tu une page blanche en retour?
peux-tu remplacer l'ensemble de ton fichier php serveur par un petit texte genre "coucou, c'est moi'", pour voir ce que cela donne?
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 1 mai 2017 à 22:29
<?php 
include_once('templates/page_head.php');
?>
<section class="contact">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="contact-form">
<div id="success" class="col-md-10"></div>
<form name="contactForm" id="contactForm" method="POST" action="mail/mail.php">
<div class="col-md-6">
<div class="row control-group">
<div class="form-group col-xs-12">
<label>Civilité</label>
<select class="form-control" name="sex" id="sex">
<option value="Mr">Monsieur</option>
<option value="Mm">Madame</option>
<option value="Melle">Mademoiselle</option>
</select>
</div>
<div class="form-group col-xs-12">
<label>Nom</label>
<input type="text" name="name" class="form-control" placeholder="Votre Nom" id="name" required>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12">
<label>Email</label>
<input type="email" name="email" class="form-control" placeholder="Votre Adresse Mail" id="email" required>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12">
<label>Téléphone</label>
<input type="text" name="phone" class="form-control" placeholder="Votre téléphone" id="phone" required>
</div>
</div>
<div class="g-recaptcha" data-sitekey="ma clé publique"></div>
</div>
<div class="col-md-6">
<div class="row control-group">
<div class="form-group col-xs-12">
<label>Message</label>
<textarea rows="12" name="message" class="form-control" placeholder="Votre Message" id="message" required></textarea>
</div>
</div>
</div><br>
<div class="row">
<div class="form-group col-xs-11 text-right">
<button type="submit" id="btnSubmit" class="btn btn-info">Envoyer</button>
</div>
</div>
<br>
</form>
</div>
</div>
</div>
</div>
</section>
<?php

include_once('templates/page_footer.php');

?>


La balise <head> se trouve dans le fichier page_head.php.
Le seul code ajouter dans ce fichier est
<div class="g-recaptcha" data-sitekey="ma clé publique"></div>

Mon formulaire lorsqu'il fonctionne affiche :
- envoi le mail
- efface les champs rempli par l'utilisateur
- affiche un message ( "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais.")

Quand je dis : Je n'ai strictement aucun retour", c'est que je n'ai :
- pas le message "email envoyé" d'affiché
- pas de réception du mail
- Pas d'affichage de la variable $responseData.

Seul les champs sont effacés et le message "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais." affiché.
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
1 mai 2017 à 23:53
peut-être en déplaçant
<div class="g-recaptcha" data-sitekey="ma clé publique"></div>
juste avant
</form>
?
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15 > yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024
2 mai 2017 à 07:36
Bonjour yg_be et bonjour à tous aussi ;-)
Déplacer le captcha à cet endroit ne fait que le déplacer graphiquement. Il est à l'intérieur des balises FORM et c'est le principal (c'est ce que dit google)...
0
yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024 1 474
2 mai 2017 à 07:55
peut-être faut il également modifier ton script script.js?
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15 > yg_be Messages postés 22864 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 juin 2024
2 mai 2017 à 09:14
Le HTML, le PHP ça va encore mais alors là, c'est du Javanais...
Je vais m'adresser à un pro dans la grande ville proche de chez moi si j'en trouve un (je ne dis pas que vous n'en êtes pas ;-) ) mais ce sera plus simple pour moi.
Mil merci pour votre aide et très belle journée à vous...
0
jordane45 Messages postés 38204 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 juin 2024 4 676
2 mai 2017 à 11:00
Bonjour,

Bon... arrêtons (arrêtez de vrais-je dire...) de partir dans tous les sens et de taper "au pif" ....

COmmence par modifier ton code côté serveur comme ceci :
<?php
//------------------------------------------------------------------
//activation affichage des erreurs
//------------------------------------------------------------------
error_reporting(E_ALL);
ini_set('display-errors','on');

//------------------------------------------------------------------
//le temps des tests:
//affichage des variables POST
//------------------------------------------------------------------
  echo "<pre> POST :<br>";
  print_r($_POST);
  echo "</pre>";

//------------------------------------------------------------------
//récupération PROPRE des variables AVANT de les utiliser
//------------------------------------------------------------------
$name = !empty($_POST['name']) ? $_POST['name'] : NULL;
$email_address = !empty($_POST['email']) && filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ? $_POST['email'] : NULL;
$message = !empty($_POST['message']) ? $_POST['message'] : NULL;
$phone = !empty($_POST['phone']) ? $_POST['phone'] : NULL;
$sex = !empty($_POST['sex']) ? $_POST['sex'] : NULL;
$recaptcha = !empty($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : NULL;

 if(!$name  ||!$email_address || !$message  || !$phone  ||  !$sex){
    echo "Pas de données envoyées!";
    $result =  false;
  }
    
 
 //------------------------------------------------------------------
 // Traitement du formulaire
 //------------------------------------------------------------------
 if($recaptcha){
    //your site secret key
    $secret = 'ma clé secrète';
    //get verify response data
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$recaptcha);
    $responseData = json_decode($verifyResponse);
    
    //pour tester :
     print_r($responseData);
    
    if($responseData->success){  
   
     //Envoi du mail
     $to = 'Mon adresse mail';
     $email_subject = "Site web";
     $email_body = "Site web.\n\n$sex $name\n\nEmail: $email_address\n\nTéléphone: $phone\n\nMessage:\n$message";
     $headers = "From: robot@adresse de mon site web\n";
     if(mail($to,$email_subject,$email_body,$headers)){
       echo "email envoyé";
       $result =  true;  
     }else{
       echo "Erreur lors de l'envoie de l'email ";
       $result =  false;
     }
       
   }else{
      echo "Merci de cocher la case.";
     $result =  false;
   } 
 }else{
   echo " recaptcha est vide !";
 } 
 
 return $result;
?>

et dis nous ce que ça t'affiche.



Par contre... ceci :
 //get verify response data
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$recaptcha);
    $responseData = json_decode($verifyResponse);

me parait étrange ....
Il me semble que ce n'est pas la procédure actuelle utilisée dans la documentation...
Regarde ce tuto :
https://fr.jeffprod.com/blog/2014/installez-le-nouveau-captcha-de-google-sur-votre-site-en-php.html


.



0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
Modifié le 2 mai 2017 à 11:19
Bonjour et merci jordane45,

J'ai modifié comme indiqué.
- Le captcha n'est validé que lorsque je clic sur les bonnes image (comme avant).

Lorsque j’envoie le mail (clic sur "envoyer"):
- Les champs du formulaire s’effacent
- Le message "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais." s'affiche
- Le mail n'est pas envoyé car je ne le reçois pas.
0
jordane45 Messages postés 38204 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 juin 2024 4 676
2 mai 2017 à 11:25

- Le message "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais." s'affiche

heuuu... tu peux me dire à quel endroit se trouve, dans ton code, le texte du message en question ???
Car dans le PHP que tu nous montres ..... tu peux avoir éventuellement un
echo "email envoyé";

mais c'est tout !

Es-tu sûr de modifier le bon fichier ????
celui qui est appelé dans ton FORM ... à savoir : mail/mail.php ?
0
valttt Messages postés 269 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 31 janvier 2024 15
2 mai 2017 à 11:37
Comme je l'ai indiqué plus haut, ce message vient du fichier script.js.
Je n'en sais pas comment celui-ci est utilisé.
Oui, je modifie le bon fichier ;-)
0
jordane45 Messages postés 38204 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 juin 2024 4 676
2 mai 2017 à 11:41
Alors il nous faut le contenu de ton fichier script.js
0