1

アプリで複数のレイアウトを使用した後、Cpatchaは画像を表示しません:(

これは私のコードです

コントローラー:

public function actions()
        {
                return array(
                        // captcha action renders the CAPTCHA image displayed on the contact page
                        'captcha'=>array(
                                'class'=>'CCaptchaAction',
                                'backColor'=>0xFFFFFF,
                        ),
                        // page action renders "static" pages stored under 'protected/views/site/pages'
                        // They can be accessed via: index.php?r=site/page&view=FileName
                        'page'=>array(
                                'class'=>'CViewAction',
                        ),
                );
        }

モデル :

public function rules()
{
        return array(
                array('email, password', 'required','message'=>'-- {attribute}  '),

                array('password', 'authenticate'),

                // verifyCode needs to be entered correctly
        array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements(),'message'=>' {attribute}  Error '),

);

}

呼び出しウィジェットを表示

...
        <div>
                <?php $this->widget('CCaptcha'); ?>
                <?php echo $form->textField($model,'verifyCode'); ?>
                </div>
...

リクエストレコーダーでテストしたところ、リクエストを送受信しました。 キャプチャ

前もって感謝します

4

2 に答える 2

1

削除Bom関数を追加して修正しました

ob_start('My_OB');
function My_OB($str, $flags)
{
    //remove UTF-8 BOM
    $str = preg_replace("/\xef\xbb\xbf/","",$str);

    return $str;
}

問題はページエンコーディングにあったと思います。

于 2013-01-19T10:50:44.410 に答える
0

アクセス制御を使用している場合はaccessRules、キャプチャアクションを設定していない可能性があります。次のようなアクションを追加する必要があります。

public function accessRules() {
    return array(
        array('allow', // all users
            'actions' => ("captcha"),
            'users' => array('*'),
        ),
        array('allow', // authenticated users
            'actions' => ("captcha"),
            'users' => array('@'),
        ),
        array('deny', // deny all users
            'users' => array('*'),
        ),
    );
}
于 2013-01-01T12:16:01.463 に答える