位置: 编程技术 - 正文

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生成静态数据)

  • 企业为何放弃免税政策
  • 劳务报酬个税的税率是多少
  • 委托加工物资的消费税计入成本吗
  • 一般计税方法和简易计税方法的计算公式
  • 计提增值税的会计凭证
  • 减免税款计入哪个科目
  • 资产的企业所得税怎么算
  • 高薪技术企业研发人员人数
  • 转账显示未认证
  • 应扣未扣税款向谁追缴
  • 冲减预付账款怎么记账
  • 员工买了多项东西怎么说
  • 季度报税是哪个税种
  • 个人可以去税务局开票吗?
  • 园林绿化公司购入剪刀怎么做会计分录
  • 转让公司账本凭证都要移交吗
  • 报销款冲抵其他应收款怎么做账?
  • 广告制作费怎么入账
  • 营改增后融资租赁税率
  • 金蝶现金流量表附表项目如何指定
  • 实物捐赠的企业有哪些
  • 财务会计中关于坏账损失的账务处理
  • 收到即征即退退的发票
  • qdcsfs.exe - qdcsfs是什么进程 有何作用
  • 商品流通会计科目
  • 进项税额转出怎么做账务处理
  • 无形资产本月增加本月摊销如何设置函数
  • 无形资产入账价值包括资本化支出吗
  • 无偿占用资金企业有哪些
  • php排行
  • 购进的产品样品怎么入账
  • php过滤字符
  • php 遍历字符串
  • html用javascript
  • php怎么上传图片并保存到数据库
  • 确认递延所得税负债的分录
  • 开具培训类发票需要哪些条件?
  • 年终奖发放有法律规定吗
  • 银行存款余额调节表保管期限
  • 制作费开票属于什么编码类型
  • 非定额备用金的使用范围
  • SQL Server 2008 R2占用cpu、内存越来越大的两种解决方法
  • 计提电费的会计分录怎么写
  • 职工报销的医药费是什么
  • 加计抵减不符合怎么办
  • 中级会计职称与中级会计师的区别
  • 物流公司车辆过户要3万
  • 公司买的吃的计入什么科目
  • 合并报表时抵消内部交易包含的未实现损益的影响包括
  • 所得税为负数会计分录
  • 加油充值卡开票内容是什么
  • 差旅费借记什么科目
  • 营业外收入的账户结构
  • 物流公司账务处理流程及方法
  • 一个营业执照可以开几个店铺
  • win8系统打不开设置
  • windows active directory功能
  • msedge.exe是什么
  • win8怎么固定桌面
  • rtk api error=3
  • linux系统怎么修改文件里的参数
  • eclipse怎么装插件
  • JS写XSS cookie stealer来窃取密码的步骤详解
  • ecxel进度条
  • sqlite3 not found 解决方案
  • linux jdk
  • cocos2dx HelloWorld代码分析
  • bootstrap 下拉按钮
  • node.js 模块
  • 批处理注册reg文件
  • 变量js
  • android listView二级目录选中效果
  • shell脚本-n
  • 代码行数不够了,怎么弄多行
  • androidapplication
  • js做时钟让钟表转起来
  • jquery iframe src
  • 如何使用jquery
  • 青岛新农合网上缴费时间
  • 北京地税残疾人补贴政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设