您的位置:首页 > 数据库 > Redis

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

2016-01-05 21:03 453 查看
      今天给大家介绍一下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配置文件里配置好就可以





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

            // 因此: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,我会每天推送一篇原创文章,让大家都能有所收获!



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis yii PHP Cookie Session