6 生成验证码 ;
7 控制器用方法形式访问其他类;
验证码具体验证原理:
画图的同时就把验证编码进行session存储,用户输入的验证码信息与我们session里边存放的信息做比较。
视图部分:
<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>
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'=>'请输入正确的验证码'), ); }
校验规则哪里来?山东技校找蓝翔!
控制器部分:
/* * 验证码生成 * 以下代码的意思:在当前控制器里边,以方法的形式访问其他类 * 我们访问./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', ), ); }分析:
表单部分与控制器部分的联系:
$this->widget(‘CCaptcha’); 会间接调用控制器的方法 路由user/captcha
更改验证码: