2017-04-22 112 views
0


我在使用Google captcha可能会在php联系表单中遇到问题。
我跟着谷歌官方指南和我写的代码似乎是正确的,但我总是收到错误,验证码为,错误代码为Google reCAPTCHA:错误验证码错误

客户端代码:

<div class="row"> 
    <div class="12u"> 
     <form id="mailform" method="post" action="website_mailer.php" novalidate="novalidate"> 
      <div> 
       <div class="row half"> 
        <div class="6u"> 
         <input type="text" name="name" id="name" placeholder="Name" /> 
        </div> 
        <div class="6u"> 
         <input type="text" name="email" id="email" placeholder="Email" /> 
        </div> 
       </div> 
       <div class="row half"> 
        <div class="12u"> 
         <input type="text" name="subject" id="subject" placeholder="Subject" /> 
         <input type="text" class="myantispam" name="leaveblank"> 
         <input type="text" class="myantispam" name="dontchange" value="http://" > 
        </div> 
       </div> 
       <div class="row half"> 
        <div class="12u"> 
         <textarea name="message" id="message" placeholder="Message"></textarea> 
        </div> 
       </div> 
       <div class="row half"> 
        <div class="4u"> 
         <div class="g-recaptcha" data-sitekey="xxxx"></div> 
        </div> 
        <div class="8u"> 
         <a href="#" class="button form-button-submit">Send Message</a> 
         <a href="#" class="button button-alt form-button-reset">Clear Form</a> 
        </div> 
       </div> 
      </div> 
     </form> 
    </div> 
</div> 

服务器端代码(PHP):

<?php 
require_once('recaptchalib.php'); 

$privatekey = "xxx"; 
$resp = recaptcha_check_answer ($privatekey, 
           $_SERVER["REMOTE_ADDR"], 
           $_POST["recaptcha_challenge_field"], 
           $_POST["recaptcha_response_field"]); 

if (!$resp->is_valid) { 
     die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 
     "(reCAPTCHA said: " . $resp->error . ")"); 
    } else { 
     /* proper code */ 
    } 
?> 

您能否提供我一个解决方案吗?我无法找到解决方案。

谢谢!

回答

0

我使用下面的代码解决了问题

$response=json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SECRET_KEY_HERE&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']), true); 
if($response['success'] == false){ 
    //Captcha incorrect 
} 
else { 
    //Success code here 
} 

,而不是

<?php 
require_once('recaptchalib.php'); 

$privatekey = "xxx"; 
$resp = recaptcha_check_answer ($privatekey, 
           $_SERVER["REMOTE_ADDR"], 
           $_POST["recaptcha_challenge_field"], 
           $_POST["recaptcha_response_field"]); 

if (!$resp->is_valid) { 
     die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 
     "(reCAPTCHA said: " . $resp->error . ")"); 
    } else { 
     /* proper code */ 
    } 
?> 

感谢Locke Donohoe谁建议答案here