Yii使用Captcha验证码的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-07-02 11:23:23 浏览: 评论:0
这篇文章主要介绍了Yii使用Captcha验证码的方法,结合实例形式分析了Yii使用Captcha验证码的MVC三层具体实现技巧,需要的朋友可以参考下。
本文实例讲述了Yii使用Captcha验证码的方法,分享给大家供大家参考,具体如下:
详细代码可参考: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)); ?>
- <img src="http://www.XXXX.net/uploads/123456.jpg" alt="">
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
Tags: Captcha Yii验证码
相关文章
- ·CI框架验证码CAPTCHA辅助函数用法实例(2021-04-24)
- ·Laravel5.2使用Captcha生成验证码实现登录(session巨坑)(2021-08-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)