0

Zend フレームワーク アプリケーションのフォームに次のコードがあります。

$captcha = new Zend_Form_Element_Captcha('captcha', array(
                        'label' => "",  
                        'captcha' => 'image',
                        'captchaOptions' => array(  
                                'captcha' => 'image',  
                                'font'=> APPLICATION_PATH . '/../public_html/assets/fonts/akbar.ttf',
                                'imgDir'=> APPLICATION_PATH . '/../public_html/assets/captcha/',
                                'imgUrl'=> '/assets/captcha/',
                        'wordLen' => 1,
                        'fsize'=>20,
                        'height'=>60,
                        'width'=>200,
                        'gcFreq'=>50,
                        'expiration' => 300)
                        )); 

フォーム要素の表示は期待どおりです。

次のコードを使用してフォームを検証しようとすると、キャプチャを正しく入力しても常にエラーが返されます。

    if($this->getRequest()->isPost()) {
        if($this->view->form->isValid($_POST)) {

それを正しく検証する方法に関する解決策は、非常に役立ちます。

ありがとうニザム

4

2 に答える 2

0

あなたもチェック$captcha->generate();前にやっていると思います。isPost()これに関する問題は、フォームを送信すると、POST データをチェックする前に新しい CAPTCHA を生成しているため、新しい CAPTCHA に対して検証しているため、チェックは常に失敗することです。解決策は、生成呼び出しをさらに下に移動することです。

しばらく前に、このコンポーネントのいくつかのコード例をブログに投稿しまし。数年前なので、何かが変わっているかもしれません。

これで問題が解決しない場合は、質問を編集してコードを追加し、他に何が問題を引き起こしているかを確認してください。

于 2011-05-09T12:23:10.400 に答える
0

この投稿を確認してください: Zend Framework: Captcha problem

基本的に、要素から「viewhelper」を削除する必要があります。元。:

$form->getElement('captcha')->removeDecorator("viewhelper");
于 2013-01-10T15:30:09.843 に答える