今天给大家介绍一下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,我会每天推送一篇原创文章,让大家都能有所收获!