YII MVC之用户注册和用户登录(三)

3
模型中规则制定和分析

YII模型主要分为两类,一个数据模型,处理和数据库相关的增删改查,继承CActiveRecord;另一个是表单模型,继承CFormModel,不与数据库进行交互,操作与数据模型保持一致。

先分析数据模型:

数据模型基本包含四个方法,这里有两个需要注意的地方:

1 还记得视图中有确认密码选项吗?数据库中没有这一个字段,不进行处理的话,程序会报错

处理方法:声明这样变量,并将这个变量进行label映射

如下:

    public $password2; //
    //设置标签名字与数据库字段对应
    public function attributeLabels() {
        return array(
            'username'=>'用户名',
            'password'=>'密  码',
            'password2'=>'确认密码',
            'user_sex'=>'性  别',
            'user_qq'=>'qq号码',
            'user_hobby'=>'爱  好',
            'user_xueli'=>'学  历',
            'user_introduce'=>'简  介',
            'user_email'=>'邮  箱',
            'user_tel'=>'手机号码',
        );
    }

2 验证规则制定:

    /*
     * 实现用户注册表单验证
     * 在模型里边设置一个方法,定义具体表单域验证规则
     */
    public function rules() {
        return array(

            array('username','required','message'=>'用户名必填'),

            //用户名不能重复(与数据库比较)
            array('username', 'unique', 'message'=>'用户名已经占用'),

            array('password','required','message'=>'密码必填'),

            //验证确认密码password2  要与密码的信息一致
            array('password2','compare','compareAttribute'=>'password','message'=>'两次密码必须一致'),

            //邮箱默认不能为空
            array('user_email','email','allowEmpty'=>false,  'message'=>'邮箱格式不正确'),

            //验证qq号码(都是数字组成,5到12位之间,开始为非0信息,使用正则表达式验证)
            array('user_qq','match','pattern'=>'/^[1-9]\d{4,11}$/','message'=>'qq格式不正确'),

            //验证手机号码(都是数字,13开始,一共有11位)
            array('user_tel','match','pattern'=>'/^13\d{9}$/','message'=>'手机号码格式不正确'),

            //验证学历(信息在2、3、4、5之间则表示有选择,否则没有),1正则;2范围限制
            //范围限制
            array('user_xueli','in','range'=>array(2,3,4,5),'message'=>'学历必须选择'),

            //验证爱好:必选两项以上(自定义方法对爱好进行验证)
            array('user_hobby','check_hobby'),

            //为没有具体验证规则的属性,设置安全的验证规则,否则attributes不给接收信息
            array('user_sex,user_introduce','safe'),
        );
    }

    /*
     * 在当前模型里边定义一个方法check_hobby对爱好进行验证
     */
    function check_hobby(){
        //在这个方法里边,我们可以获得模型的相关信息
        //$this -> 属性名;  //调用模型对象的相关属性信息
        //$this 就是我们在控制器controller里边实例化好的模型对象

        $len = strlen($this -> user_hobby);
        if($len < 3)
            $this -> addError('user_hobby','爱好必须选择两项或以上');
    }

还有没有别的验证规则?

有的,见下图:

表单模型:主要用于收集用户信息。

整个过程:

在组件中的修改:

就此OK。

时间: 2024-11-03 22:19:01

YII MVC之用户注册和用户登录(三)的相关文章

【web开发】★☆之基于Map实现(用户登录三次失败后)24小时之内限制登录!

[web开发]★☆之基于Map实现(用户登录三次失败后)24小时之内限制登录! 近期在改一个老项目(struts1做的),客户现在想实现如下效果,用户在登录失败三次之后,锁定用户,需要信息部管理人员进行解锁!我第一想法,是在其数据库User表中加一个字段,记录登录失败的次数,但是数据库添加字段需要远程操作数据库,而对方的数据库又被各种加密软件包围!不是很方便,所以想了一下解决方案,利用Map来进行处理! 首先说一个思路,新建实体类,只有两个属性,登录失败次数,登录时间,实现get,set方法!

spring MVC使用Interceptor做用户登录判断

在任何一个项目中,我们必须要用到的就是用户登录,那么就少不了用户是否登录的判断,如果我们每一个请求都要去做一次判断,那么就会变得很麻烦,但我们复制粘贴的时候我们就要考虑我们的代码写的是不是有问题,是不是可以重构一下,这里借鉴一下项目中的这种模式: package interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import logic

YII MVC之用户注册和用户登录(一)

这部分主要包含 1 基本控制器.模型.视图使用规则: 2 登录和注册在视图通过表单使用YII小物件并分析: 3 模型中规则制定和分析: 4 控制器用方法形式访问其他类: 5 进行session和cookie分析 ,并在前后区分session和cookie: 6 生成验证码 : 这期间也会会有错误,会不断修正 先看下目录结构: 1 基本控制器.模型.视图使用规则: 控制器:都需要继承Controller基类  进行外部访问的方法都需要以action做为方法名称的开始. 用方法形式访问其他类,需要定

YII MVC之用户注册和用户登录(五)

5 进行session和cookie分析 ,并在前后区分session和cookie: 记住登录状态 这样下次再登录网站的时候,就不用重复输入用户名和密码. 是浏览器的cookie把状态给记住了. 制作表单: <tr> <td align="right"> <?php echo $form->checkBox($user_login, 'rememberMe'); ?> </td> <td> <?php echo

python之用户登录三次锁定

基于文件存储的用户登录程序(3次登录失败,锁定用户) 思路:1.login.user是存放用户id及密码的文件,也就是白名单:2.lock.user是存放被锁定的用户id的文档,默认为空,也就是黑名单:3.程序会先检查输入的用户名是否存在于黑名单中,如果有,则退出,并提示此用户被锁定,否则继续检查白名单:4.程序先对login.user里的合法用户id进行判断,若连续输入用户id错误达三次程序直接退出:4.程序最后会对输入的id,对应的密码进行判断,输入密码有3次机会,连续三次错误则会锁定用户i

【Python】用户登录三次锁定

需求说明: 用户登录,对密码进行三次校验,三次均失败后,将锁定用户名,不允许登录. 解决方案: 1.明确可成功登录的用户名和密码: 2.用户黑名单,三次登录失败后,将用户名写入黑名单: 3.检测黑名单的内容,如果与当前登录名一致,则不允许继续输入密码,直接提示用户已锁定. 代码实现: 1 # -*- coding:utf-8 -*- 2 3 #登录三次锁定用户 4 5 #用于计数(循环三次的判断) 6 count = 0 7 8 #真实用户名和密码 9 real_username = "iamx

YII MVC之用户注册和用户登录(二)

2 登录和注册在视图通过表单使用YII小物件并分析 <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClientValidation'=>true, 'clientOptions'=>array( 'validateOnSubmit'=>true, ), ) ); ?> <?php $this->endWidget(); ?> $this是什么?控制器?小物件对象?还是?

YII用户注册和用户登录(二)之登录和注册在视图通过表单使用YII小物件并分析

登录和注册在视图通过表单使用YII小物件并分析 [php] view plain copy print? <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClientValidation'=>true, 'clientOptions'=>array( 'validateOnSubmit'=>true, ), ) ); ?> <?php $this->endWidget(); ?&

YII MVC之用户注册和用户登录(六)

6 生成验证码 : 7 控制器用方法形式访问其他类: 验证码具体验证原理: 画图的同时就把验证编码进行session存储,用户输入的验证码信息与我们session里边存放的信息做比较. 视图部分: <tr> <td align="right"> <?php echo $form->labelEx($user_login, 'verifyCode'); ?> </td> <td> <?php echo $form-&