Session&&Cookie

先来一句总结性的话:

Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份

一、Cookie

  • 定义:

    Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

  • 包含内容:

    名字(Name),值(Value),过期时间(Expires),路径(Path)和域(Domain),secure,httponly构成

    路径(Path)与域(Domain)一起构成cookie的作用范围。

    1. Name:指定Cookie的名字

    2. Value:Cookie的值

    3. Expires:设置Cookie的过期时间,默认值为0,单位是秒数

    4. Path:设置Cookie的有效路径,默认是当前目录及其子目录有效,也可以指定成整个根目录/,在整个根目录下有效

    5. domain:设置Cookie的作用域,默认在本域下

    6. secure:设置是否Cookie只能通过HTTPs传输,默认值的false

    7. httponly:是否只使用HTTP访问Cookie。默认值是false,如果设置成true,那么客户端的JS就无法操作这个Cookie了,使用这个参数可以减少XSS攻击

    通过谷歌浏览器查看Cookies

在这里插入图片描述

  • cookie种类

    1. 内存cookie

      由浏览器来维护,保存在内存中,浏览器关闭之后就消失了,存在客户端中

    2. 硬盘cookie

      保存在硬盘里,有一个过期时间,除非用户手动清除或者到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的

  • 代码实现:

    待补充…

二、Session

  • 定义

    Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录,在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

    每个用户访问服务器都会建立一个session,那服务器是怎么标识用户的唯一身份呢?事实上,用户与服务器建立连接的同时,服务器会自动为其分配一个SessionId。

  • 工作原理

在这里插入图片描述

  1. 准备建立会话的时候,PHP会先查看请求中是否包含session_id,如果没有服务器会在自己的内存里创建一个新的变量,这个变量就是session_id,假如这个变量就是session_1234
  2. 服务器会把这个session_id发送到浏览器保存,一般浏览器会把这个id保存在cookie中
  3. 之后每次我的浏览器再去访问服务器的时候,都会携带cookie中存储的这个session_1234,这样服务器就认识这个浏览器了
  4. 服务器端这个session_1234变量可以存放任意的会话数据,这些数据是经过序列化之后放进去的
  5. 每次浏览器访问服务器,都可以凭借自己的session_id到服务器的这个变量中认领自己的信息
  6. 如果想销毁会话,可以删掉会话中的数据,销毁会话文件
  • PHP中使用会话

    1. 开启会话

      session_start()
      
    2. 通过$_SESSION来设置相关值,设置和读取都使用这个全局变量

    3. 销毁session

      1. 将$_SESSION清空

        $_SESSION=[]
        
      2. 将cookie中的数据删除

        setcookie()
        
      3. 销毁会话

        session_destroy()
        
  • 代码实现

    待补充…

三、资料来源

Session和Cookie的区别和联系

用过php操作Session和Cookie

猜你喜欢

转载自blog.csdn.net/qq_38338069/article/details/83189694