位置: 编程技术 - 正文

Yii2框架实现注册和登录教程(yii框架教程)

编辑:rootadmin

推荐整理分享Yii2框架实现注册和登录教程(yii框架教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yii框架教程,yii2框架中文手册,yii2框架从入门到精通,yii2框架运行原理,yii2框架中文手册,yii2框架结构,yii2框架从入门到精通,yii2框架运行原理,内容如对您有帮助,希望把文章链接给更多的朋友!

注册

在advanced模板中,进入frontend/index.php&#;r=site%2Fsignup页面,可以看到框架的注册页面

填写完Username、Email和Password后点击Signup后,如果格式不对,frontend/models/SignuForm中的rules()函数会进行初步验证,所有格式正确后,数据传输到 frontend/controllers /SiteController中的 actionSignup()函数中,函数加载用户输入的注册信息,在frontend/models/SignupForm中的signup()函数,

以下引用的文字为解释函数中的具体细节,不阅读不影响整体,因为没有折叠文字功能,故采用引用的方法,下同

signup() 函数首先调用 yii2/base/Model中的validate() 函数进行验证 第一步,清除使用frontend/models/SignuForm中的rules()函数在用户输入时的错误信息

第二步,beforeValidate()函数触发beforeValidate事件并返回true第三步,设置scenario,默认是default第四步,因为这里的$attributeNames为null,

执行后返回

array(3) { [0]=> string(8) "username" [1]=> string(5) "email" [2]=> string(8) >"password" }

第五步,$this->getActiveValidators()会得到frontend/models/SignuForm中的rules()中条验证规则给validateAttributes()进行验证

第六步,执行afterValidate()函数触发afterValidate事件

最后 如果所有验证都通过,$this->hasErrors()为false,所以函数最后返回true

我们看一下数据表user的字段

Yii2框架实现注册和登录教程(yii框架教程)

用户输入了username、password和email,Yii2框架是如何生成其他的字段的呢,先看password_hash,在SignupFrom中的signup函数中的密码生成是setPassword函数,该函数在common/models/User中,setPassword函数调用了yii2/base/Security中的每一条规则generatePasswordHash函数。

如果有,就使用password_hash函数进行加密,如果PHP没有password_hash函数,就使用crypt函数加密,初步判断应该是为了兼容PHP低于5.5的版本,毕竟大于5.5的版本才开始有password_hash函数

common/models/User的signup()函数在对password加密后,就会继续生成一个auth key,auth key是当用户在登录的时候点击 remember me的时候的验证信息,

auth key生成的方法也是在yii2/base/Security中的generateRandomString,generateRandomString调用generateRandomKey函数,如果你的PHP版本为是5.2~5.6或者是7,那就是用random_bytes生成一个个字节的字符串,如果不是,当你用的系统时windows并且安装了OpenSSL,就会调用openssl_random_pseudo_bytes函数生成,如果你未安装OpenSSL,就会使用mcrypt_create_iv生成。

如果你使用的系统不是windows,就需要调用/dev/urandom,FreeBSD系统特殊,会调用/dev/random,然后调用stream_set_read_buffer方法生成8字节的字符文件,生成后,通过fread函数读取该文件中的个字节,然后返回该数据。password_reset_token在用户注册的时候是为空的,当用户忘记密码在登录页面点击reset it 后生成的,用来给用法发送邮件后重置密码时进行验证。

status 在common/models/User中定义的

const STATUS_DELETED = 0;const STATUS_ACTIVE = ;

用户注册时rules中的status默认为为,created_time和updated_time也是在common/models/User中的behaviors()函数中生成

用户的数据验证合格,加上框架生成的数据,然后存储进数据的user表里。

登录

关于frontend/controllers/SiteController中的actionSignup()中的

就是用户注册后,这时该用户的数据已经写入数据库了,开始登录的过程了

登录的过程在yii2/web/User里的login()函数中

第一步,执行beforeLogin()函数触发beforeLogin事件第二步,switchIdentity()函数把个人信息换成当前用户的信息,把所有的cookie都销毁,然后把当前用户的信息都存入到session和cookie中第三步,获取当前用户的id和用户登录的ip,并写入到log中第四步,执行afterLogin()函数触发afterLogin事件

最后 返回true

判断登录成功后,return $this->goHome();跳转到主页。

利用PHP生成静态html页面的原理 前言如果每次用户点击动态链接的时候都会对服务器发送数据查询的要求,对于一个访问量可能达百万千万级别的网站来说这无疑是服务器一个大大的

linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程 本文实例讲述了linux平台编译安装PHP7并安装Redis扩展与Swoole扩展的方法。分享给大家供大家参考,具体如下:前面《PHP7安装Redis扩展教程【Linux与Windows平

php通过执行CutyCapt命令实现网页截图的方法 本文实例讲述了php通过执行CutyCapt命令实现网页截图的方法。分享给大家供大家参考,具体如下:用php使用exec执行命令PS.默认情况下exec函数是禁用的,

标签: yii框架教程

本文链接地址:https://www.jiuchutong.com/biancheng/301828.html 转载请保留说明!

上一篇:php多线程并发实现方法(php多线程编程)

下一篇:利用PHP生成静态html页面的原理(利用php生成静态数据)

  • 企业缴纳增值税会计科目怎么做
  • 个体户可选择不交税吗
  • 减税性质代码及名称是什么意思
  • 车辆购置税是什么税种
  • 出口退税购入的商品进项税怎么处理
  • 调减加计抵减额会计分录
  • 税务现金流量表怎么填
  • 冲销暂估原材料
  • 已经认证的发票可以作废吗
  • 工资表领导签字怎么签
  • 企业接受外部劳务派遣用工支出税前扣除问题
  • 购买完货物又退回怎么办
  • 车间管理人员工资总额占车间工资总额的10%
  • 财产转让所得税计算方法
  • 离退休人员再任职的规定
  • 销售返利的税务政策
  • 不是办税员可以去税局办事吗
  • 金税四期什么时候结束
  • 购进原材料不用交税吗
  • 劳务清包工可以开3个点的票么
  • 工程发票需要进项吗
  • 已抵扣进项税额转出滞纳金
  • 税务专用发票
  • 在windows7是一种
  • 社会保险中的五险一金
  • 收到广告费收入怎么做分录
  • 高新技术企业研发
  • 合伙企业取得红利怎么交税
  • 超市预售卡怎么记账
  • 小程序嵌入h5页面可以不写安全地址吗为什么
  • 冲办公费会计分录
  • 企业购入固定资产在每期末应使用公允价值法进行计量
  • 社保挂靠会计处理?
  • 增值税发票销货清单哪里领
  • 最小的外置dvd刻机多少寸
  • js文件格式化工具
  • 专利代理服务费计入什么科目
  • flutter项目怎么运行
  • 职工薪酬在利润表哪里看
  • 预收账款什么时候确认增值税
  • 税控服务费减免会计分录
  • 税控盘锁死日期是什么意思
  • 预计净残值影响营业利润吗
  • 小规模纳税人交通运输服务税率
  • 固定资产盘盈影响所有者权益吗
  • 购买商品的会计科目
  • 费用发票已报销怎么入账
  • 出差发生的招待费计入差旅费吗
  • 个人开技术服务费
  • 零申报企业年报资产状况信息怎么填
  • 支付到期承兑汇票属于什么现金流量项目
  • 外账需要计提存利息吗
  • 应付票据与应付账款增长的多的逃税问题
  • 投资性房地产收回自用
  • 结转资金和结余资金
  • 预付的展会费如何入账
  • 开发票系统税号0和o怎么区别?
  • 新单位建账怎么做
  • 待摊费用怎么做凭证科目
  • 记账凭证的附件和附单据
  • mysql5.7.24安装配置教程
  • txt无法打开怎么弄
  • windows软件删除
  • linux中磁盘分区
  • soffice.exe - soffice进程是什么意思 有什么用
  • 电脑windows8怎么样
  • 如何关闭win10自动升级win11
  • win7系统无线网络
  • win7电脑没有显示无线网络
  • 如何创建node项目
  • 安卓炫酷壁纸
  • 嗌中怎么读
  • 在一个android创建一个按钮多选对话框
  • 命令适用于
  • javascript基础编程
  • jquery将文本框设置为只读
  • 基于springboot的毕设
  • Android ImageLoader 本地缓存
  • ubuntu系统的手机
  • 广东省地方税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设