COOKIE&&SESSION总结

总结一下cookie和session

cookie

  • 为什么会有cookie
    因为http是一种无状态的协议,它不对之前发生过得请求和响应状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。假设要求登陆认证的web页本身无法进行状态的管理(不记录已登陆的状态),那么每次跳转新页面不是要再次登陆,就是要在每次请求的报文中附加参数来管理登陆状态。
    无状态协议当然是就有它的优点。由于不必保存状态,自然可以减少服务器的CPU及内存资源的消耗。从另一个侧面来说,也正是因为http协议本身是非常简单的,所以才会被应用到各种场景中。
    保留无状态协议这个特征的同时又要解决类似的矛盾问题,于是就引入cookie技术。cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态。
    cookie会根据从服务器端发送的响应报文内的一个叫做set-cookie的首部字段信息,通知客户端保存cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。
    服务器端发现客户端发送过来的cookie后,会去检查究竟是从哪一个客户端发送过来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
COOKIE&&SESSION总结_第1张图片
  • 长连接


    COOKIE&&SESSION总结_第2张图片

在客户端执行http请求的之前,会通过TCP协议与服务器建立连接,http响应后,TCP连接不销毁,以便在下一次http请求的时候直接使用连接,保存时间默认是5秒。


COOKIE&&SESSION总结_第3张图片
  • cookie语法
    setcookie(名字,值,过期时间,有效目录,子域名);

  • 设置cookie


    cookie保存的类型只有字符串和数字

  • 删除cookie

  • cookie支持下标


    Cookie在浏览器上没有数组的概念,只是浏览器请求到服务器后,PHP将同名的值转成数组。

  • 临时性cookie和永久性cookie
    1、临时性cookie:关闭浏览器后cookie消失
    2、永久性cookie:关闭浏览器后cookie不消失,给临时性cookie添加一个过期时间即可

  • cookie的有效目录
    cookie默认只能在当前目录和后代目录中生效

  • cookie支持子域名
    不同的子域名是独立的网站。他们之间默认只能访问自己的cookie.
    默认情况下,cookie变量是区分子域名的。

  • cookie的缺点
    1、安全性低,因为http协议不加密,不验证报文的完整性,容易被窃听伪装篡改。
    2、增加了数据请求的负载,大部分浏览器队cookie的限制是4k
    3、可控性差,客户端可以禁用cookie

session(会话)

COOKIE&&SESSION总结_第4张图片

1、session技术一般基于cooke技术,但也可以通过其他方式实现
2、要使用一个会话,必须显式的开启一个会话,默认情况下,会话不会自动开启



3、要自动启动会话,在php.ini中找到session.auto_start=0这行,把0改为1,并重启服务器
4、session可以保存除了资源以外的任何数据类型
5、session_id()获取会话编号,session_name()获取会话名称


6、会话重复开启会提示性报错

  • 会话的执行过程
    1、使用session_start()函数,PHP从session仓库中加载已经存储的会话
    2、当session第一次启动时候,服务器给客户分配一个唯一的会话id保存在cookie中
    3、执行PHP的时候,通过会话编号去仓库中存入或读取值
    4、当PHP执行结束时,没有被销毁的session变量被自动保存到服务器的session仓库中。

session和cookie的区别

  • 相同点
    1、都是会话技术,有生命周期
    2、都是无状态性:服务器将请求内容发送到客户端后,服务器不在记录客户端的信息成为无状态性。

  • 不同点

姓名 Cookie session
存储地方 浏览器中 服务器端
安全性
数据负载 4K 没有限制
数据类型 字符串和数字 出了资源类型外
可控性

禁用cookie

1、如果禁用了cookie,基于cookie的所有技术默认都无法使用
2、php可以通过配置文件改变




3、PHP自动在URL地址上,表单中加上会话编号


你可能感兴趣的:(COOKIE&&SESSION总结)