2016-11-20 2 views
2

Ich bin wieder da. Hier ist das Problem. Bei der Implementierung von ReCaptcha 2.0 habe ich eine Datei von Github heruntergeladen und alles getan, was instruiert wurde (offensichtlich nicht oder ich hätte kein Problem). Mein Formular wird automatisch mit dem Fehler "Fehlende Eingabe-Antwort" direkt über dem Senden-Button geladen. Ich kann jedoch das Formular ausfüllen und abschicken und es wird auf die "Danke" -Seite weitergeleitet. Wenn ich versuche, das Formular ohne Überprüfung der Box zu senden, gibt es den Fehler (was gut ist), aber der Fehler ist dort egal was. Was muss ich tun? Ich würde wirklich jede Hilfe schätzen.ReCaptcha 2.0 - Seite lädt mit Fehler "missing-input-response"

Hier ist mein Code:

<?php 
    require('recaptcha-master/src/autoload.php'); 

    $siteKey = 'MY SITE KEY'; 
    $secret = 'MY SECRET KEY'; 


    $recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost()); 

    $gRecaptchaResponse = $_POST['g-recaptcha-response']; //google captcha post data 
    $remoteIp = $_SERVER['REMOTE_ADDR']; //to get user's ip 

    $recaptchaErrors = ''; // blank variable to store error 

    $resp = $recaptcha->verify($gRecaptchaResponse, $remoteIp); //method to verify captcha 
    if ($resp->isSuccess()) { 
     // send mail or insert in db or do whatever you wish to 

     $emailbody = 'Name: '.$_POST['name']."\n" 
     .'Phone: '.$_POST['phone']."\n" 
     .'Email: '.$_POST['email']."\n" 
     .'Message: '.$_POST['message'];  
     mail('[email protected]', 'More Information', $emailbody); 
     echo "<meta http-equiv='refresh' content=\"0; url=thankyou.php\">"; 


    } else { 
     $recaptchaErrors = $resp->getErrorCodes(); // set the error in varible 
    } 
    ?> 

**Here is my form:** 

<form action="contact.php" method="POST" title="Contact us for more information"> 
       <p><b>Name:<br> 
</b> 
        <input name="name" type="text" required id="name" tabindex="1" value="" size="50" maxlength="50"/> 
        <br/> Phone: 
        <br> 

        <input name="phone" type="text" id="phone" tabindex="2" value="" size="50" maxlength="50"/><br/> 
        <b>E-mail:</b><br> 
        <input name="email" type="text" id="email" tabindex="3" value="" size="50" maxlength="25"/><br/> 
        <br> 
        <b>Message:</b><br/> 
        <textarea name="message" cols="60" rows="10" maxlength="150" id="message" tabindex="4"></textarea><br> 

        <br> 
        <div class="g-recaptcha" data-sitekey="MY SITE KEY"></div> 
        <br> 
       <?php 
         if (isset($recaptchaErrors[ 0 ])) 
          echo $recaptchaErrors[ 0 ]; 

         ?> 
        <p>&nbsp; </p> 
        <p><input name="submit" type="submit" formmethod="POST" onClick="MM_validateForm('name','','R','phone','','NisNum','email','','RisEmail','message','','R');return document.MM_returnValue" value="Submit"> 
        </p> 

      </form> 
+0

Ich brauche noch eine Antwort, wenn jemand helfen kann. Wenn es auf dieser Seite beantwortet wurde, kann ich es nicht finden. Vielen Dank. – Newsong80

Antwort

1

Ich fand this, die funktioniert.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"https://www.google.com/recaptcha/api/siteverify?"); 
curl_setopt($ch, CURLOPT_POST, 1); 
$campos=array('secret'=>$secreto,'response'=>$TheResponse); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$campos); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$ch_exec = curl_exec($ch); 
$respuesta_google = json_decode($ch_exec,true); 
var_dump($ch_exec); 
var_dump($respuesta_google); 
curl_close ($ch);