Po skonfigurowaniu weryfikacji spamu ReCaptcha otrzymuję następujący komunikat o błędzie. ReCaptcha działa poprawnie. Martwię się tylko o błędy.

Korzystanie z Silverstripe w wersji 2.4.5 Moduły: - ochrona przed spamem - recaptcha

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");
    }

} 
3
John Magnolia 10 sierpień 2011, 22:07
FYI, opublikowałem ten problem tutaj: github.com/chillu/silverstripe-recaptcha/ wydania/2
 – 
Jedateach
30 sierpień 2011, 01:42

2 odpowiedzi

Najlepsza odpowiedź

Jak rozmnażać:

  • Wyłącz JavaScript w swojej przeglądarce
  • Odśwież formularz
  • Zamiast wpisywać wartość captcha w polu „Wpisz dwa słowa” (generując token i kopiując go do pola na dole), umieść wartość captcha bezpośrednio w polu na dole
  • Po przesłaniu formularza powinieneś zobaczyć powyższy komunikat o błędzie

Jest to więc problem dla użytkowników z wyłączoną obsługą JavaScript, którzy nie czytają poprawnie podanych instrukcji.

Możesz również zajrzeć na https://groups.google.com/ group/recaptcha/browse_thread/thread/f881b776f3192703, aby uzyskać więcej informacji.

Chociaż działa dobrze na moim telefonie komórkowym, jeśli to nie działa na niektórych urządzeniach mobilnych, jest to bardzo nieprzyjemne. Wypełnianie pierwszego pola tylko po to, aby skopiować dość długi ciąg do drugiego pola, jest gdzieś pomiędzy kłopotliwym a niemożliwym, w zależności od urządzenia.

2
xeraa 11 sierpień 2011, 03:47