p.s:我放弃了这个,因为我找不到任何解决方案,并实现了我自己的php验证码,这是一种享受:) - http://www.the-art-of-web.com/php/captcha/
我花了很多时间&试图解决这个问题的日子,但我似乎无法弄明白。我已经阅读了很多不同的教程和在线提问。
请记住,我的PHP级别非常基础。
我似乎无法在我的php文件中获得'g-recaptcha-response'$ _POST值。
我总结了下面需要的重要代码......
在Head标签之前
<?php
session_start(); // start php session
// Setup session variables to save the form data
if( isset($_SESSION['contact_form_values']) ){
extract( $_SESSION['contact_form_values'] );
}
include('contactengine.php');
?>
在头标签
<script src='https://www.google.com/recaptcha/api.js'></script><!-- reCAPTCHA form -->
在Form标签之间 Action =“”以便它自己发布包含contactengine.php文件的内容,以便仅在用户单击提交按钮时才会运行?
<form class="contactform" method="POST" action="">
<div class="g-recaptcha" data-sitekey="6Lc92gkTAAAAAFKjZEOlY0cg9G8ubmlVoC13Xf3T"></div>
在此之间
if($_SERVER["REQUEST_METHOD"] == "POST")
我有
if( isset( $_POST['g-recaptcha-response'] ) ){
$captchaResponse = $_POST['g-recaptcha-response'];
}
现在这就是没有填充变量$ captchaResponse的点,因为我输出了它的值,如下所示:
if( !$captchaResponse ){ // check the POST recaptcha response value
$resultMsg = 'Please check the captcha form. - '.$captchaResponse;
}
因此我在$ resultMsg字符串中没有得到响应代码的可见输出。
我唯一能想到的就是影响它,包括contact.php开头的contactengine.php文件。并将动作设为=“”。但这就是教程指导我做的事情。也许不是......
我使用http://www.9lessons.info/2014/12/google-new-recaptcha-using-php-are-you.html作为指南。
非常感谢先进!
答案 0 :(得分:1)
你快到了!您只需要查询Google的API。
if (isset($_POST['g-recaptcha-response'])) {
$captcha = $_POST['g-recaptcha-response'];
}
if (!$captcha) {
// Captcha wasn't checked, do something...
exit;
}
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SECRETKEYGOESHERE&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
if ($response.success == false) {
// Captcha failed! Do something!
} else {
// Captcha is valid! Do something else!
}
将SECRETKEYGOESHERE
替换为您的实际密钥,然后重新设置!