PHP7 et nocaptcha
Résolu
animostab
Messages postés
2829
Date d'inscription
Statut
Membre
Dernière intervention
-
animostab Messages postés 2829 Date d'inscription Statut Membre Dernière intervention -
animostab Messages postés 2829 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai des formulaires avec le nocaptcha de google (captcha invisible), avec php 5.6 ca marche correctement mais avec php7 rien a faire ca ne valide rien et ca n'envoie pas les données
après des test en php7 sans integrer nocaptcha les formulaires marchant inpec
dont je pense que nocaptcha avec php7 ca pose problème
bien sur étant en hebergement mutualisé je n'ai pas accès à la config sauf via htaccess
quelqu'un aurait il eu ce problème et bien sur aurait la solution?
j'ai des formulaires avec le nocaptcha de google (captcha invisible), avec php 5.6 ca marche correctement mais avec php7 rien a faire ca ne valide rien et ca n'envoie pas les données
après des test en php7 sans integrer nocaptcha les formulaires marchant inpec
dont je pense que nocaptcha avec php7 ca pose problème
bien sur étant en hebergement mutualisé je n'ai pas accès à la config sauf via htaccess
quelqu'un aurait il eu ce problème et bien sur aurait la solution?
A voir également:
- Votre code de réponse utilisateur nocaptcha manque ou est invalide. linkedin
- Code ascii - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir,
si tu veux de l'aide, n'hésite pas à nous donner de l'information, des messages d'erreur, des extraits de ton code php, tout ce que tu connais et que nous ne connaissons pas.
si tu veux de l'aide, n'hésite pas à nous donner de l'information, des messages d'erreur, des extraits de ton code php, tout ce que tu connais et que nous ne connaissons pas.
il n'y a aucun message d'erreur en fait la verification du captcha ne se fait pas et donc les variables POST ne sont pas transmisent il me semble
pour info je suis chez ovh mutualisé et je n'utilise pas de cms
le code html
Le php de verification situé sur avisclient1.php qui marche avec php5.6 mais qui n'est pas traité avec php7
la page se recharge comme si rien n'avais été vérifié par php et sans message d'erreur
En fait ce qui semble poser probleme avec php7 c'est ca
voila j'ai vu que d'autre aussi ont ce problème mais je n'ai pas trouvé de solution pour l'instant
pour info je suis chez ovh mutualisé et je n'utilise pas de cms
le code html
<head> ......... <script> grecaptcha.reset(); function onSubmit(token) { document.getElementById("form1").submit(); } </script> </head> <body> ...... <form action="avisclient-1.php" method="post" id="form1"> <p><label for="pseudo">Prénom/Nom ou pseudo :</label><br> <input type="text" id="pseudo" name="pseudo" value=" "></p> <p><label for="message">Message :</label><br> <textarea name="message" id="message" rows="5" cols="35"></textarea></p> <p><button class="g-recaptcha bouton" data-sitekey="6LcDpDwUAAAAAP7gDa3T_T-A5ufXNgCTp0K0_n9W" data-callback='onSubmit'>Envoyer</button></p><br><br> </form> ..... </body>
Le php de verification situé sur avisclient1.php qui marche avec php5.6 mais qui n'est pas traité avec php7
la page se recharge comme si rien n'avais été vérifié par php et sans message d'erreur
<?php if(!empty($_POST['g-recaptcha-response'])) { $secretKey = 'clé_secrete-du captcha-google-que-je-ne mets-pas-ici'; $response = $_POST['g-recaptcha-response']; $remoteIp = $_SERVER['REMOTE_ADDR']; $reCaptchaValidationUrl = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$response&remoteip=$remoteIp"); $result = json_decode($reCaptchaValidationUrl, TRUE); if($result['success'] == 1) { //le script de connexion a la BDD include ("include/bdovh.inc.php"); $pseudo = strip_tags(mysqli_real_escape_string($link, $_POST['pseudo'])); $message = strip_tags(mysqli_real_escape_string($link, $_POST['message'])); $date = date('Y-m-d') ."\n"; $interdit ="href=(.*)|href|http(.*)|www(.*)|\bcon\b|\bconnard\b|\bsalope\b|\bmerde\b|\bchier\b|\babrutit\b|\benfoiré\b|\bputain\b|\bempafé\b|\bcouille\b|\bbite\b|\bpute\b|\benculé\b|\bprêt\b|\bargent\b|\bcialis\b|\bviagra\b|\bporn\b|\bpharmacy\b|\bbuy\b|\bpenis\b|\bporno\b|\bsuck\b|\bdick\b"; if((!empty($_POST['pseudo'])) && (!empty($_POST['message'])) && !preg_match('#'.$interdit.'#i', $_POST["message"]) && !preg_match('#'.$interdit.'#i', $_POST["pseudo"])) { mysqli_query($link, "INSERT INTO livre_or VALUES('', '" . $pseudo . "','" . $date . "', '" . $message . "')"); $ip = $_SERVER["REMOTE_ADDR"]; $to = 'contact@clownroberto.com' ; $subject = 'commentaire posté' ; $messmail = $message; $messmail1 = $messmail." votre ip est ".$ip; mail($to, $subject, $pseudo, $messmail1); echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message a été posté</h2><p>Pour voir votre message</p><a href="avisclient-1.php#avis">Cliquez ici</a><br><br></div>'; } else if ( preg_match('#'.$interdit.'#i', $_POST["message"]) || preg_match('#'.$interdit.'#i', $_POST["pseudo"])) {echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message n\'a pas été posté</h2><p>Vous avez posté un lien</p><p>Ou bien</p><p>Votre message ou pseudo contient une injure</p><p><button class="fermeravis">Recommencer</button></p></div>';} else { echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Votre message n\'a pas été posté</h2><p>Un champ du formulaire n\'a pas été rempli</p><p><button class="fermeravis">Recommencer</button></p></div>'; } mysqli_close($link); } else { echo '<div id="loaderavis"></div><div id="mauvaisavis"><h2>Vous ne semblez pas humain !</h2><p><button class="fermeravis">Recommencer</button></p></div>'; } } ?>
En fait ce qui semble poser probleme avec php7 c'est ca
$secretKey = 'clé_secrete-du captcha-google-que-je-ne mets-pas-ici'; $response = $_POST['g-recaptcha-response']; $remoteIp = $_SERVER['REMOTE_ADDR']; $reCaptchaValidationUrl = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$response&remoteip=$remoteIp"); $result = json_decode($reCaptchaValidationUrl, TRUE);
voila j'ai vu que d'autre aussi ont ce problème mais je n'ai pas trouvé de solution pour l'instant
pas de soucis chez ovh en 7.2 avec ceci:
<script src="https://www.google.com/recaptcha/api.js" async defer></script> <script> function function_TrustMe(token) { document.getElementById("form_TrustMe").submit(); } </script> </head> <form id='form_TrustMe' method="POST" action="wruinv.php"> <button id="trustme" class="g-recaptcha" data-sitekey="pas vraiment secret et pas completement public" data-callback="function_TrustMe"> TrustMe </button> </form>
$captcha_resp=$_POST['g-recaptcha-response']; //your site secret key $secret = 'tres secret'; //get verify response data $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$captcha_resp.'&remoteip='.$_SESSION['yourip']); $responseData = json_decode($verifyResponse);
ha si tiens ca me mets une erreur (je suis en https) en php7.0
Warning: file_get_contents() [function.file-get-contents]: SSL: fatal protocol error in /home/clownrob/www/include/contentavisformulaire.php on line 9
Fatal error: Call to undefined function: json_decode() in /home/clownrob/www/include/contentavisformulaire.php on line 10
et en php7.1 la meme erreur plus
Fatal error: Call to undefined function: mysqli_connect() in line 6
bien sur les variables $hote, $user, $pass, $base sont correctement renseignées pour me connecter à la base et aucune erreur en php5.6
Warning: file_get_contents() [function.file-get-contents]: SSL: fatal protocol error in /home/clownrob/www/include/contentavisformulaire.php on line 9
Fatal error: Call to undefined function: json_decode() in /home/clownrob/www/include/contentavisformulaire.php on line 10
et en php7.1 la meme erreur plus
Fatal error: Call to undefined function: mysqli_connect() in line 6
$link = mysqli_connect($hote, $user, $pass, $base);
bien sur les variables $hote, $user, $pass, $base sont correctement renseignées pour me connecter à la base et aucune erreur en php5.6
Bonjour
Qu'as tu dans le error log d'Apache ?
As tu activé le allow_url_fopen dans le php.ini ?
Qu'as tu dans le error log d'Apache ?
As tu activé le allow_url_fopen dans le php.ini ?
je ne peux faire cela en local pour test car le captcha google ne fonctionne qu'avec un NDD et ne s'active pas en local (a cause de data-site-key) --> Comme je suis sur un mutualisé ben php.ini je n'ai pas accès et les log apache sur un mutu je sais pas ou trouver ca
ici le data-site-key transmet a google l'id du site et le compare avec l'url et donc NND
ici le data-site-key transmet a google l'id du site et le compare avec l'url et donc NND
<button class="g-recaptcha bouton" data-sitekey="6LcDpDwUAAAAAP7gDa3T_T-A5ufXNgCTp0K0_n9W" data-callback='onSubmit'>Envoyer</button>
Et si tu testes avec curl au lieu du file_get_contents ?
Un truc du genre :
Un truc du genre :
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => 'https://www.google.com/recaptcha/api/siteverify', CURLOPT_POST => 1, CURLOPT_POSTFIELDS => array( 'secret' => $secretKey, 'response' => $captcha ) )); $response = curl_exec($curl); curl_close($curl)