【发布时间】:2015-10-05 19:02:20
【问题描述】:
p.s:我放弃了这个,因为我没有找到解决方案并实现了我自己的 php 验证码,这很有效:) - http://www.the-art-of-web.com/php/captcha/
我花了很多时间和几天试图解决这个问题,但我似乎无法弄清楚。我在网上阅读了很多不同的教程和问题。
请记住,我的 PHP 水平相当基础。
我似乎无法在我的 php 文件中获取 'g-recaptcha-response' $_POST 值。
下面我总结了需要的重要代码...
文件1:contact.php
在头部标签之前
<?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 -->
在表单标签之间 Action="" 以便它发布到包含contactengine.php 文件的自身,以便它仅在用户单击提交按钮时运行?
<form class="contactform" method="POST" action="">
<div class="g-recaptcha" data-sitekey="6Lc92gkTAAAAAFKjZEOlY0cg9G8ubmlVoC13Xf3T"></div>
文件2:contactengine.php
在这之间
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 为指导。
非常感谢!
【问题讨论】:
-
使用浏览器的开发工具来观察您的网络流量,看看幕后发生了什么。也不要输出未经过滤的 POST 值(以避免 XSS 攻击)
-
谢谢@m02ph3u5,我只是为了调试目的而设置它。此外,我在 chrome 中使用了开发工具,响应以 json 格式返回,但称为“uvresp”。我什至尝试用这个名字代替“g-recaptcha-response”,但没有运气。生病继续看
-
var_dump($_POST)告诉你什么? -
等一下,谷歌会回复一个帖子请求吗?如果是,您不应该在您的开发工具中看到这一点。如果您必须解析自己请求的响应,则 $_POST 中不会有结果。
标签: php html captcha recaptcha contact-form