第18课:session&cookie

session和cookie是项目中经常用到的会话机制

session可以设置存储到服务器文件中或者缓存中(如redis) 如果机器是集群部署,一般都是把session放在缓存服务器中,做到session的同步,不然只想到当前服务器的文件中,其他服务器无法获取
cookie常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值

常用场景:登录

cookie与session的区别
存储位置:
session存储在服务器位置上,可以通过php.ini里面配置session相关配置
cookie存储在客户端上
1.持久性cookie,设置了cookie的时间,以文件方式存在硬盘上,
2.会话cookie,没有设置cookie时间,cookie的生命周期也就是关闭浏览器前就消失,一般不会保存在硬盘,而是保存在内存上)

正因为session在服务器端,cookie在客户端,服务端session的相对于客户端的cookie安全性要较高一点

cookie和session的关系
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识 (称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来 使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相 关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应 中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给 服务器。一般这个cookie的名字都是类似于SEEESIONID

当cookie失效的时候,session也失效

关闭浏览器,session失效

PHP设置cookie举例:
普通使用:
setcookie('name','www.godeye.org');
带失效时间的: 
setcookie('name','www.godeye.org',time()+24*60*60);//1day

要删除一个已经存在的Cookie,有两个办法:
一是调用只带有name参数的SetCookie,那么名为这个name的Cookie将被从关系户机上删掉;例如:setcookie('name','');
另一个办法是设置Cookie的失效时间为time()或time()-1,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。 例如:setcookie('name','PHP淮北',time()-24*60*60);
 要注意的是,当一个Cookie被删除时,它的值在当前页在仍然有效的。 


PHP设置session举例
<?php
ini_set('session.cookie_domain', '.godeye.org');
session_name('YB_SSID');
session_start();
$_SESSION['user_name'] = 'www.godeye.org';

打赏  如对你有帮助,请我喝杯咖啡吧!