rasgan
(Marek Bednarczuk)
November 28, 2013, 12:11am
1
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.
viktor
(Grzegorz Wiktorowski)
November 28, 2013, 8:27am
2
Witam
Możesz to zrobić tak:
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;
}
}
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
rasgan
(Marek Bednarczuk)
November 28, 2013, 11:46pm
3
Dziękuję ślicznie. Wszystko działa jak należy.