Yii框架配合Redis实现网站自动登录

      今天给大家介绍一下Yii框架,它是一款高性能的PHP MVC框架,利用它可以很方便的完成一些复杂的功能,再说

Redis,它是内存数据库,存储读取速度十分惊人,常用在缓存数据中,今晚聊聊这两个结合的实战教程。由于我

们之前课程已经很详细的讲过自动登录的原理,要是不清楚的朋友,可以看之前文章,PHP和java自动登录的实现:

http://blog.csdn.net/bayren820/article/details/50451734,http://blog.csdn.net/bayren820/article/details/50397633。

       老规矩,边看代码边讲解原理,代码都会加上文字注释。

        // 调用model进行数据库判定,此次就当登录成功,不做过多讲解,毕竟不是本节重点

        $res = Study::checkUser($name,$pwd);

        if(isset($res->id)){

            // 说明查询到用户

            // 将用户名存储在session,Yii框架需要首先开启session

            $session->open();     

            // 获取当前用户会话的SessionID,这也是实现自动登录最关键的凭证

            $sessionID = $session->getId(); 

            // 首先需要给大家讲一个知识点,就是Redis是可以存储很多类型的数据,这里我们用到的是最简单的String

            // 可以用PHP操作redis,是因为Yii框架已经内置了Redis扩展,只需要在web.php配置文件里配置好就可以


            // 将服务器端生成的sessionID写入Redis,Redis保存String类型数据,是以key-value的形式

            // 因此:key我们就用$sessionID这个变量,这样每个用户都可以找到唯一的那个,便于判断登录是否过期

            // value就是当前登录成功的用户名

            $redis->set(Constant::SITE_NAME.':sessionID:'.$sessionID,$name);   

            // expire():设置变量的生命周期,单位是秒,比如我设置的是将服务器端SessionID保存两周

            $redis->expire(Constant::SITE_NAME.':sessionID:'.$sessionID,2*7*24*3600);      

            // 同时将服务器端sessionID写入到本地的浏览器的cookie里面,同时Cookie生命周期也设置成两周

            // 利用Cookie中存储的SessionID值,拿到Redis中查找包含该SessionID的key的存在,假如有则登录成功

            // Yii框架创建Cookie的办法

            $cookies->add(new \yii\web\Cookie([
                'name' => 'session_id',
                'value' => $sessionID,
                'expire'=>time()+2*7*24*3600
            ]));          
            echo 'success!';
            }else{
               echo '用户名或者密码错误!';
            }

       今天的文章,最核心的知识点已经讲解完了,大家要想彻底领悟,需要有一定的Cookie和Session知识基础,

最好能明白Cookie和Session之间的联系和原理,这样才能完全搞懂!

       大家可以关注我的微信公众号:iwork我会每天推送一篇原创文章,让大家都能有所收获!



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yii 2.0 权威指南 本教程的发布遵循 Yii 文档使用许可. 版权所有 2014 (c) Yii Software LLC. 介绍 已定稿 关于 Yii 已定稿 从 Yii 1.1 升级 入门 已定稿 安装 Yii 已定稿 运行应用 已定稿 第一次问候 已定稿 使用 Forms 已定稿 玩转 Databases 已定稿 用 Gii 生成代码 已定稿 更上一层楼 应用结构 已定稿 结构概述 已定稿 入口脚本 已定稿 应用 已定稿 应用组件 已定稿 控制器(Controller) 已定稿 视图(View) 已定稿 模型(Model) 已定稿 过滤器 已定稿 小部件(Widget) 已定稿 模块(Module) 已定稿 前端资源(Asset) 已定稿 扩展(extensions) 请求处理 已定稿 运行概述 已定稿 引导(Bootstrapping) 已定稿 路由(Route)引导与创建 URL 已定稿 请求(Request) 已定稿 响应(Response) 已定稿 Sessions(会话)和 Cookies 已定稿 错误处理 已定稿 日志 关键概念 已定稿 组件(Component) 已定稿 属性(Property) 已定稿 事件(Event) 已定稿 行为(Behavior) 已定稿 配置(Configurations) 已定稿 类自动载(Autoloading) 已定稿 别名(Alias) 已定稿 服务定位器(Service Locator) 已定稿 依赖注入容器(DI Container) 配合数据库工作 编撰中 数据访问对象(DAO) - 数据库连接、基本查询、事务和模式操作 编撰中 查询生成器(Query Builder) - 使用简单抽象层查询数据库 编撰中 活动记录(Active Record) - 活动记录对象关系映射(ORM),检索和操作记录、定义关联关系 编撰中 数据库迁移(Migration) - 在团体开发中对你的数据库使用版本控制 待定中 Sphinx 待定中 Redis 待定中 MongoDB 待定中 ElasticSearch 接收用户数据 编撰中 创建表单 已定稿 输入验证 编撰中 文件上传 待定中 多模型同时输入 显示数据 编撰中 格式化输出数据 待定中 分页(Pagination) 待定中 排序(Sorting) 编撰中 数据提供器 编撰中 数据小部件 编撰中 主题 安全 编撰中 认证(Authentication) 编撰中 授权(Authorization) 编撰中 处理密码 待定中 客户端认证 待定中 安全领域的最佳实践 缓存 已定稿 概述 已定稿 数据缓存 已定稿 片段缓存 已定稿 分页缓存 已定稿 HTTP 缓存 RESTful Web 服务 已定稿 快速入门 已定稿 资源 已定稿 路由 已定稿 格式化响应 已定稿 授权验证 已定稿 速率限制 已定稿 版本化 已定稿 错误处理 已定稿 测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值