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

这部分主要包含

1 基本控制器、模型、视图使用规则;

2 登录和注册在视图通过表单使用YII小物件并分析;

3 模型中规则制定和分析;

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

5 进行session和cookie分析 ,并在前后区分session和cookie;

6 生成验证码 ;

这期间也会会有错误,会不断修正

先看下目录结构:

1 基本控制器、模型、视图使用规则;

控制器:都需要继承Controller基类  进行外部访问的方法都需要以action做为方法名称的开始。

用方法形式访问其他类,需要定义actions方法,返回一个二维数组

模型:继承CActiveRecord,基本要实现:四个方法,一个是model,是静态public类型,用来返回模型名称,

一个talbeName,用来返回方法名称;

一个是attributeLabels,设置显示内容,将前面视图中英文转化为汉字,进行统一管理

一个是rules,设置一些验证规则

视图:主要是通过小物件来实现,$this -> beginWidget(‘CActiveForm‘);

此篇把主要贴下来,下面再进行调用讲解

前台控制器:

<?php
/**
 * 用户控制器
 */
class UserController extends Controller{
    /*
     * 验证码生成
     * 以下代码的意思:在当前控制器里边,以方法的形式访问其他类
     * 我们访问./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',
            ),
        );
    }

    /**
     *用户登录
     */
    function actionLogin(){
        echo $this -> id."<br />";
        echo $this -> action->id;

        //创建登录模型对象
        $user_login = new LoginForm;

        if(isset($_POST['LoginForm'])){
            //收集表单信息
            $user_login->attributes = $_POST['LoginForm'];

            //校验数据,走的是rules()方法
            //该地方不只校验用户名和密码是否填写,还要校验真实性(在模型里边自定义方法校验真实性)
            //用户信息进行session存储,调用模型里边的一个方法login(),就可以进行session存储

            if($user_login->validate() && $user_login->login()){
                $this ->redirect ('./index.php');
            }
        }

        $this -> render('login',array('user_login'=>$user_login));
    }

    /*
     * 实现用户注册功能:
     * 1. 展现注册表单
     * 2. 收集数据、校验数据、存储数据
     */
    function actionRegister(){
        //实例化数据模型对象user
        $user_model = new User();
        /**
         * renderPartial不渲染布局
         * render会渲染布局
         */
        //$this ->renderPartial('register');

        //性别信息
        $sex[1] = "男";
        $sex[2] = "女";
        $sex[3] = "保密";

        //定义学历
        $xueli[1] = "-请选择-";
        $xueli[2] = "小学";
        $xueli[3] = "初中";
        $xueli[4] = "高中";
        $xueli[5] = "大学";

        //定义爱好信息
        $hobby[1] = "篮球";
        $hobby[2] = "足球";
        $hobby[3] = "排球";
        $hobby[4] = "棒球";

        //如果用户有注册表单
        if(isset($_POST['User'])){
            //给模型收集表单信息
            //foreach($_POST['User'] as $_k => $_v){
            //    $user_model -> $_k = $_v;
            //}

            //收集转化爱好的信息implode
            if(is_array($_POST['User']['user_hobby']))
                $_POST['User']['user_hobby'] = implode(',',$_POST['User']['user_hobby']);

            //密码要md5加密
            $_POST['User']['password'] = md5($_POST['User']['password']);
            $_POST['User']['password2'] = md5($_POST['User']['password2']);

            //上边的foreach,在yii框架里边有优化,使用模型属性attributes来进行优化
            //attributes 属性已经把foreach集成好了,我们可以直接使用
            $user_model -> attributes = $_POST['User'];

            //实现信息存储
            if($user_model -> save())
                $this ->redirect ('./index.php');  //重定向到首页
        }

        $this -> render('register',array('user_model'=>$user_model,'sex'=>$sex,'xueli'=>$xueli,'hobby'=>$hobby));
    }

    function actionCc(){
        echo "cc";
    }

    /*
     * 用户退出系统
     */
    function actionLogout(){
        //删除session信息
        //Yii::app()->session->clear();  //删除内存里边sessiion变量信息
        //Yii::app()->session->destroy(); //删除服务器的session文件

        //session和cookie一并删除
        Yii::app()->user->logout();

        $this->redirect('/');
    }

    /*
     * session使用
     */
    function actionS1(){
        echo $this->id."<br />";
        echo $this->action->id."<br />";
        //设置session,通过session组件来设置
        Yii::app()->session['username'] = "zhangsan";
        Yii::app()->session['useraddr'] = "beijing";
        echo "make session success";
    }

