本帖最后由 小鲁哥哥 于 2017-11-29 15:43 编辑
【黑马程序员济南】PHP会话技术之cookie案例
记录当前登录信息
现在向京东、天猫等大型商场网站,你登陆一次之后,关闭浏览器,再打开浏览器之后就会发现你没有登陆你的账号密码,系统默认已经登录了,这是什么原理实现的那? 有些同学可能上来就想到了session,用session去存储当前用户的登陆信息,但是大家有没有想过这样的一个问题那,就是session的有效期就是在在浏览器开启的这段时间,若关闭浏览器,则存储在session中的登陆凭证就会消失,登陆状态就会变成未登录。 如果需要完成浏览器关闭后,再次请求站点,还处于登陆状态的话。从咱学过的知识来想的话,除了session之外,能记录信息的会话就只有cookie了,而通常我们就是用COOKIE来记录当前用户的信息。 流程如下:
Cookie的优点: 具有可验证性。 私密性。加密存储。 为什么不是用户名和密码? 常规的登陆方式,就是用户名和密码,但是因为cookie存储的数据的位置容易被黑客攻击到,所以我们通常存储用户信息的时候不存储用户的密码。
加密的方式选择: 加盐加密:只对密码进行 md5 加密是肯定不够的。聪明的程序员想出了个办法,即使用户的密码很短,只要我在他的短密码后面加上一段很长的字符,再计算 md5 ,那反推出原始密码就变得非常困难了。加上的这段长字符,我们称为盐(Salt),通过这种方式加密的结果,我们称为 加盐 Hash 。
我们在项目中的也应用到了加盐加密的方式来存储用户的信息。 [PHP] 纯文本查看 复制代码 <?php[/align]//黑马程序员济南校区出品
//对用户id进行加盐加密存储到cookie中
setcookie('admin_id',md5($admin_info['id'].'salt'),time()+30*24*3600);
//对用户id进行加盐加密存储到cookie中
setcookie('admin_name',md5($admin_info['name'].'salt'),time()+30*24*3600);
项目中判断用户信息是否存在
[PHP] 纯文本查看 复制代码 <?php
//判断session中是否存在用户信息
if(!isset($_SESSION['admin_info'])){
//不存在的话,判断一下cookie中是否有用户信息
if(isset($_COOKIE['admin_id'])&&isset($_COOKIE['admin_name'])){
//如果有的话,将用户信息写入到session中
$_SESSION['admin_info'] = $admin_info;
//跳转到页面主页
.....
}
}else{
//存在的话,跳转页面主页
.......
} 实际开发时。 用户点击退出时,一定要将登陆状态删除! setcookie('admin_id', '', time()-1); setcookie('admin_pass', '', time()-1);
点进这个帖子的同学肯定是要奋发图强,学技术拿高薪的有志青年,这里我看你骨骼惊奇,是个绝世的练武奇才,你我有缘,今天我就把这个武林秘籍如来神掌传授于你! 什么?不想学如来神掌?不要紧!这里有各个门派的武林绝学,链接拿好!!哈哈哈哈 |