Перегенерация каптчи после отправки формы

В дефолтовом /site/contact используется капча.

Однако, после отправки формы при попытке ее обновить форма снова проходит валидацию и сообщение отправляется.

По логике после отправки формы код капчи должен измениться.

Как этого добиться?

Попробовал вставить в actionContact()

такой код:




$captcha = new CCaptchaAction($this,$this->action->id);

$captcha->getVerifyCode(true);



Не помогло. Наверное, что-то не так делаю :)

У мну капча меняется после двух перезагрузок.

http://www.yiiframework.com/doc/api/CCaptchaAction#testLimit-detail

necros прав


testLimit property 

public integer $testLimit;

how many times should the same CAPTCHA be displayed. Defaults to 3.

из дока.

Выставь что-то типа:


   public function actions() {

        return array(

            //  captcha.

             'captcha'=>array(

                'class'=>'CCaptchaAction',

                'backColor'=> 0x003300,

                'maxLength'=> 6,

                'minLength'=> 4,

                'testLimit'=> 1,

                'foreColor'=> 0x66FF66,

            )

        );

    }

и будет тебе счастье :rolleyes:

Хотя имхо это не правильное решение. Человек должен понимать что он указал не верно в случае ошибки.

К примеру, у вас выпало число 10+4 , а ввели 15. И думаете какого хрена форма руганулась. Смотрите снова на капчу а там уже 100+555 в вашем случае. Т.е. юзер не догоняет что он ввел неверно.

А в случае хотя бы двух повторов ему выпадет сначала 10+4. А затем к примеру 20-6. Мне кажется это удобнее для сами пользователей. И они потом себя более удовлетворенными чувствуют :)

to Zolter

Очень верно подмечено. :)

Так я только указал где параметр присутствует. А какое число установить имхо пусть сам решет.

Я это к автору темы направлял :)

Вам наоборот спасибо :)