    function actionS2(){
        //使用session
        echo Yii::app()->session['username'],"<br />";
        echo Yii::app()->session['useraddr'];
        echo "use session success";
    }

    function actionS3(){
        //删除一个session
        //unset(Yii::app()->session['useraddr']);

        //删除全部session
        Yii::app()->session->clear();  //删除session变量
        Yii::app()->session->destroy(); //删除服务器的session信息
    }

    /*
     * cookie在Yii框架使用
     */
    function actionC1(){
        //设置cookie
        $ck = new CHttpCookie('hobby','篮球,足球');
        $ck -> expire = time()+3600;
        //把$ck对象放入cookie组件里边
        Yii::app()->request->cookies['hobby'] = $ck;

        $ck2 = new CHttpCookie('sex','nan');
        $ck2 -> expire = time()+3600;
        //把$ck对象放入cookie组件里边
        Yii::app()->request->cookies['sex'] = $ck2;

        echo "cookie make success";
    }
    function actionC2(){
        //访问cookie
        echo Yii::app()->request->cookies['hobby'],"<br />";
        echo Yii::app()->request->cookies['sex'];
    }
    function actionC3(){
        //删除cookie
        unset(Yii::app()->request->cookies['sex']);
    }

    function actionLu(){
        //输出路径别名信息/yii就是框架直接可以操作使用的类
        //Yii::app() 是一个实例,是在当前框架里边唯一可以直接使用的实例对象
        //echo Yii::getPathOfAlias('system');  //D:\www\0507\framework
        //echo Yii::getPathOfAlias('system.web');  //D:\www\0507\framework\web
        //echo Yii::getPathOfAlias('application');  //D:\www\0507\shop\protected
        //echo Yii::getPathOfAlias('zii');  //D:\www\0507\framework\zii
        echo Yii::getPathOfAlias('webroot');  //D:/www/0507/shop

    }

    /*
     * 使用Yii::app()调用相关属性、方法
     */
    function actionAp(){
        echo Yii::app()->defaultController,"<br />";
        echo Yii::app()->layout,"<br />";
        echo Yii::app()->name,"<br />";
        echo Yii::app()->charset,"<br />";
        echo Yii::app()->getLayoutPath(),"<br />";
        echo Yii::app()->request->getUrl(),"<br />";
        echo Yii::app()->request->getHostInfo(),"<br />";
    }

    /*
     * 计算脚本执行时间
     */
    function actionTime(){
        //查看脚本开始时间
        Yii::beginProfile('mytime');
        for($i=0; $i<=100; $i++){
            if($i%7==0)
                echo "seven<br />";
            else if($i%8==0)
                echo "eight<br />";
            else
                echo $i."<br />";
        }
        Yii::endProfile('mytime');
    }
}

前台user模型:

User.php

<?php
/**
 * 用户模型model
 * 两个基本方法:
 * model
 * tableName
 */
class User extends CActiveRecord{
    //在当前模型增加一个属性password2,因为数据库表里边没有这个属性
    //我们可以在当前类直接设置这个属性使用
    public $password2;

    //获得数据模型方法
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    //定义数据表名字
    public function tableName(){
        return "{{user}}";
    }

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

    /*
     * 实现用户注册表单验证
     * 在模型里边设置一个方法,定义具体表单域验证规则
     */
    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','爱好必须选择两项或以上');
    }
}

前台登陆视图:

login.php

<style type="text/css">
    div .errorMessage{color:red;}
    label  .required {color:red;}
