PHP(14)会话技术
创始人
2024-05-26 02:07:11
0

PHP(14)会话技术

  • 一、概念
  • 二、分类
  • 三、cookie技术
    • 1. cookie的基本使用
    • 2. cookie的生命周期
    • 3. cookie的作用范围
    • 4. cookie的跨子域
    • 5. cookie的数组数据
  • 四、session
    • 1. session原理
    • 2. session基本使用
    • 3. session配置
    • 4. 销毁session

一、概念

HTTP协议是一种无状态、无连接的协议,无法判断多个请求是否来自同一个用户。会话技术就是让HTTP协议识别来自同一个用户的多个请求。

二、分类

  1. cookie:是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。本质是由Web服务器保存在客户端上的小文本文件,可以包含有关用户的信息。
  2. session:session技术是将数据保存在服务器端,session技术的实现依赖于cookie技术。
  3. 区别
区别cookiesession
安全性存储在浏览器端,安全性低存储在服务器,安全性高
数据大小数量和大小都有限制(4KB)数据存储不限
可用数据类型只能存储简单数据,数值、字符串可以存储复杂数据

三、cookie技术

setcookie(名字, 值, 生命周期, 作用范围, 域名);

1. cookie的基本使用

  • 设置cookie信息:setcookie(名字, 值)
    • 名字必须是字符串。
    • 值必须是简单类中的整数或字符串。
    setcookie('age', 1);
    
  • 读取cookie信息:$_COOKIE
    var_dump($_COOKIE);
    

在这里插入图片描述

2. cookie的生命周期

  • 默认关闭浏览器则生命周期结束。
  • 通过setcookie可以限定生命周期(必须加 time()):setcookie("a1", 'a1', time() + 7 * 24 * 60 * 60);
  • 手动结束生命周期:setcookie('age', '');setcookie("a1", 'a1', time());

3. cookie的作用范围

  • 默认范围:上层文件夹中设定的cookie可以在下层中访问,而下层的cookie不能在上层访问。
  • 把cookie的作用范围设置为网站根目录:setcookie('a1', 'a1', 0, '/');

4. cookie的跨子域

  • 默认不允许跨域访问cookie。
  • 设置cookie跨子域:setcookie('a1', 'a1', 0, '/', 'mysite.com');

5. cookie的数组数据

  • cookie只能设置成简单数据类型。
  • 把cookie伪装成数组:
setcookie('goods_id[0]', 1);
setcookie('goods_id[1]', 2);
setcookie('goods_id[2]', 3);
setcookie('goods_id[3]', 4);
  • 获取cookie数组:$_COOKIE['goods_id'][2]

四、session

1. session原理

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

2. session基本使用

  • $_SESSION是通过session_start()函数的调用才会定义的,不会直接定义。
  • 设置session和读取session

在这里插入图片描述

  • 删除一个session unset($_SESSION['name']);
  • 删除所有session $_SESSION = array();

3. session配置

  • 配置方式
    1. 在php.ini中配置,全局生效
    2. 脚本中配置,PHP可以通过ini_set()函数来设置项目配置
  • 基础配置
    1. session.name:session名字,保存到cookie中sessionID对应的名字
    2. session.auto_start:自动开启session,默认关闭
    3. session.save_handler:session数据的保存方式,默认是文件形式
    4. session.save_path:session文件默认存储位置
  • 常用配置
    1. session.cookie_lifetime:PHPsessionID在浏览器端对应cookie的生命周期,默认是会话结束
    2. session.cookie_path:sessionID在浏览器存储之后允许服务器访问的路径(cookie作用范围)
    3. session.cookie_domain:cookie允许访问的子域
  • 垃圾回收配置
    1. session.gc_maxlifetime:规定session文件的最大生命周期,默认24分钟。
    2. session.gc_probability:垃圾回收概率因子,默认为1
    3. session.gc_divisor:垃圾回收概率分母,默认为1000
      • 触发几率默认是 1/1000

