1. 什么是会话控制
      1. 面向连接的可靠通信方式,根据会话控制记录,判断用户的登录行为;
      2. 能够在网站中跟踪用户,处理同一个网站同一个用户在多个页面共享数据的机制;
    2. 为什么使用会话控制
      1. http协议是无状态协议,没有内建机制来维护两个事务之间的状态;
      2. 会话控制避免重复执行登录操作,让服务器跟踪同一客户端做出连续请求;
    3. PHP中会话控制方式

    image.png

    1. cookie的应用
      1. Cookie是服务器发送给客户端的片段信息,储存在客户端浏览器内或者硬盘上。在客户对改服务的请求中发回;将使用者的资料储存在客户端,提高网页的处理效率,降低服务器的负担;
      2. 向客户机器中设置cookie
        1. 浏览器支持cookie功能
        2. PHP中使用setCookie()函数,必须在其他信息输出到浏览器之前调用
        3. 常用参数
          1. $name 可以使用空字符串跳过;
          2. $expire 与 $secure 是整型数据,可以使用0来跳过;
          3. $expire 参数是标准的unix时间戳,可以由time()来返回值;
      3. PHP脚本读取cookie内容
        1. 通过全局数组$_COOKIE进行访问
      4. 删除cookie值
    2. session的应用
      1. 概述
        1. session保存在服务端,cookie保存在客户端
        2. 用户可以终止cookie,不能终止session
        3. sessionID是不易重复和不易有规律的32为十六进制数
      2. php.ini文件中配置session

    image.png
    image.png

    1. session的声明和使用
      1. 要设置session必须启动session_start()函数
      2. 运行原理:sessionID由服务器创建,返回给用户保存在cookie中,并且在服务器端生成一个名为sessionID 的文件,保存用户的信息。当客户端再次发出请求时,HTTP请求头携客户端中的cookie中的sessionID值,在服务器中检索读取,达到跟踪用户的目的;
    2. 注册会话变量session
    3. 注销变量与销毁session
      1. Session_destroy()函数结束当前会话,并清空会话中所有的资源。
      2. 会删除相关的session文件;
      3. 不会销毁$_SESSOIN 中的变量,也不会删除客户端的cookie和sessionID,可以手动清理变量值;
      4. 注销session4步骤:

    image.png

    1. 1. session自动回收机制
    2. 1. 直接关闭浏览器或者断网的情况下,session相关文件不会被删除;
    3. 1. Php.ini中的session.cookie_lifetime = 0设置了cookiesessionID的有效期,即直到浏览器关闭为止。
    4. 1. 对于永远也用不上的垃圾文件,系统由自动清理机制。
    5. 1. session.gc_maxlifetime = 1440 默认时间
    6. 1. Session.gc_divisior=1000,设定垃圾回收启动的概率,在每次访问的时候默认位1/1000;
    • sessionID的传递
      1. 通过sessionID跟踪用户,各个页面传递唯一的sessionID

    image.png

    1. 会话技术总结
      1. web会话:用户开一个浏览器,访问某个web站点
      2. 会话技术就是通过http协议让服务器识别同一浏览器的多次请求
      3. 会话技术分类
        1. cookie
          1. Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件(HTTP协议响应头),它可以包含有关用户的信息。无论何时用户链接到服务器(HTTP请求携带数据),Web 站点都可以访问 Cookie 信息
        2. session
          1. Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。Session技术是将数据保存到服务器端,无论何时用户链接到服务器,Web站点都可以访问Session信息:SESSION技术的实现是依赖COOKIE技术的
      4. 两种会话技术区别
        1. 安全性方面
          1. Session存储服务器端,安全性高
          2. Cookie存储浏览器端,安全性低
        2. 数据大小方面
          1. Cookie的数量和大小都有限制(20个/4K)
          2. Session数据存储不限
        3. 可用数据类型
          1. Cookie只能存储简单数据,数值/字符串
          2. Session可以存储复杂数据(自动序列化)
        4. 保存位置方面
          1. Cookie保存在浏览器上
          2. Session保存在服务器上
    2. cookie的基本使用
      1. cookie原理
        1. 第一次请求时,PHP通过setcookie函数将数据通过http协议响应头传输给浏览器
        2. 浏览器在第一次响应的时候将Cookie数据保存到浏览器
        3. 浏览器后续请求同一个网站的时候,会自动检测是否存在Cookie数据,如果存在将在请求头中将数据携带到服务器
        4. PHP执行的时候会自动判断浏览器请求中是否携带Cookie,如果写到,自动保存到$_COOKIE中
        5. 利用$_COOKIE访问Cookie数据
      2. 设置cookie信息
        1. cookie名的设置:字符串,第一个参数
        2. cookie值的设置:第二个参数
        3. cookie值的类型要求:必须是简单类型中的整数或者字符串
      3. session原理
        1. PHP碰到session_start()时开启session会话,会自动检测sessionID
          1. 如果Cookie中存在,使用现成的
          2. 如果Cookie中不存在,创建一个sessionID,并通过响应头以Cookie形式保存到浏览器上
        2. 初始化超全局变量$_SESSION为一个空数组
        3. PHP通过sessionID去指定位置(session文件存储位置)匹配对应的文件
          1. 不存在该文件:创建一个sessionID命名文件
          2. 存在该文件:读取文件内容(反序列化),将数据存储到$_SESSION中
        4. 脚本执行结束,将$_SESSION中保存的所有数据序列化存储到sessionID对应的文件中