</style>

            <div class="block box">
            <div class="usBox clearfix">
                <div class="usBox_1 f_l">
                    <div class="logtitle"></div>
                    <?php $form = $this -> beginWidget('CActiveForm'); ?>
                        <table align="left" border="0" cellpadding="3" cellspacing="5" width="100%">
                            <tbody><tr>
                                    <td align="right" width="25%">
                                        <?php echo $form->labelEx($user_login,'username'); ?>
                                    </td>
                                    <td width="75%">
                                        <?php echo $form->textField($user_login,'username',array('size'=>25,'class'=>'inputBg')); ?>
                                        <?php echo $form->error($user_login,'username'); ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td align="right">
                                        <?php echo $form->labelEx($user_login,'password'); ?>
                                    </td>
                                    <td>
                                        <?php echo $form->textField($user_login,'password',array('size'=>15,'class'=>'inputBg')); ?>
                                        <?php echo $form->error($user_login,'password'); ?>
                                    </td>
                                </tr>
                                <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','maxlength'=>4)); ?>
                                        <!--显示验证码图片/使用小物件显示验证码-->
                                        <?php $this -> widget('CCaptcha'); ?>
                                        <?php echo $form->error($user_login,'verifyCode'); ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td align="right">
                                        <?php echo $form->checkBox($user_login, 'rememberMe'); ?>
                                    </td>
                                    <td>
                                        <?php echo $form->labelEx($user_login, 'rememberMe'); ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td> </td>
                                    <td align="left">
                                        <input name="submit" value="" class="us_Submit" type="submit" />
                                    </td>
                                </tr>
                                <tr><td></td><td><a href="#" class="f3">密码问题找回密码</a>   <a href="#" class="f3">注册邮件找回密码</a></td></tr>
                            </tbody>
                        </table>
                    <?php $this->endWidget(); ?>
                    <div class="blank"></div>
                </div>
                <div class="usTxt">
                    <div class="regtitle"></div>
                    <div style="padding-left: 50px;">
                        <strong>如果您不是会员,请注册</strong>  <br />
                        <strong class="f4">友情提示:</strong><br />
                        不注册为会员也可在本店购买商品<br />
                        但注册之后您可以:<br />
                        1. 保存您的个人资料<br />
                        2. 收藏您关注的商品<br />
                        3. 享受会员积分制度<br />
                        4. 订阅本店商品信息  <br />
                        <a href="#"><img src="<?php echo IMG_URL; ?>bnt_ur_reg.gif"></a>
                    </div>
                </div>
            </div>
            </div>
            </div>
            

前台register.php视图

         <!--放入view具体内容-->
<style type="text/css">
    div .errorMessage{color:red;}
    label  .required {color:red;}
</style>
            <div class="block box">
                <div class="usBox">
                    <div class="usBox_2 clearfix">
                        <div class="logtitle3"></div>
                        <?php $form = $this -> beginWidget('CActiveForm',
                                    array(
                                            'enableClientValidation'=>true,
                                            'clientOptions'=>array(
                                                    'validateOnSubmit'=>true,
                                            ),
                                    )
                                );
                        ?>
                        <table cellpadding="5" cellspacing="3" style="text-align:left; width:100%; border:0;">
                                <tbody>
                                    <tr>
                                        <td style="width:13%; text-align: right;">
                                            <?php echo $form->labelEx($user_model, 'username'); ?>
                                        </td>

                                        <td style="width:87%;">
                                             <?php echo $form->textField($user_model,'username',array('class'=>'inputBg','id'=>'User_username')); ?>
                                            <!--表单验证失败显示错误信息-->
                                            <?php echo $form ->error($user_model,'username'); ?>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right">
                                           <?php echo $form->labelEx($user_model, 'password'); ?>
                                        </td>

                                        <td>
                                            <?php echo $form->passwordField($user_model,'password',array('class'=>'inputBg','id'=>'User_password')); ?>
                                            <?php echo $form ->error($user_model,'password'); ?>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right">
                                            <?php echo $form->label($user_model,'password2') ?>
                                        </td>
                                        <td>
                                             <?php echo $form->passwordField($user_model,'password2',array('class'=>'inputBg','id'=>'User_password2')); ?>
                                            <?php echo $form ->error($user_model,'password2'); ?>
                                        </td>

                                    </tr>
                                    <tr>
                                        <td align="right"><?php echo $form->label($user_model, 'user_email'); ?></td>
                                        <td>
                                            <?php echo $form->textField($user_model,'user_email',array('class'=>'inputBg','id'=>'User_user_email')); ?>
                                            <?php echo $form->error($user_model,'user_email'); ?>
                                        </td>
                                    </tr>
                                    <tr>

                                        <td align="right"><?php echo $form->label($user_model, 'user_qq'); ?></td>
                                        <td>
                                            <?php echo $form->textField($user_model,'user_qq',array('class'=>'inputBg','id'=>'User_user_qq')); ?>
                                            <?php echo $form->error($user_model,'user_qq'); ?>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right"><?php echo $form->label($user_model, 'user_tel'); ?></td>
                                        <td>
                                            <?php echo $form->textField($user_model,'user_tel',array('class'=>'inputBg','id'=>'User_user_tel','maxlength'=>11)); ?>
                                            <?php echo $form->error($user_model,'user_tel'); ?>
                                        </td>
                                    </tr>
                                    <tr>
                                        <!--radioButtonList($model,$attribute,$data,$htmlOptions=array())-->
                                        <td align="right"><?php echo $form->label($user_model, 'user_sex'); ?></td>
                                        <td>
                                            <?php echo $form->radioButtonList($user_model,'user_sex',$sex,array('separator'=>' ')); ?>
                                        </td>
                                    </tr>
                                    <tr>
                                        <!--dropDownList($model,$attribute,$data,$htmlOptions=array())-->
                                        <td align="right"><?php echo $form->label($user_model, 'user_xueli'); ?></td>
                                        <td>
                                            <?php echo $form -> dropDownList($user_model,'user_xueli',$xueli); ?>
                                            <?php echo $form->error($user_model,'user_xueli'); ?>
                                        </td>
                                    </tr>
                                    <tr>
                                        <!--checkBoxList($model,$attribute,$data,$htmlOptions=array())-->
                                        <td align="right"><?php echo $form->label($user_model, 'user_hobby'); ?></td>
                                        <td>
                                            <?php echo $form -> checkBoxList($user_model,'user_hobby',$hobby,array('separator'=>' ')); ?>
                                            <?php echo $form->error($user_model,'user_hobby'); ?>
                                        </td>
                                    </tr>
                                    <tr>

                                        <!--textArea($model,$attribute,$htmlOptions=array())-->
                                        <td align="right"><?php echo $form->label($user_model, 'user_introduce'); ?></td>
                                        <td>
                                            <?php echo $form -> textArea($user_model,'user_introduce',array('cols'=>50,'rows'=>5)); ?>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td> </td>

                                        <td align="left">
                                            <input name="Submit" value="" class="us_Submit_reg" type="submit" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td colspan="2"> </td>
                                    </tr>
                                </tbody>
                            </table>

                        <?php $this->endWidget(); ?>
                    </div>
                </div>
            </div>
            <!--放入view具体内容-->

        </div>

