YIIMVC之用户注册和用户登录

原文  http://blog.csdn.net/buyingfei8888/article/details/40457731

这部分主要包含

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,

转载于:https://www.cnblogs.com/tongfu/p/6726889.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值