Captcha I Tylko Cyfry

Witam,

chciałem się was zapytać co zrobić by zmienić ilość znaków w alfabecie captcha. Mam klienta, który chce mieć captcha tylko i wyłącznie z cyfr (strona polsko-rosyjska) i potrzebujemy captcha ale jak pisałem tylko z cyferek? Macie jakieś rozwiązanie? Albo jak to odpalić by można było wpisywać i nasze znaki i ruskie?

Dziękuję za podpowiedzi.

Witam

Możesz to zrobić tak:

  1. nowa klasa w protected/components z nadpisaną metodą generateVerifyCode(), zakomentowany oryginalny kod:




class CCaptchaActionNumbers extends CCaptchaAction

{

        /**

         * Generates a new verification code.

         * @return string the generated verification code

         */

        protected function generateVerifyCode()

        {

                if($this->minLength > $this->maxLength)

                        $this->maxLength = $this->minLength;

                if($this->minLength < 3)

                        $this->minLength = 3;

                if($this->maxLength > 20)

                        $this->maxLength = 20;

                $length = mt_rand($this->minLength,$this->maxLength);


                //$letters = 'bcdfghjklmnpqrstvwxyz';

                //$vowels = 'aeiou';

                $numbers = '0123456789';

                $code = '';

                for($i = 0; $i < $length; ++$i)

                {

                        /*

                        if($i % 2 && mt_rand(0,10) > 2 || !($i % 2) && mt_rand(0,10) > 9)

                                $code.=$vowels[mt_rand(0,4)];

                        else

                                $code.=$letters[mt_rand(0,20)];

                        */

                        $code.=$numbers[mt_rand(0,9)];

                }


                return $code;

        }

}




  1. w controlerze obsługującym akcję captcha wpisujesz swoją klasę CCaptchaActionNumbers :



	/**

	 * Declares class-based actions.

	 */

	public function actions()

	{

		return array(

			// captcha action renders the CAPTCHA image displayed on the contact page

			'captcha'=>array(

				//'class'=>'CCaptchaAction',

                                'class'=>'CCaptchaActionNumbers',

				'backColor'=>0xFFFFFF,

			),

		);

	}



powodzenia

Dziękuję ślicznie. Wszystko działa jak należy.