zoukankan      html  css  js  c++  java
  • php的会话技术

    一、会话

    •  web会话可简单理解为:用户开一个浏览器,访问某一个web站点,在这个站点点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话
    • HTTP协议的特点是无状态/无连接,当一个浏览器连续多次请求同一个web服务器时,服务器是无法区分多个操作是否来自于同一个浏览器(用户) ,会话技术就是通过HTTP协议想办法让服务器能够识别来自同一个浏览器的多次请求,从而方便浏览器(用户)在访问同一个网站的多次操作中,能够持续进行而不需要进行额外的身份验证

     二、会话技术分类

     1. cookie技术(常用于识别用户)

    •  Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式
    • Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息 ,无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息

        创建 cookie :setcookie() 函数用于设置 cookie( setcookie() 函数必须位于 <html> 标签之前 )

                               语法 :setcookie ( name, value, expire, path, domain ) ;

        在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码

        取回 Cookie 的值 :PHP 的 $_COOKIE 变量用于取回 cookie 的值

        删除 cookie :当删除 cookie 时,使过期日期变更为过去的时间点

     2. session技术

    • Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间
    • Session技术是将数据保存到服务器端,无论何时用户链接到服务器,Web站点都可以访问Session信息
    • 用于存储有关用户会话的信息,或更改用户会话的设置 ,Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用

        开始 PHP Session :在把用户信息存储到 PHP session 中之前,首先必须启动会话 ( session_start() 函数必须位于 <html> 标签之前 )

        存储 Session 变量 :使用 PHP $_SESSION 变量存储和取回 session 数据

        终结 Session :如果要删除某些 session 数据,可以使用 unset () 或 session_destroy () 函数 ,unset() 函数用于释放指定的 session 变量  ,session_destroy() 函数彻底终结session ( session_destroy () 将重置 session,将失去所有已存储的 session 数据 )

    三、基本原理

     1.Cookie原理

    •  第一次请求时,PHP通过setcookie函数将数据通过http协议响应头传输给浏览器
    •  浏览器在第一次响应的时候将Cookie数据保存到浏览器
    •  浏览器后续请求同一个网站的时候,会自动检测是否存在Cookie数据,如果存在将在请求头中将数据携带到服务器
    •  PHP执行的时候会自动判断浏览器请求中是否携带Cookie,如果写到,自动保存到$_COOKIE中
    •  利用$_COOKIE访问Cookie数据

    2.Session原理

    • Session与浏览器无关,但是与Cookie有关
    • PHP碰到session_start () 时开启session会话,会自动检测sessionID :如果Cookie中存在,使用现成的 ;如果Cookie中不存在,创建一个sessionID,并通过响应头以Cookie形式保存到浏览器上
    • 初始化超全局变量$_SESSION为一个空数组
    • PHP通过sessionID去指定位置(session文件存储位置)匹配对应的文件 :不存在该文件 ,创建一个sessionID命名文件 ;存在该文件 ,读取文件内容(反序列化),将数据存储到$_SESSION中
    •  脚本执行结束,将$_SESSION中保存的所有数据序列化存储到sessionID对应的文件中

    四、两种会话技术区别

    1. 安全性方面

    •   Session存储服务器端,安全性高
    •   Cookie存储浏览器段,安全性低

    2. 数据大小方面

    •   Cookie的数量和大小都有限制(20个/4K)
    •   Session数据存储不限

    3. 可用数据类型

    •   Cookie只能存储简单数据,数值/字符串
    •   Session可以存储复杂数据(自动序列化)

    4. 保存位置方面

    •   Cookie保存在浏览器上
    •   Session保存在服务器上
  • 相关阅读:
    git上传
    #if debug 模式
    .net core 获取appsetting配置信息
    映射的问题
    net core 支付宝回调参考
    .net core 3.1开发遇到的问题
    .net core 中对象转json以及反序列化
    auotmapper在net core 3.1的使用
    net core 3.1 webapi的开发遇到的问题
    OCP prepare 20140703
  • 原文地址:https://www.cnblogs.com/keeye/p/12590039.html
Copyright © 2011-2022 走看看