0

そこで、Zend Frameworkを使用して以下のフォームを作成し、それをカスタマイズします。私の最初の問題は、csrfハッシュセキュリティでアプリケーションエラーが発生することです。ただし、それらの行を削除すると、空白の画面が表示されます。これは、CPATCHA保護を削除した場合にのみ解決されます。誰かが私に理由を説明できますか?

私のフォーム:

class Application_Form_Clips extends Zend_Form
{

    public function init()
    {

        // Set the method for the display form to POST
        $this->setMethod('post');

        // Add an email element
        $this->addElement('text', 'email', array(
            'label'      => 'Your email address:',
            'required'   => true,
            'filters'    => array('StringTrim'),
            'validators' => array(
                'EmailAddress',
            )
        ));

        // Add the comment element
        $this->addElement('textarea', 'comment', array(
            'label'      => 'Please Comment:',
            'required'   => true,
            'validators' => array(
                array('validator' => 'StringLength', 'options' => array(0, 20))
                )
        ));

        // Add a captcha
        $this->addElement('captcha', 'captcha', array(
            'label'      => 'Please enter the 5 letters displayed below:',
            'required'   => true,
            'captcha'    => array(
                'captcha' => 'Figlet',
                'wordLen' => 5,
                'timeout' => 300
            )
        ));

        // Add the submit button
        $this->addElement('submit', 'submit', array(
            'ignore'   => true,
            'label'    => 'Sign Guestbook',
        ));

        // And finally add some CSRF protection
        $this->addElement('hash', 'csrf', array(
            'ignore' => true,
        ));

    }


}

私のコントローラー:

class AdminController extends Zend_Controller_Action
{

    public function init()
    {

        // get doctrine and the entity manager
        $this->doctrine = Zend_Registry::get('doctrine');
        $this->entityManager = $this->doctrine->getEntityManager();

        // get the users repository
        $this->indexVideos = $this->entityManager->getRepository('\ZC\Entity\Videos');
        $this->indexClips = $this->entityManager->getRepository('\ZC\Entity\Clips');

    }

    public function indexAction()
    {
        // action body
    }

    public function clipsAction()
    {

        // get a form
        $form = new Application_Form_Clips(); 
        $this->view->form = $form;

    }

    public function videosAction()
    {
        // action body
    }


}

私の見解:

<?php echo $this->form; ?>
4

1 に答える 1

0

基本的なエラー、php.iniでsession.patのコメントを解除していません

于 2012-08-15T09:37:07.877 に答える