在Yii中使用Captcha验证码
来源:互联网 发布:mac系统恢复被删除 编辑:程序博客网 时间:2024/05/23 02:04
在Yii中使用Captcha验证码:
2,Controller
详细代码请参考:yii自带的示例代码post 项目,里面有一个contact表单用到了验证码.
1,Model:
将验证码加入UserLogin的一个属性:
- class UserLogin extends CFormModel
- {
- public $username;
- public $password;
- public $rememberMe;
- public $verifyCode;
- public function rules()
- {
- return array(
- // username and password are required
- array('username, password,verifyCode', 'required'),
- // rememberMe needs to be a boolean
- array('rememberMe', 'boolean'),
- // password needs to be authenticated
- array('password', 'authenticate'),
- // verifyCode needs to be entered correctly
- array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),
- );
- }
- /**
- * Declares attribute labels.
- */
- public function attributeLabels()
- {
- return array(
- 'rememberMe'=>Yii::t('user',"Remember me next time"),
- 'username'=>Yii::t('user',"username or email"),
- 'password'=>Yii::t('user',"password"),
- 'verifyCode'=>Yii::t('user','Verification Code'),
- );
- }
2,Controller
在LoginController控制器加入映射动作CCaptchaAction
- public function actions()
- {
- return array(
- // captcha action renders the CAPTCHA image displayed on the contact page
- 'captcha'=>array(
- 'class'=>'CCaptchaAction',
- 'backColor'=>0xf4f4f4,
- 'padding'=>0,
- 'height'=>30,
- 'maxLength'=>4,
- ),
- );
- }
- ublic function actionLogin()
- {
- if (Yii::app()->user->isGuest) {
- $model=new UserLogin;
- // collect user input data
- if(isset($_POST['UserLogin']))
- {
- $model->attributes=$_POST['UserLogin'];
- /在此核对验证码
- if($this->createAction('captcha')->validate($model->verifyCode, false))
- {
- // validate user input and redirect to previous page if valid
- if($model->validate()) {
- //admin login only
- if( Yii::app()->getModule('user')->isAdmin()==1 )
- {
- $this->lastViset();
- if (strpos(Yii::app()->user->returnUrl,'/index.php')!==false)
- $this->redirect(Yii::app()->controller->module->returnUrl);
- else
- $this->redirect(Yii::app()->user->returnUrl);
- }else
- {//if no admin when login out
- $this->redirect(Yii::app()->controller->module->logoutUrl);
- }
- }
- }else
- {//提示错误
- $model->addError('verifyCode','验证码不对');
- }
- }
- // display the login form
- $this->render('/user/login',array('model'=>$model));
- } else
- $this->redirect(Yii::app()->controller->module->returnUrl);
- }
在验证用户名密码前,检查验证码:
- if($this->createAction('captcha')->validate($model->verifyCode, false))
- {
3,view
在视图中显示验证码图片,输入框
- <?php $this->widget('CCaptcha'); ?>
- <?php echo CHtml::activeTextField($model,'verifyCode',array('tabindex'=>1)); ?>
- <pre name="code" class="php"><p><img src="http://my.csdn.net/uploads/201205/18/1337330851_3646.jpg" alt="">
- </p><p>---------------------------the end------------------------------------</p></pre>
- <pre></pre>
- <pre></pre>
0 0
- 在Yii中使用Captcha验证码
- 在Yii中使用Captcha验证码
- Yii 验证码(captcha)的使用
- Yii框架captcha验证码的使用
- yii验证码Captcha使用以及为什么验证码不刷新问题
- 使用BotDetect Captcha在SpringMCV项目中生成验证码图片
- Cakephp中使用Captcha实现更加安全的验证码
- Yii2.x 中captcha 验证码使用的一些心得
- 关于Yii 验证码(captcha)的一些…
- Javaweb中快速生成验证码Captcha
- 关于Captcha验证码组件的使用
- Yii Framework中验证码的使用
- YII- FRAMEWORK- 中验证码的使用
- 在spring MVC中引入captcha的插件生成图片验证码
- 验证码(CAPTCHA)
- captcha验证码入门
- 验证码 Captcha
- Go实战--golang中使用图片和验证码(dchest/captcha)
- 从研究生到程序员
- 零起步学习 电源知识及技术
- hdu 3035 War(平面图最小割)
- iOS正则表达式
- 字典树(Tries)
- 在Yii中使用Captcha验证码
- Android Studio加入jar包后无法加入工程
- JAVA深复制(深克隆)与浅复制(浅克隆)
- Typecho插件-相关阅读TEReadMore
- Java 编程的动态性,第 1 部分: 类和类装入
- WPF动态切换皮肤
- Serializable
- 【转】CentOS配置samba服务器后,windows无法访问解决方法。
- 一个mysql解决的问题:游标、字符串操作 类似另一篇 sql