后台管理员登陆模块

控制器:ManagerController.php

<?php
/**
 * 后台管理员登录控制器
 */
class ManagerController extends Controller{
    /*
     * 实现用户登录
     */
    function actionLogin(){
        $login_model = new LoginForm();

        if(isset($_POST['LoginForm'])){
            $login_model->attributes = $_POST['LoginForm'];

            //用户名和密码(包括真实性)判断validate,持久化session信息login
            if($login_model->validate() &&  $login_model->login())
                $this->redirect('./index.php?r=houtai/index/index');
        }

        //调用模板
        $this ->renderPartial('login',array('login_model'=>$login_model));
    }

    /*
     * 管理员退出系统
     */
    function actionLogout(){
        //删除session变量
        Yii::app()->session->clear();

        //删除服务器session信息
        Yii::app()->session->destroy();

        //页面重定向到登录页面
        $this -> redirect('./index.php?r=houtai/manager/login');
    }

}

后台模型:

Manager.php

<?php
/**
 * 后天管理员数据模型manager
 * 基本方法:
 * model()
 * tableName()
 * rules()
 * attributeLabels()
 */
class Manager extends CActiveRecord{
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public function tableName() {
        return '{{manager}}';
    }

}

LoginForm.php

<?php

/**
 * LoginForm class.
 * LoginForm is the data structure for keeping
 * user login form data. It is used by the 'login' action of 'SiteController'.
 */
class LoginForm extends CFormModel
{
	public $username;
	public $password;

	private $_identity;

	/**
	 * Declares the validation rules.
	 * The rules state that username and password are required,
	 * and password needs to be authenticated.
	 */
	public function rules()
	{
		return array(
			// username and password are required
			array('username', 'required','message'=>'用户名必填'),
			array('password', 'required','message'=>'密码必填'),
			// password needs to be authenticated
			//array('password', 'authenticate'),
                    //校验用户名和密码的真实性,通过自定义方法实现校验
                    array('password','authenticate'),
		);
	}
	/**
	 * Authenticates the password.
	 * This is the 'authenticate' validator as declared in rules().
	 */
	public function authenticate($attribute,$params)
	{
		if(!$this->hasErrors())
		{
			$this->_identity=new UserIdentity($this->username,$this->password);
			if(!$this->_identity->authenticate())
				$this->addError('password','用户名或密码不存在');
		}
	}
	/**
	 * Declares attribute labels.
	 */
	public function attributeLabels()
	{
		return array(
                    'username'=>'用户名',
                    'password'=>'密    码',
		);
	}

	/**
	 * Logs in the user using the given username and password in the model.
	 * @return boolean whether login is successful
	 */
	public function login()
	{
		if($this->_identity===null)
		{
			$this->_identity=new UserIdentity($this->username,$this->password);
			$this->_identity->authenticate();
		}
		if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
		{
			//$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
			Yii::app()->user->login($this->_identity,$duration);
			return true;
		}
		else
			return false;
	}
}

视图login.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta content="MSHTML 6.00.6000.16674" name="GENERATOR" />

        <title>用户登录</title>
