我正在尝试将 google reCaptcha 添加到 prestashop 的 opc 注册页面,我有复选框设置并且它正在工作,但是 php 文件没有收到验证码响应。让我解释。这是我到目前为止所做的:在我的 header.tpl 中我添加了
<script src='https://www.google.com/recaptcha/api.js'></script>
在 order-opc-new-account.tpl 中,我添加了
<div class="g-recaptcha" data-sitekey="[my_public_key]"></div>
在我的 AuthController.php 中我添加了
if (Tools::isSubmit('submitAccount') OR Tools::isSubmit('submitGuestAccount')) //if statement was already present
{
// captcha code I added
$reCaptchaUrl='https://www.google.com/recaptcha/api/siteverify';
$reCaptchaSecret = '[my_secret_key]';
$reCaptchaResponse = $_POST['g-recaptcha-response'];
$ip = $_SERVER['REMOTE_ADDR'];
$verifyCaptcha = file_get_contents($reCaptchaUrl."?secret=".$reCaptchaSecret."&response=".$reCaptchaResponse."&remoteip=".$ip);
$captchaReply = json_decode($verifyCaptcha);
if(isset($captchaReply->success) AND $captchaReply->success == true){
$logger = new FileLogger(0);
$logger->setFilename(_PS_ROOT_DIR_."/log/debug.log");
$logger->logDebug("Captcha was successful: ".$reCaptchaResponse);
} else {
//captcha failed
$logger = new FileLogger(0);
$logger->setFilename(_PS_ROOT_DIR_."/log/debug.log");
$logger->logDebug("Captcha failed: ".$reCaptchaResponse);
}
// ... prestashop registration code
}
我从调试消息中了解到,即使验证码已被检查,$reCaptchaResponse
变量实际上每次都会变空。有什么想法吗?
编辑:表单实际上将数据发送到 authentication.php
,其中包含以下几行
require(dirname(__FILE__).'/config/config.inc.php');
ControllerFactory::getController('AuthController')->run();
我的猜测是,这段代码将表单数据转发到AuthController.php
,但它只转发被告知要转发的字段。它无法识别新的验证码字段,并且不会将该数据转发到文件。因此,我需要找到谁决定转发哪些数据。
最佳答案
确保<div class="g-recaptcha" data-sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"></div>
位于 FORM 元素中。
关于php - Prestashop - AuthController.php 未接收输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37154833/