Php 错误:RecaptchaField::validate():Recaptcha服务错误:';无效的请求cookie';

Php 错误:RecaptchaField::validate():Recaptcha服务错误:';无效的请求cookie';,php,recaptcha,silverstripe,Php,Recaptcha,Silverstripe,在设置ReCaptcha垃圾邮件验证后,我收到以下错误消息。ReCaptcha工作正常,我只是担心错误 使用Silverstripe 2.4.5版 模块: -SPAM保护 -雷帕查 Error: RecatpchaField::validate(): Recaptcha-service error: 'invalid-request-cookie' At line 285 in /var/www/example/public/recaptcha/code/RecaptchaField.php

在设置ReCaptcha垃圾邮件验证后,我收到以下错误消息。ReCaptcha工作正常,我只是担心错误

使用Silverstripe 2.4.5版 模块: -SPAM保护 -雷帕查

Error: RecatpchaField::validate(): Recaptcha-service error: 'invalid-request-cookie'
At line 285 in /var/www/example/public/recaptcha/code/RecaptchaField.php

RecatpchaField::validate(): Recaptcha-service error: 'invalid-request-cookie'
Line 285 of RecaptchaField.php
RecaptchaField->validate(RequiredFields)
Line 98 of RequiredFields.php
RequiredFields->php(Array)
Line 106 of Validator.php
Validator->validate()
Line 888 of Form.php
Form->validate()
Line 293 of Form.php
Form->httpSubmission(SS_HTTPRequest)
Line 143 of RequestHandler.php
RequestHandler->handleRequest(SS_HTTPRequest)
Line 161 of RequestHandler.php
RequestHandler->handleRequest(SS_HTTPRequest)
Line 147 of Controller.php
Controller->handleRequest(SS_HTTPRequest)
Line 199 of ContentController.php
ContentController->handleRequest(SS_HTTPRequest)
Line 67 of ModelAsController.php
ModelAsController->handleRequest(SS_HTTPRequest)
Line 282 of Director.php
Director::handleRequest(SS_HTTPRequest,Session)
Line 125 of Director.php
Director::direct(/contact-us/ContactForm)
Line 127 of main.php
ContactPage.php

<?php
class ContactPage extends Page {

    static $db = array(
        'Mailto' => 'Varchar(100)',
        'SubmitText' => 'Text',
        'GoogleMapsAPI' => 'Varchar(255)'
    );

    function getCMSFields() {
        $fields = parent::getCMSFields();

        $fields->removeFieldFromTab("Root.Content.Main", "Graphic");
        $fields->addFieldToTab("Root.Content.Contact", new TextField('Mailto', 'Email address to recieve the contact message'));    
        $fields->addFieldToTab("Root.Content.Contact", new TextareaField('SubmitText', 'Text to display sucsesfully sending a message'));       
        $fields->addFieldToTab("Root.Content.Contact", new TextareaField('GoogleMapsAPI', 'Google Maps API Key'));      
        return $fields; 
    }

    static $icon = "cms/images/treeicons/sent";

}

class ContactPage_Controller extends Page_Controller {  

    function ContactForm() {
        // Create fields          
        $fields = new FieldSet(
            new TextField('Name', 'Name<sup></sup>'),
            new EmailField('Email', 'Email<sup></sup>'),
            new TextField('Website', 'Website (if you have one already)'),
            new TextField('Telephone', 'Telephone'),
            new TextareaField('Message','Message<sup></sup>'),
            new OptionsetField('SendMeEmail', 'Send a copy to your email also', array('Yes'=>'Yes','No'=>'No')) 
        );

        // Create action
        $actions = new FieldSet(
            new FormAction('SendContactForm', ' ')
        );

        // Create Validators
        $validator = new RequiredFields('Name', 'Email', 'Message');

        $form = new Form($this, 'ContactForm', $fields, $actions, $validator);

        SpamProtectorManager::update_form($form, 'SendMeEmail');

        return $form;
    }

    function SendContactForm($data) {    

        $From = $data['Email'];
        $To = $this->Mailto;
        $Subject = "Contact Message"; 
        $email = new Email($From, $To, $Subject);
        $email->setTemplate('ContactAdminEmail');
        $email->populateTemplate($data);
        $email->send();

        if($data['SendMeEmail'] == 'Yes'){
            $email_client = new Email($To, $From, $Subject);
            $email_client->setTemplate('ContactClientEmail');
            $email_client->populateTemplate($data);
            $email_client->send();
        }
        //return to submitted message
        Director::redirect(Director::baseURL(). $this->URLSegment . "/?success=1");
    }

} 
如何复制:

  • 在浏览器中禁用JavaScript
  • 重新加载表单
  • 不要在“键入两个单词”字段中键入验证码值(生成令牌并将其复制到底部的字段中),而是将验证码值直接放入底部的字段中
  • 提交表单后,您应该会看到上面的错误消息
因此,禁用JavaScript的用户无法正确阅读给定的指令,这是一个问题

您可能还想查看更多详细信息


虽然它在我的手机上可以正常工作,但如果它在某些移动设备上不能正常工作,那就太糟糕了。根据设备的不同,填写第一个框仅将相当长的字符串复制到第二个字段是麻烦到不可能的。

修复了-我怀疑这些错误是由垃圾邮件机器人而不是用户造成的。

仅供参考,我在此处发布了此问题: