php - Prestashop - AuthController.php 未接收输入值

标签 php prestashop recaptcha

我正在尝试将 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/

相关文章:

php - 从数组中插入多行到数据库

templates - 如何将PrestaShop 1.7结帐 Accordion 步骤转换为步骤进度条?

html - 如何使用 css 定位和设置 Google recaptcha 的样式?

JQuery mCustomScrollbar autoScrollOnFocus

php - 提供 JSONP 是否安全?

php - mysql SUBSTR() 问题

php - 在 PHP MYSQL 中跟踪对话

php - prestashop 中出现意外的 T_STRING

git - Prestashop 测试/生产服务器最佳实践

JavaScript 错误 : Invalid Token when using ReCaptcha API