简体   繁体   English

无法使Google验证码正常工作

[英]Having trouble getting Google Captcha working

I'm currently creating a contact form and the form requires a captcha to be completed to reduce spam, I've followed tutorials on how to use the captchas in my code, but yet everytime its not working, hopefully someone can help here. 我目前正在创建联系表单,该表单需要填写验证码以减少垃圾邮件,我遵循了有关如何在代码中使用验证码的教程,但是每次都不起作用时,希望有人可以在此提供帮助。 Any help would be appreciated. 任何帮助,将不胜感激。

HTML HTML

 <body>
 <hgroup>
 <h1>Contact Us</h1>
 <?php if(isset($_GET['CaptchaPass'])){ ?>
 <h3>Your message was sent, you should recieve an email back within 24 
 hours.</h3>
 <?php } ?>
 <?php if(isset($_GET['CaptchaFail'])){ ?>
 <h3>Captcha Failed. Please try again!</h3>
 <?php } ?>
 </hgroup>
 <form method='post' action='contactver.php'>
 <div class="group">
 <input type="text" name="name"><span class="highlight"></span><span 
 class="bar"></span>
 <label>Name</label>
 </div>
 <div class="group">
 <input type="email" name="email"><span class="highlight"></span><span 
 class="bar"></span>
 <label>Email</label>
 </div>
 <div class="group">
 <input type="phone" name="phone"><span class="highlight"></span><span 
 class="bar"></span>
 <label>Phone No.</label>
 </div>
 <div class="group">
 <input type="message" name="message"><span class="highlight"></span><span 
 class="bar"></span>
 <label>Message</label>
 </div>
<div class="g-recaptcha" data-
sitekey="My Key, want to keep private :)"></div>
<button type="submit" name="login" class="button buttonBlue">Submit Message
<div class="ripples buttonRipples"><span class="ripplesCircle"></span></div>
</button>
</form>

PHP PHP

$firstname = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];

if(isset($_POST['login'])) {

$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = "Want to keep this private :)";

$response = file_get_contents($url."?
secret".$privatekey."&response=".$_POST['g-recaptcha-
response']."&remoteip".$_SERVER['REMOTE_ADDR']);

$data = json_decode($response);

if(isset($data->success) AND $data->success==true) {

echo("Pass");

}else {

header('Location: contact.php?CaptchaFail=true');
echo("Fail");
}


}

You can also use JavaScript for google captcha validation before form submit . 您还可以在表单提交之前使用JavaScript进行Google验证码验证。

var v = grecaptcha.getResponse();
if(v.length == 0){
    document.getElementById('captcha').innerHTML="You can't leave Captcha Code empty";
    error = false;
}else{
    document.getElementById('captcha').innerHTML="";
}  
if(error !== false){
    $('#yourformid').submit();
}

return false;

I believe there is an issue with this line: 我相信这条线有问题:

if(isset($data->success) AND $data->success==true)

It should be: 它应该是:

if(isset($data->success) AND $data->success===true)

Other than that, I would suggest using the Google Composer library ( https://github.com/google/recaptcha ) to validate the recaptcha. 除此之外,我建议使用Google Composer库( https://github.com/google/recaptcha )来验证Recaptcha。 It will solve you lines of code and headaches since they will keep it up to date. 它将解决您的代码行和头疼问题,因为它们将使它们保持最新。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM