YII用户注册和用户登录(六)之生成验证码

6 生成验证码 ;

7 控制器用方法形式访问其他类;

验证码具体验证原理:

画图的同时就把验证编码进行session存储,用户输入的验证码信息与我们session里边存放的信息做比较。

YII用户注册和用户登录(六)之生成验证码_第1张图片

视图部分:

                                <tr>
                                    <td align="right">
                                        <?php echo $form->labelEx($user_login, 'verifyCode'); ?>
                                    </td>
                                    <td>
                                        <?php echo $form->textField($user_login, 'verifyCode',array('size'=>15,'class'=>'inputBg',)); ?>
                                        <!--显示验证码图片/使用小物件显示验证码-->
                                        <?php $this -> widget('CCaptcha'); ?>
                                        <?php echo $form->error($user_login,'verifyCode'); ?>
                                    </td>
                                </tr>
YII用户注册和用户登录(六)之生成验证码_第2张图片
模型部分(登录表单模型):

        public $verifyCode; //验证码属性
	public function attributeLabels()
	{
		return array(
                    'username'=>'用户名',
                    'password'=>'密  码',
                    'verifyCode'=>'验证码',
                    'rememberMe'=>'记住登录状态',
		);
	}
	public function rules()
	{
		return array(
			// username and password are required
			array('username', 'required','message'=>'用户名必填'),
			array('password', 'required','message'=>'密码必填'),
			// rememberMe needs to be a boolean
			array('rememberMe', 'boolean'),
			// password needs to be authenticated
			//array('password', 'authenticate'),
                    //校验用户名和密码的真实性,通过自定义方法实现校验
                    array('password','authenticate'),
                    
                    //对验证码进行校验
                    array('verifyCode','captcha','message'=>'请输入正确的验证码'),
		);
	}

校验规则哪里来?山东技校找蓝翔!

YII用户注册和用户登录(六)之生成验证码_第3张图片

控制器部分:

    /*
     * 验证码生成
     * 以下代码的意思:在当前控制器里边,以方法的形式访问其他类
     * 我们访问./index.php?r=user/captcha就会访问到以方法的CCaptchaAction 此时会有验证码图案生成
     *          会走CCaptchaAction类里边的run()方法 
     * 控制器不负责显示图片
     * 
     * 谁会过来使用 user/captcha 这个路由
     * 答:是视图表单间接过来调用($this->widget('CCaptcha'))
     */
    function actions(){
        return array(
            'captcha'=>array(
                'class'=>'system.web.widgets.captcha.CCaptchaAction',
                'width'=>75, //设置验证码 宽高
                'height'=>30,
            ),
            
            //我们在外边随便定义一个类,都可以通过这种方式访问
            // user/co 就会访问Computer.php里边的run()方法
            'co'=>array(
                'class'=>'application.controllers.Computer',
            ),
        );
    }

YII用户注册和用户登录(六)之生成验证码_第4张图片

分析:

表单部分与控制器部分的联系:

$this->widget(CCaptcha);  会间接调用控制器的方法  路由user/captcha


更改验证码:




你可能感兴趣的:(YII用户注册和用户登录(六)之生成验证码)