黑马程序员技术交流社区

标题: 【黑马程序员济南】PHP会话技术之cookie案例 [打印本页]

作者: 小鲁哥哥    时间: 2017-11-29 15:37
标题: 【黑马程序员济南】PHP会话技术之cookie案例
本帖最后由 小鲁哥哥 于 2017-11-29 15:43 编辑

【黑马程序员济南】PHP会话技术之cookie案例



记录当前登录信息
       现在向京东、天猫等大型商场网站,你登陆一次之后,关闭浏览器,再打开浏览器之后就会发现你没有登陆你的账号密码,系统默认已经登录了,这是什么原理实现的那?
       有些同学可能上来就想到了session,用session去存储当前用户的登陆信息,但是大家有没有想过这样的一个问题那,就是session的有效期就是在在浏览器开启的这段时间,若关闭浏览器,则存储在session中的登陆凭证就会消失,登陆状态就会变成未登录。
       如果需要完成浏览器关闭后,再次请求站点,还处于登陆状态的话。从咱学过的知识来想的话,除了session之外,能记录信息的会话就只有cookie了,而通常我们就是用COOKIE来记录当前用户的信息。
流程如下:


Cookie的优点:
       具有可验证性。
       私密性。加密存储。
为什么不是用户名和密码?
       常规的登陆方式,就是用户名和密码,但是因为cookie存储的数据的位置容易被黑客攻击到,所以我们通常存储用户信息的时候不存储用户的密码

加密的方式选择:
       加盐加密:只对密码进行 md5 加密是肯定不够的。聪明的程序员想出了个办法,即使用户的密码很短,只要我在他的短密码后面加上一段很长的字符,再计算 md5 ,那反推出原始密码就变得非常困难了。加上的这段长字符,我们称为盐(Salt),通过这种方式加密的结果,我们称为 加盐 Hash 。

我们在项目中的也应用到了加盐加密的方式来存储用户的信息。
[PHP] 纯文本查看 复制代码
<?php
//黑马程序员济南校区出品
//对用户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);


点进这个帖子的同学肯定是要奋发图强,学技术拿高薪的有志青年,这里我看你骨骼惊奇,是个绝世的练武奇才,你我有缘,今天我就把这个武林秘籍如来神掌传授于你! 什么?不想学如来神掌?不要紧!这里有各个门派的武林绝学,链接拿好!!哈哈哈哈
   【黑马程序员济南】小鲁哥哥全学科技术整合帖(一贴在手!天下我有!)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2