PHP7 et nocaptcha

Résolu/Fermé
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 - 19 avril 2018 à 19:08
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 - 20 avril 2018 à 01:34
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?



A voir également:

4 réponses

yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 avril 2018 à 21:34
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.
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
Modifié par animostab le 19/04/2018 à 23:05
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
<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
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 avril 2018 à 22:58
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);
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
Modifié le 19 avril 2018 à 23:08
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

$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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 avril 2018 à 22:44
Bonjour
Qu'as tu dans le error log d'Apache ?
As tu activé le allow_url_fopen dans le php.ini ?
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
Modifié le 19 avril 2018 à 23:23
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
<button class="g-recaptcha bouton" data-sitekey="6LcDpDwUAAAAAP7gDa3T_T-A5ufXNgCTp0K0_n9W" data-callback='onSubmit'>Envoyer</button>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 avril 2018 à 23:25
Dans un htaccess :
php_value allow_url_fopen On
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 avril 2018 à 23:34
Et si tu testes avec curl au lieu du file_get_contents ?
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)


0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
19 avril 2018 à 23:39
Bon j'ai fais un phpinfo() et allow_url_fopen est activé en php5.6 et quand je passe en php7 (via htaccess) phpinfo() m'affiche une version 4.4.4.9 de php la je comprend plus rien
voici ce que je mets dans le htaccess
SetEnv PHP_VER 5_6 (htaccess php5.6)
SetEnv PHP_VER 7_0 (htaccess php7)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 avril 2018 à 23:51
Qui est ton hébergeur
et est-ce qu'il prend en compte la version PHP 7
0