我在5月PHP联系表中使用Google Captcha遇到问题。
我遵循了Google官方指南,我编写的代码似乎是正确的,但我始终收到不正确的captcha-sol 错误。
客户端代码:
<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 */
}
?>
您能建议我解决方案吗?我找不到解决方案。
谢谢!
我使用以下代码
解决了问题$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在这里提出答案。
root目录中的脚本创建php.ini文件:
allow_url_fopen = on