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配置文件里配置好就可以

Yii框架配合Redis实现网站自动登录_第1张图片

            // 将服务器端生成的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我会每天推送一篇原创文章,让大家都能有所收获!

Yii框架配合Redis实现网站自动登录_第2张图片


你可能感兴趣的:(PHP开发)