Vérification reCAPTCHA
Résolu
info_php
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
info_php Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
info_php Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je débute dans la programmation en php et j'essaye de faire un formulaire d'inscription avec une vérification reCAPTCHA, cependant, je n'arrive pas à rendre obligatoire le fait d'utiliser le recaptcha, mon formulaire s'envoi même si le captcha n'est pas rempli par l'utilisateur ..
Voici mon code php :
et voici mon code html pour le reCAPTCHA :
Je n'arrive vrmt pas a trouver la solution, j'espère que qql pourra m'aider
Merci d'avance !!
EDIT : Ajout des BALISES DE CODE
Je débute dans la programmation en php et j'essaye de faire un formulaire d'inscription avec une vérification reCAPTCHA, cependant, je n'arrive pas à rendre obligatoire le fait d'utiliser le recaptcha, mon formulaire s'envoi même si le captcha n'est pas rempli par l'utilisateur ..
Voici mon code php :
require('recaptcha/autoload.php'); if(isset($_POST['submitpost'])) { if(isset($_POST['g-recaptcha-response'])) { $recaptcha = new \ReCaptcha\ReCaptcha('clé secrete'); $resp = $recaptcha->setExpectedHostname('recaptcha-demo.appspot.com')->verify($_POST['g-recaptcha-response']); if ($resp->isSuccess()) { var_dump('Captcha Valide'); } else { $errors = $resp->getErrorCodes(); var_dump('Captcha Invalide'); var_dump($errors); } } if(!isset($_POST['g-recaptcha-response']) AND empty($_POST['g-recaptcha-response'])) { // var_dump('Captcha non rempli'); $errors['g-recaptcha-response']="Veuillez confirmer que vous n'êtes pas un robot"; } }
et voici mon code html pour le reCAPTCHA :
<div class="g-recaptcha" data-sitekey="clé secrète" name="g-recaptcha-response"></div>
Je n'arrive vrmt pas a trouver la solution, j'espère que qql pourra m'aider
Merci d'avance !!
EDIT : Ajout des BALISES DE CODE
Configuration: Windows / Chrome 83.0.4103.106
A voir également:
- Vérification reCAPTCHA
- Verification lien internet - Guide
- Verification windows 11 - Guide
- Verification de l'identité du serveur impossible - Forum WiFi
- Vérification identité leboncoin impossible ✓ - Forum Réseaux sociaux
- Ps4 verification de l'etat du stockage ✓ - Forum PS4
6 réponses
Bonjour
Que t'affiches tes var_dump ?
Tu parles d'envoyer... mais je ne vois rien d'autre que la vérification du captcha dans le code que tu nous as posté ...
NB: Pour poster ton code correctement sur le forum, tu dois utiliser les BALISES DE CODE.
Explications à lire ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Que t'affiches tes var_dump ?
Tu parles d'envoyer... mais je ne vois rien d'autre que la vérification du captcha dans le code que tu nous as posté ...
NB: Pour poster ton code correctement sur le forum, tu dois utiliser les BALISES DE CODE.
Explications à lire ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
-> Que t'affiches tes var_dump ?
Bah en ft rien, c'est à dire que je fasse le recaptcha ou pas il n'y a rien, après j'ai juste suivi une vidéo youtube qui expliquer comment intégrer un recaptcha
-> Tu parles d'envoyer... mais je ne vois rien d'autre que la vérification du captcha dans le code que tu nous as posté ...
C'est parce que j'ai juste mis le code relatif à la vérification du reCAPTCHA, ne t'inquiète pas dans mon fichier, il y a bien la parti envoie
Bah en ft rien, c'est à dire que je fasse le recaptcha ou pas il n'y a rien, après j'ai juste suivi une vidéo youtube qui expliquer comment intégrer un recaptcha
-> Tu parles d'envoyer... mais je ne vois rien d'autre que la vérification du captcha dans le code que tu nous as posté ...
C'est parce que j'ai juste mis le code relatif à la vérification du reCAPTCHA, ne t'inquiète pas dans mon fichier, il y a bien la parti envoie
ah d'accord, alors voici tout mon code php de cette page :
<?php session_start(); ?> <?php if(!empty($_POST)) { $errors=array(); require_once 'base_de_donnees.php'; $password_length = $_POST['password']; // Nom // if(empty($_POST['nom']) || !preg_match('/^[a-zA-Zéèàêëôüîï \- ]*-?[a-zA-Zéèàêëôüîï ]*+$/', $_POST['nom'])) { $nom_erreur = $errors['nom'] ="Votre nom est incorrect"; } // Prénom // if(empty($_POST['prenom']) || !preg_match('/^[a-zA-Zéèàêëôüîï ]*-?[a-zA-Zéèàêëôüîï ]*+$/', $_POST['prenom'])) { $prenom_erreur = $errors['prenom'] ="Votre prénom est incorrect"; } //E-mail // if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $email_erreur = $errors['email'] = "Votre e-mail n'est pas valide"; } else { $req = $pdo->prepare('SELECT id FROM membre WHERE email = ?'); $req->execute([$_POST['email']]); $user = $req->fetch(); if($user) { $email_erreur = $errors['email'] = 'Cette adresse e-mail est déjà associé à un compte'; } } // Mot de passe // if(empty($_POST['password'])) { $password_erreur = $errors['password']="Veuillez saisir un mot de passe"; } if(!empty($_POST['password']) && $_POST['password'] != $_POST['password_confirm']) { $password_erreur = $errors['password']="Veuillez saisir un mot de passe identique"; } if(!empty($_POST['password'] AND (strlen($password_length)<6))) { $password_erreur = $errors['password']="Votre mot de passe est trop court"; } // reCAPTCHA // require('recaptcha/autoload.php'); if(isset($_POST['submitpost'])) { if(isset($_POST['g-recaptcha-response'])) { $recaptcha = new \ReCaptcha\ReCaptcha('cle secrète'); $resp = $recaptcha->setExpectedHostname('recaptcha-demo.appspot.com')->verify($_POST['g-recaptcha-response']); if ($resp->isSuccess()) { var_dump('Captcha Valide'); } else { $errors = $resp->getErrorCodes(); var_dump('Captcha Invalide'); var_dump($errors); } } if(!isset($_POST['g-recaptcha-response']) AND empty($_POST['g-recaptcha-response'])) { // var_dump('Captcha non rempli'); $errors['g-recaptcha-response']="Veuillez confirmer que vous n'êtes pas un robot"; } } // Requête MySQL // if(empty($errors)) { $req = $pdo->prepare("INSERT INTO membre SET nom = ?, prenom = ?, email = ?, password = ?, confirmation_token = ?"); $password = password_hash($_POST['password'], PASSWORD_BCRYPT); $token = str_random(60); $req->execute([$_POST['nom'], $_POST['prenom'], $_POST['email'], $password, $token]); $user_id = $pdo->lastInsertId(); header('Location: login.php'); exit(); } } ?>
peux-tu correctement utiliser les balises de code, comme expliqué ici: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Tu n'as pas appliqué tout ce qui est indiqué dans le lien que je t'ai donné...
Donc, grosso modo, voici ton code remis au propre
Par contre, tu ne m'as toujours pas indiqué ce qu'affiche la console de ton navigateur...
Si la variable de recaptcha n'est pas présente dans la variable $_POST .. c'est que le souci se situe au niveau du code javascript... pas au niveau du code php.
Donc, grosso modo, voici ton code remis au propre
<?php //-------------------------------------------------------------// //démarrage Session //-------------------------------------------------------------// session_start(); //-------------------------------------------------------------// //affichage des erreurs PHP //-------------------------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //-------------------------------------------------------------// //include/require des fichiers //-------------------------------------------------------------// require_once 'base_de_donnees.php'; require('recaptcha/autoload.php'); //-------------------------------------------------------------// //récupération PROPRE des variables AVANT de les utiliser //-------------------------------------------------------------// $nom = !empty($_POST['nom']) ? trim($_POST['nom']) : ""; $prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : ""; $email = !empty($_POST['email']) ? trim($_POST['email']) : ""; $password = !empty($_POST['password']) ? trim($_POST['password']) : ""; $password_confirm = !empty($_POST['password_confirm']) ? trim($_POST['password_confirm']) : ""; $recaptcharesponse = !empty($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : NULL; //autre variables $password_length = strlen($password); $errors = array(); //-------------------------------------------------------------// // Fonctions //-------------------------------------------------------------// function checkString($str){ return empty($str) || !preg_match('/^[a-zA-Zéèàêëôüîï \- ]*-?[a-zA-Zéèàêëôüîï ]*+$/', $str); } function checkMail($email){ return empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL); } function getMembreByMail($email){ global $pdo; $sql = 'SELECT id FROM membre WHERE email = ?'; $datas = array($email); try{ $req = $pdo->prepare($sql); $req->execute($datas); $user = $req->fetch(); return $user; }catch(Exception $e){ echo "Erreur ". $e->getMessage(); die(); } } function addMember($nom, $prenom, $email, $password) { global $pdo; $password = password_hash($password, PASSWORD_BCRYPT); $token = str_random(60); $sql = "INSERT INTO membre (nom, prenom , email , password , confirmation_token) VALUES (? , ? , ? , ? , ? )"; $datas = array($nom, $prenom, $email, $password, $token); try{ $req = $pdo->prepare($sql); $req->execute($datas); $user_id = $pdo->lastInsertId(); return $user_id ; }catch(Exception $e){ echo "Erreur ". $e->getMessage(); die(); } } //-------------------------------------------------------------// // Traitement du submit du formulaire //-------------------------------------------------------------// if(!empty($_POST)){ if(! checkString($nom)) { $errors['nom'] = "Votre nom est incorrect"; } // Prénom // if(!checkString($prenom)) { $errors['prenom'] = "Votre prénom est incorrect"; } //E-mail // if(!checkMail($email){ $errors['email'] = "Votre e-mail n'est pas valide"; } else { $user = getMembreByMail($email); if($user){ $errors['email'] = 'Cette adresse e-mail est déjà associé à un compte'; } } // Mot de passe // if(empty($password)) { $errors['password'] = "Veuillez saisir un mot de passe"; } if(empty($password_confirm)) { $errors['password_confirm'] = "Veuillez confirmer votre mot de passe"; } if(!empty($password) && $password != $password_confirm){ $errors['password'] = "Veuillez saisir un mot de passe identique"; } if( $password_length < 6 ){ $errors['password'] = "Votre mot de passe est trop court"; } // reCAPTCHA // if($recaptcharesponse){ $recaptcha = new \ReCaptcha\ReCaptcha('cle secrète'); $resp = $recaptcha->setExpectedHostname('recaptcha-demo.appspot.com')->verify($recaptcharesponse); if ($resp->isSuccess()) { var_dump('Captcha Valide'); } else { $errors['recaptcha'] = $resp->getErrorCodes(); var_dump('Captcha Invalide'); var_dump($errors); } } // Requête MySQL // if(empty($errors)) { $user_id = addMember($nom, $prenom, $email, $password); if($user_id){ //header('Location: login.php'); exit(); }else{ echo "Erreur lors de l'ajout en base de données."; exit; } }else{ var_dump($errors); } }
Par contre, tu ne m'as toujours pas indiqué ce qu'affiche la console de ton navigateur...
Si la variable de recaptcha n'est pas présente dans la variable $_POST .. c'est que le souci se situe au niveau du code javascript... pas au niveau du code php.
Je viens de remettre le code que vous m'avez fait (merci beaucoup d'ailleurs), cependant j'ai une erreur à la ligne 99 :
( ! ) Parse error: syntax error, unexpected ';' in C:\wamp64\www\site_e_commerce\register.php on line 99
-> Par contre, tu ne m'as toujours pas indiqué ce qu'affiche la console de ton navigateur...
Si la variable de recaptcha n'est pas présente dans la variable $_POST .. c'est que le souci se situe au niveau du code javascript... pas au niveau du code php.
Comment fait-on s'il vous plait ?
(je suis débutant)
( ! ) Parse error: syntax error, unexpected ';' in C:\wamp64\www\site_e_commerce\register.php on line 99
-> Par contre, tu ne m'as toujours pas indiqué ce qu'affiche la console de ton navigateur...
Si la variable de recaptcha n'est pas présente dans la variable $_POST .. c'est que le souci se situe au niveau du code javascript... pas au niveau du code php.
Comment fait-on s'il vous plait ?
(je suis débutant)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ah oui, en effet
c'est bon j'ai trouvé, c'était un problème de php
Maintenant tout fonctionne comme je veux ^^
Merci beaucoup de votre aide !!
c'est bon j'ai trouvé, c'était un problème de php
Maintenant tout fonctionne comme je veux ^^
Merci beaucoup de votre aide !!
Ce message là ne sont pas bloquant.
Tu as bien afficher la page qui contient ton formulaire ?
Tu pourrais afficher le code source de cette page en appuyant sur les touches contrôle et u
Et nous coller le code ainsi obtenu sur le forum.
et donc vu que tu es parti à regarder dans la console je suppose que ta variable poste ne contient pas le caprcha... Oui, non ??
Tu as bien afficher la page qui contient ton formulaire ?
Tu pourrais afficher le code source de cette page en appuyant sur les touches contrôle et u
Et nous coller le code ainsi obtenu sur le forum.
et donc vu que tu es parti à regarder dans la console je suppose que ta variable poste ne contient pas le caprcha... Oui, non ??