微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 关于我的Google Recaptcha代码

我是这个谷歌Recaptcha的新手.

我想弄清楚哪些不起作用.我已经尝试了其他几个代码并且它们不能正常工作,我不明白为什么.

这是我的表单代码

<form name="contact_form" method="post" action="functions.PHP">
 <input type="text" id="fname" name="full_name" placeholder="Full Name" required />
 <input type="number" id="pnumber" name="phone_number" placeholder="Phone Number" required />
 <input type="email" id="emailid" name="email_address" placeholder="Email Address" required />
 <textarea placeholder="Message" name="message" required></textarea>
 <span><input type="checkBox" id="disclaimerid" class="disclaimerclass" name="agreement" value="Agree" required>I have read and agreed with the <a class="dataPrivacyLink" href="#">(Data Protection and Privacy Policy)</a> of Hello World</span>
 <div class="g-recaptcha" data-sitekey="--PUBLIC KEY--"></div>
 <input type="submit" name="sendmessage" class="send-message" value="SUBMIT Now" />
</form>

这是我的PHP代码

<?PHP
  function post_captcha($user_response) {
       $fields_string = '';
       $fields = array(
        'secret' => '_______________PRIVATE_KEY_______________','response' => $user_response
    );
    foreach($fields as $key=>$value)
    $fields_string .= $key . '=' . $value . '&';
    $fields_string = rtrim($fields_string,'&');
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,'https://www.google.com/recaptcha/api/siteverify');
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,True);

    $result = curl_exec($ch);
    curl_close($ch);

    return json_decode($result,true);
}
// Call the function post_captcha
$res = post_captcha($_POST['g-recaptcha-response']);
if (!$res['success']) {
    // What happens when the CAPTCHA wasn't checked
    echo '<p>Please go back and make sure you check the security CAPTCHA Box.</p><br>';
} else {
    // If CAPTCHA is successfully completed...

    // Paste mail function or whatever else you want to happen here!
    $send;
if( isset( $_POST['email_address'] ) )
{
    $send="Your inquiry submitted successfully. we will contact you very soon. ";
    send_message_to_agent( $_POST['full_name'],$_POST['phone_number'],$_POST['email_address'],$_POST['message'] );
}
else
{
    $send="fail";   
}
function send_message_to_agent( $full_name,$phone_number,$email_address,$visiter_message ){

    $to      = 'hello@world.com';
    $subject = 'Hello World';

    $message = '<p>Name : '.$full_name.'</p>';
    $message .= '<p>Phone Number : '.$phone_number.'</p>';
    $message .= '<p>Email Address : '.$email_address.'</p>';
    $message .= '<p>Message : '.$visiter_message.'</p>';

    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

    mail($to,$subject,$message,$headers);
}
echo $send;
//die;
}
// Your code here to handle a successful verification
/>

解决方法

你还必须通过你的ipaddress

$fields = array(‘secret’=>’_______________PRIVATE_KEY_______________’,‘response’=> $USER_RESPONSE,‘remoteip’=> xxx.xxx.xxx.xxx //你的ip);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