PHP(14)会话技术
PHP(14)会话技术
- 一、概念
- 二、分类
- 三、cookie技术
- 1. cookie的基本使用
- 2. cookie的生命周期
- 3. cookie的作用范围
- 4. cookie的跨子域
- 5. cookie的数组数据
- 四、session
- 1. session原理
- 2. session基本使用
- 3. session配置
- 4. 销毁session
一、概念
HTTP协议是一种无状态、无连接的协议,无法判断多个请求是否来自同一个用户。会话技术就是让HTTP协议识别来自同一个用户的多个请求。
二、分类
- cookie:是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。本质是由Web服务器保存在客户端上的小文本文件,可以包含有关用户的信息。
- session:session技术是将数据保存在服务器端,session技术的实现依赖于cookie技术。
- 区别
| 区别 | cookie | session |
|---|---|---|
| 安全性 | 存储在浏览器端,安全性低 | 存储在服务器,安全性高 |
| 数据大小 | 数量和大小都有限制(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有关。
- PHP碰到session_start()时开启session会话,会自动检测sessionID
- 如果cookie中存在,则使用现成的。
- 如果cookie中不存在,会创建一个sessionID,并通过响应头以cookie形式保存到浏览器中。
- 初始化超全局变量$_SESSION为一个空数组
- PHP通过sessionID去指定存放session文件的位置匹配对应的文件
- 不存在该文件,则创建一个sessionID命名文件
- 存在该文件,读取文件内容,将数据存储到$_SESSION中
- 脚本执行结束,将$_SESSION中保存的所有数据序列化存储到sessionID对应的文件中。
- PHP碰到session_start()时开启session会话,会自动检测sessionID
2. session基本使用
- $_SESSION是通过session_start()函数的调用才会定义的,不会直接定义。
- 设置session和读取session
<?php
// 开启session
session_start();
// 设置session
$_SESSION['name'] = 'Mark';
$_SESSION['hobby']=array('sing', 'dump');
// 读取session
var_dump($_SESSION);

- 删除一个session
unset($_SESSION['name']); - 删除所有session
$_SESSION = array();
3. session配置
- 配置方式
- 在php.ini中配置,全局生效
- 脚本中配置,PHP可以通过
ini_set()函数来设置项目配置
- 基础配置
- session.name:session名字,保存到cookie中sessionID对应的名字
- session.auto_start:自动开启session,默认关闭
- session.save_handler:session数据的保存方式,默认是文件形式
- session.save_path:session文件默认存储位置
- 常用配置
- session.cookie_lifetime:PHPsessionID在浏览器端对应cookie的生命周期,默认是会话结束
- session.cookie_path:sessionID在浏览器存储之后允许服务器访问的路径(cookie作用范围)
- session.cookie_domain:cookie允许访问的子域
- 垃圾回收配置
- session.gc_maxlifetime:规定session文件的最大生命周期,默认24分钟。
- session.gc_probability:垃圾回收概率因子,默认为1
- session.gc_divisor:垃圾回收概率分母,默认为1000
- 触发几率默认是 1/1000
4. 销毁session
$_SESSION = array();只会删除数据。销毁session会删除session对应的文件。- 通过
session_destroy()函数来销毁session。
相关文章:
PHP(14)会话技术
PHP(14)会话技术一、概念二、分类三、cookie技术1. cookie的基本使用2. cookie的生命周期3. cookie的作用范围4. cookie的跨子域5. cookie的数组数据四、session1. session原理2. session基本使用3. session配置4. 销毁session一、概念 HTTP协议是一种无…...
对JAVA 中“指针“理解
对于Java中的指针,以下典型案例会让你对指针的理解更加深刻。 首先对于: 系统自动分配对应空间储存数字 1,这个空间被变量名称b所指向即: b ——> 1 变量名称 空间 明…...
功率放大器在MEMS微结构模态测试研究中的应用
实验名称:功率放大器在MEMS微结构模态测试研究中的应用研究方向:元器件测试测试目的:随着MEMS器件在各个领域中广泛应用,对微结构进行模态测试获得其动态特性参数对微结构的设计、仿真、制造、以及质量控制和评价等方面具有十分重…...
【算法基础】字典树(Trie树)
一、Trie树原理介绍 1. 基本概念 Trie 树,也叫“字典树”。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。【高效存储和查找字符串集合的数据结构】,存储形式如下: 2. 用数组来模拟Trie树的…...
MyBatis 插件 + 注解轻松实现数据脱敏
问题在项目中需要对用户敏感数据进行脱敏处理,例如身份号、手机号等信息进行加密再入库。解决思路就是:一种最简单直接的方式,在所有涉及数据敏感的查询到对插入时进行密码加解密方法二:有方法一到出现对所有重大问题的影响&#…...
MySQL优化篇-MySQL压力测试
备注:测试数据库版本为MySQL 8.0 MySQL压力测试概述 为什么压力测试很重要?因为压力测试是唯一方便有效的、可以学习系统在给定的工作负载下会发生什么的方法。压力测试可以观察系统在不同压力下的行为,评估系统的容量,掌握哪些是重要的变化…...
CF43A Football 题解
CF43A Football 题解题目链接字面描述题面翻译题面描述题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2代码实现题目 链接 https://www.luogu.com.cn/problem/CF43A 字面描述 题面翻译 题面描述 两只足球队比赛,现给你进…...
Nginx常用命令及具体应用(Linux系统)
目录 一、常用命令 1、查看Nginx版本命令,在sbin目录下 2、检查配置文件的正确性 3、启动和停止Nginx 4、查看日志,在logs目录下输入指令: 5、重新加载配置文件 二、Nginx配置文件结构 三、Nginx具体应用 1、部署静态资源 2、反向代…...
从零实现Web服务器(三):日志优化,压力测试,实战接收HTTP请求,实战响应HTTP请求
文章目录一、日志系统的运行流程1.1 异步日志和同步日志的不同点1.2 缓冲区的实现二、基于Webbench的压力测试三、HTTP请求报文解析http报文处理流程epoll相关代码服务器接收http请求四、HTTP请求报文响应一、日志系统的运行流程 步骤: 单例模式(局部静态变量懒汉…...
MFC入门
1.什么是MFC?全称是Microsoft Foundation Class Library,我们称微软基础类库。它封装了windows应用程序的各种API以及相关机制的C类库MFC是一个大的类库MFC是一个应用程序框架MFC类库常用的头文件afx.h-----将各种MFC头文件包含在内afxwin.h-------包含了各种MFC窗…...
1、H5+CSS面试题
1, HTML5中新增了哪些内容?广义上的html5指的是最新一代前端开发技术的总称,包括html5,CSS3,新增的webAPI。Html中新增了header,footer,main,nav等语义化标签,新增了video,audio媒体标签,新增了canvas画布。…...
亚马逊云科技重磅发布《亚马逊云科技汽车行业解决方案》
当今,随着万物智联、云计算等领域的高速发展,创新智能网联汽车和车路协同技术正在成为车企加速发展的关键途径,推动着汽车产品从出行代步工具向着“超级智能移动终端”快速转变。挑战无处不在,如何抢先预判?随着近年来…...
Springboot扩展点之FactoryBean
前言FactoryBean是一个有意思,且非常重要的扩展点,之所以说是有意思,是因为它老是被拿来与另一个名字比较类似的BeanFactory来比较,特别是在面试当中,动不动就问你:你了解Beanfactory和FactoryBean的区别吗…...
新库上线 | CnOpenDataA股上市公司交易所监管措施数据
A股上市公司交易所监管措施数据 一、数据简介 证券市场监管是指证券管理机关运用法律的、经济的以及必要的行政手段,对证券的募集、发行、交易等行为以及证券投资中介机构的行为进行监督与管理。 我国《证券交易所管理办法》第十二条规定,证券交易所应当…...
同步辐射XAFS表征方法的应用场景分析
X射线吸收精细结构XAFS表征方法是一种用于研究物质结构和化学环境的分析技术。XAFS 使用 X 射线照射到物质表面,并观察由此产生的 X 光吸收谱。 XAFS 技术通常应用于研究高分子物质、生物分子、纳米结构和其他类型的物质。例如,XAFS 可以用来研究高分子…...
06 antdesign react Anchor 不同页面之间实现锚点
react Anchor 不同页面之间实现锚点一、定义二、使用步骤三、开发流程(一)、组件(二)、页面布局(三)、点击事件(四)、总结说明一、react单页面应用,当前页面的锚点二、react单页面应用,不同页面的锚点思路:锚点只能在当前页面使用,…...
mysql调优-内存缓冲池
因本地查询和服务器查询相比服务器慢了很多,同样的数据,同样的sql查询,考虑了是不是链接太多了,自行查询了下,我使用的c3p0的链接池,配置一个小时超时,正常情况下是20多个链接,而mys…...
【LeetCode】每日一题(5)
目录 题目:2341. 数组能形成多少数对 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:2341. 数组能形成多少数对 -…...
输入任意多个整数, 把这些数据保存到文件data.txt中.(按ctrl + z)
#pragma once #include <iostream> #include <fstream> using namespace std; /* 输入任意多个整数, 把这些数据保存到文件data.txt中. 如果在输入的过程中, 输入错误, 则提示用户重新输入. 指导用户输入结束(按ctrl z) [每行最多保存10个整数] */ int main() { …...
Mysql数据库的时间(3)一如何用函数插入时间
暂时用下面四个日期函数插入时间 如:insert into Stu(time) values (now()); Mysql的时间函数描述对应的Mysql的时间类型now()/sysdate()NOW()函数以YYYY-MM-DD HH:MM:SS返回当前的日期时间date/time/dateTime/timeStamp/yearcurDate()/current_date()返回当前的日期YYYY-M…...
告别丑曲线!PPT波浪线绘制保姆级教程(含压缩技巧)
告别丑曲线!PPT波浪线绘制保姆级教程(含压缩技巧) 在商务演示、学术报告或品牌提案中,一条流畅的波浪线往往能成为视觉焦点——它既能引导观众视线,又能传递动态趋势。但PPT自带的形状库中,那些生硬的预设曲…...
RTX 3090 + PyTorch 1.7.1环境配置全攻略:从Scene-Graph-Benchmark.pytorch到Apex安装避坑指南
RTX 3090深度学习环境配置实战:从PyTorch到Scene-Graph-Benchmark全流程解析 当高端硬件遇上前沿算法,环境配置往往成为开发者面临的第一道技术门槛。RTX 3090凭借24GB显存和Ampere架构的强大算力,成为计算机视觉研究的理想选择,但…...
23种设计模式 - 组合模式(Composite)
组合模式(Composite)—— 文件夹套文件夹,统一操作 大白话解释 你的电脑里: 📄 文件(不能再包含东西)📁 文件夹(可以装文件,也可以装文件夹) &…...
原子操作的实现原理
在并发编程、操作系统与计算机体系结构中,原子操作是保证数据安全、避免竞态条件的基石。它的核心特性是不可中断、不可分割,操作要么完整执行,要么完全不执行,绝不会出现中间状态。本文将从定义出发,逐层拆解原子操作…...
3步永久保存喜马拉雅VIP音频:xmly-downloader-qt5全功能测评
3步永久保存喜马拉雅VIP音频:xmly-downloader-qt5全功能测评 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 xmly-down…...
nli-distilroberta-base环境部署:Docker容器内Python依赖与模型权重加载验证
nli-distilroberta-base环境部署:Docker容器内Python依赖与模型权重加载验证 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务。它能智能分析两个句子之间的关系,判断它们之间的逻辑关联。这项技术在智能客…...
Ubuntu 22.04 换源+Docker安装+镜像加速
Ubuntu 22.04 换源Docker安装镜像加速 前言 本文针对 Ubuntu 22.04 LTS 系统,先更换国内镜像源提升下载速度,再完成 Docker 引擎与 Compose 插件安装,最后配置 Docker 国内镜像加速,全程无报错、可直接复制执行,适配 V…...
Qt新手必看:MinGW和MSVC构建套件到底怎么选?保姆级对比指南
Qt构建套件选择指南:MinGW与MSVC深度对比与实战决策 刚接触Qt开发的初学者,往往在配置开发环境的第一步就陷入选择困难——面对MinGW和MSVC这两个构建套件选项,究竟该如何抉择?这个看似简单的选择背后,实则关系到后续开…...
2026论文写作工具红黑榜:AI论文网站怎么选?这份榜单够用!
红榜优先选千笔AI、ThouPen、豆包,适配国内学术规范;黑榜避开低质免费工具、无真实引用平台、过度依赖全文生成的工具,优先按需求匹配三维模型(需求匹配度 - 数据可信度 - 成本承受力)。 一、红榜:10 款高分…...
自动驾驶避障实战:人工势场法的核心原理与MATLAB仿真
1. 人工势场法基础概念 第一次接触人工势场法是在研究生阶段的机器人学课程上,当时教授用了一个非常形象的比喻:想象你手里拿着一块磁铁,目标点是一块异性磁极的磁铁,障碍物则是同性磁极的磁铁。这个简单的物理现象,就…...