4. 销毁session

  • $_SESSION = array(); 只会删除数据。销毁session会删除session对应的文件。
  • 通过session_destroy()函数来销毁session。

相关内容

热门资讯

清朝有很多有名的历史人物,能给... 清朝有很多有名的历史人物,能给大家说几个清朝的历史人物吗?林则徐,张之洞,乾隆皇帝,曾国藩,朱耷,这...
曹丕的“太子四友”指的是谁 曹丕的“太子四友”指的是谁首先说,曹丕这四个,陈群司马懿是顶级的谋士和政治家,吴质有些小聪明,朱铄不...
在这次遇难者中存在了几名幸存者... 在这次遇难者中存在了几名幸存者。这句话是不是逻辑错误这句话的逻辑没有问题,有问题的是用词不当。遇难者...
在中国古代,有许多充满哲学智慧... 在中国古代,有许多充满哲学智慧的成语典故、寓言故事,如...在中国古代,有许多充满哲学智慧的成语典故...
清澈的意思是什么,… 清澈的意思是什么,…清净而明澈清而透明【造句】看着他清澈而又天真的眼眸,我的心久久不能平静……
蚂蚁森林合种爱情树一方退出怎么... 蚂蚁森林合种爱情树一方退出怎么找回来两个人合种的爱情树,我退出来,我怎么再次加入进去继续合作那个树?...
有好看的古代修炼小说推荐吗? 有好看的古代修炼小说推荐吗?古代重生穿越修炼......让我帮你找一下这些古代修炼的小说,找到这些类...
女主重生爱上前世辜负的人 女主重生爱上前世辜负的人重生我是你正妻渣女重生之竹马重生之弃渣重生之夫君可欺重生之换我疼你重生妇归来...
华胥引有广播剧吗 华胥引有广播剧吗现有的华胥引的广播剧是忆语广播剧社出品的,只有十三月和杯(这个是错字,请无视,居然输...
选文韩麦尔先生在说了,我的朋友... 选文韩麦尔先生在说了,我的朋友们我就要离开你们呢了,再见了银头鲑鱼tj75rt6yturdrruv ...
中通快递从北京保定市到广东揭阳... 中通快递从北京保定市到广东揭阳普宁要多久?中通快递从北京保定市到广东揭阳普宁要多久?从北京到广东需要...
关于离婚悲伤的歌曲 关于离婚悲伤的歌曲关于离婚悲伤的歌曲林俊杰《可惜没如果》 张靓颖《我走以后》 金志文《流着泪说分手》...
形容文笔差怎么说啊? 形容文笔差怎么说啊?哥哥姐姐,麻烦问下,我是做文员的,形容文案方面的工作很差应该怎么说啊?粗鄙怎么样...
我想做未婚妈妈,可行吗? 我想做未婚妈妈,可行吗?没关系吧?我同学好多他们妈妈都是30岁以后省得他们,都没事啊,但是如果你自己...
如何在两个excel表格里筛选... 如何在两个excel表格里筛选出重复的名字如何在两个excel表格里筛选出重复的名字1、电脑打开EX...
且试天下 哪些小说是用白绫做武... 且试天下 哪些小说是用白绫做武器的?神雕侠侣吖- -..小龙女一开始就是用白绫的聊斋 辛十四娘嘿嘿~...
自带高冷体质,笑起来温暖又治愈... 自带高冷体质,笑起来温暖又治愈的星座,你了解吗?虽然天生高冷体质,但是笑起来特别的温暖治愈的新作用天...
火星未解之谜 火星未解之谜多列举一些,每个事例最好长一点,谢啦~“火星人脸”, “地表被水冲击河道”,“原始大气和...
我是1991年10月4号生的,... 我是1991年10月4号生的,是什么星座啊有的说是处女座有的说是天平座,糊涂了,到底是什么啊很负责任...
梦见白狐狸,然后当时我骑着自行... 梦见白狐狸,然后当时我骑着自行车,我想躲开它,他很凶的的追赶我,最后它向我扑了过来,然后我就醒乐.你...