2016-11-20 9 views
2

Я вернулся. Вот проблема. При реализации ReCaptcha 2.0 я загрузил файл из Github и сделал все, что было проинструктировано (видимо, нет, или у меня не было бы проблемы). Моя форма автоматически загружается с ошибкой, отображающей «отсутствующий вход-ответ» прямо над кнопкой отправки. Я могу, однако, заполнить и отправить форму, и она перенаправляется на страницу «спасибо». Если я попытаюсь отправить форму, не отметив ее, она даст ошибку (что хорошо), но ошибка есть независимо от того, что. Что мне нужно сделать? Я бы очень признателен за любую помощь.ReCaptcha 2.0 - страница загружается с ошибкой "missing-input-response"

Вот мой код:

<?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

Мне все еще нужен ответ на этот вопрос, если кто-то может помочь. Если на этом сайте был дан ответ, я не могу его найти. Благодарю. – Newsong80

ответ

1

Я нашел this, который работает.

$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);