Yii Framework 开发教程(21) UI 组件 自定义Captcha示例
2014-01-19 09:56
495 查看
Yii内置的Captcha基本上可以满足大部分需求,如果你对验证码有特殊要求,你可以自定义Captcha,这主要是通过扩展CCaptchaAction来实现的,本例自定义一个验证码功能,随机产生10以内的加减法,用户需要计算出正确的结果才能通过验证。
本例基于上例Yii
Framework 开发教程(20) UI 组件 Captcha示例,做如下修改
首先在protected/components 目录下创建一个MathCaptchaAction,重载generateVerifyCode, renderImage等方法:
[php]
view plaincopyprint?
class MathCaptchaAction extends CCaptchaAction
{
protected function generateVerifyCode()
{
return mt_rand((int)$this->minLength,
(int)$this->maxLength);
}
public function renderImage($code)
{
parent::renderImage($this->getText($code));
}
protected function getText($code)
{
$code=(int)$code;
$rand=mt_rand(1,$code-1);
$op=mt_rand(0,1);
if($op)
{
return $code-$rand. '+' . $rand;
}else
{
return $code+$rand. '-' . $rand;
}
}
}
然后修改SiteController的rules 使用新创建的MathCaptchaAction
[php]
view plaincopyprint?
public function actions()
{
return array(
'captcha'=>array(
'class' => 'MathCaptchaAction',
'minLength' => 1,
'maxLength' => 10,
));
}
![](http://www.imobilebbs.com/wordpress/wp-content/uploads/2012/12/201212126003.png)
本例下载
更多
Yii内置的Captcha基本上可以满足大部分需求,如果你对验证码有特殊要求,你可以自定义Captcha,这主要是通过扩展CCaptchaAction来实现的,本例自定义一个验证码功能,随机产生10以内的加减法,用户需要计算出正确的结果才能通过验证。
本例基于上例Yii
Framework 开发教程(20) UI 组件 Captcha示例,做如下修改
首先在protected/components 目录下创建一个MathCaptchaAction,重载generateVerifyCode, renderImage等方法:
[php]
view plaincopyprint?
class MathCaptchaAction extends CCaptchaAction
{
protected function generateVerifyCode()
{
return mt_rand((int)$this->minLength,
(int)$this->maxLength);
}
public function renderImage($code)
{
parent::renderImage($this->getText($code));
}
protected function getText($code)
{
$code=(int)$code;
$rand=mt_rand(1,$code-1);
$op=mt_rand(0,1);
if($op)
{
return $code-$rand. '+' . $rand;
}else
{
return $code+$rand. '-' . $rand;
}
}
}
class MathCaptchaAction extends CCaptchaAction { protected function generateVerifyCode() { return mt_rand((int)$this->minLength, (int)$this->maxLength); } public function renderImage($code) { parent::renderImage($this->getText($code)); } protected function getText($code) { $code=(int)$code; $rand=mt_rand(1,$code-1); $op=mt_rand(0,1); if($op) { return $code-$rand. '+' . $rand; }else { return $code+$rand. '-' . $rand; } } }
然后修改SiteController的rules 使用新创建的MathCaptchaAction
[php]
view plaincopyprint?
public function actions()
{
return array(
'captcha'=>array(
'class' => 'MathCaptchaAction',
'minLength' => 1,
'maxLength' => 10,
));
}
public function actions() { return array( 'captcha'=>array( 'class' => 'MathCaptchaAction', 'minLength' => 1, 'maxLength' => 10, )); }
![](http://www.imobilebbs.com/wordpress/wp-content/uploads/2012/12/201212126003.png)
本例下载
更多
相关文章推荐
- Yii Framework 开发教程(20) UI 组件 Captcha示例
- Yii Framework 开发教程(21) UI 组件 自定义Captcha示例
- Yii Framework 开发教程(20) UI 组件 Captcha示例
- Yii Framework 开发教程(10) UI 组件 自定义组件
- Yii Framework 开发教程(19) UI 组件 TreeView示例
- Yii Framework 开发教程(10) UI 组件 自定义组件
- Yii Framework 开发教程(18) UI 组件 TextHighlighter示例
- Yii Framework 开发教程(9) UI 小组件Widget 概述
- Yii Framework 开发教程(32) Zii组件-GridView示例
- Yii Framework 开发教程(12) UI 组件 ClipWidget示例
- Yii Framework 开发教程(33) Zii组件-Accordion示例
- Yii Framework 开发教程(36) Zii组件-DatePicker示例
- Yii Framework 开发教程(9) UI 小组件Widget 概述
- Yii Framework 开发教程(15) UI 组件 MultiFileUpload示例
- Yii Framework 开发教程(17) UI 组件 TabView示例
- Yii Framework 开发教程(29) Zii组件-Menu 示例
- Yii Framework 开发教程(13) UI 组件 ContentDecorator示例
- Yii Framework 开发教程(34) Zii组件-AutoComplete示例
- Yii Framework 开发教程(30) Zii组件-ListView 示例
- Yii Framework 开发教程(35) Zii组件-Button示例