<style type="text/css">
.errorMessage {clear:both;}
</style>
        <link href="<?php echo HOUTAI_CSS_URL ?>User_Login.css" type="text/css" rel="stylesheet" />
    </head><body id="userlogin_body">
        <div></div>
        <div id="user_login">
            <dl>
                <dd id="user_top">
                    <ul>
                        <li class="user_top_l"></li>
                        <li class="user_top_c"></li>
                        <li class="user_top_r"></li></ul>
                </dd><dd id="user_main">
                    <?php $form = $this -> beginWidget('CActiveForm'); ?>
                        <ul>
                            <li class="user_main_l"></li>
                            <li class="user_main_c">
                                <div class="user_main_box">
                                    <ul>
                                        <li class="user_main_text">
                                            <?php echo $form -> labelEx($login_model, 'username'); ?>
                                        </li>
                                        <li class="user_main_input">
                                            <?php echo $form -> textField($login_model,'username',array('class'=>'TxtUserNameCssClass','maxlength'=>20)); ?>
                                            <?php echo $form->error($login_model,'username'); ?>
                                        </li></ul>
                                    <ul>
                                        <li class="user_main_text"><?php echo $form -> labelEx($login_model, 'password'); ?> </li>
                                        <li class="user_main_input">
                                           <?php echo $form -> textField($login_model,'password',array('class'=>'TxtPasswordCssClass','maxlength'=>20)); ?>
                                            <?php echo $form->error($login_model,'password'); ?>
                                        </li>
                                    </ul>
                                </div>
                            </li>
                            <li class="user_main_r">

                                <input style="border: medium none; background: url('<?php echo HOUTAI_IMG_URL; ?>user_botton.gif') repeat-x scroll left top transparent; height: 122px; width: 111px; display: block; cursor: pointer;" value="" type="submit">
                            </li>
                        </ul>
                    <?php $this -> endWidget(); ?>
                </dd><dd id="user_bottom">
                    <ul>
                        <li class="user_bottom_l"></li>
                        <li class="user_bottom_c"><span style="margin-top: 40px;"></span> </li>
                        <li class="user_bottom_r"></li></ul></dd></dl></div><span id="ValrUserName" style="display: none; color: red;"></span><span id="ValrPassword" style="display: none; color: red;"></span><span id="ValrValidateCode" style="display: none; color: red;"></span>
        <div id="ValidationSummary1" style="display: none; color: red;"></div>
    </body>
</html>

好吧,代码有点多,下面就进行分析细节。

时间: 2024-07-31 16:30:11

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

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

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

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

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

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

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

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

3 模型中规则制定和分析 YII模型主要分为两类,一个数据模型,处理和数据库相关的增删改查,继承CActiveRecord:另一个是表单模型,继承CFormModel,不与数据库进行交互,操作与数据模型保持一致. 先分析数据模型: 数据模型基本包含四个方法,这里有两个需要注意的地方: 1 还记得视图中有确认密码选项吗?数据库中没有这一个字段,不进行处理的话,程序会报错 处理方法:声明这样变量,并将这个变量进行label映射 如下: public $password2; // //设置标签名字与数

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-&

XMPP系列----------用户注册和用户登录功能

1.创建一个新工程 2.导入XMPP框架 最新的XMPP框架下载地址:https://github.com/robbiehanson/XMPPFramework 将XMPP的几个文件夹拖进工程中,需要的文件如下: 然后把Sample_XMPPFramework.h改名为XMPPFramework.h 接下来导入两个依赖库:libresolv.dylib和libxml2.dylib,然后添加header search: 再添加一个pch文件 在pch文件中添加如下代码: #ifdef __OBJC

asp.net MVC C# LIgerUI实现用户登录功能login

1.创建一个项目,命名为MyLogin,选择空模板 2.创建一个控制器,命名为Home. 3.为控制器里的方法Index创建一个(主页)视图,命名为Index. 4.在视图Index里修改内容 5.添加一个方法命名为Login. 6.为方法Login添加一个视图命名为Login. 7.更改路由 8.为控制器添加一个有两个参数的方法Login1,并修改内容. 9.找到content文件夹及其下面的jquery和ligerui文件夹,如果没有,则需要从其他地方先添加content文件夹及其内容 10

(三)学习MVC之密码加密及用户登录

1.密码加密采用SHA256 算法,此类的唯一实现是 SHA256Managed.在Common/Text.cs里添加Sha256方法: public static string Sha256(string plainText) { SHA256Managed _sha256 = new SHA256Managed(); byte[] _cipherText = _sha256.ComputeHash(Encoding.Default.GetBytes(plainText)); return C