php学习笔记11:SESSION

PHP Session Session在PHP中是一种存储用户数据的方式,可以用于保存用户的登录状态、购物车内容、用户偏好设置等。当用户访问一个页面时,PHP会检查是否存在名为PHPSESSID的cookie,如果存在,则将这个cookie的值作为Session ID。如果不存在,PHP会生成一个新的Session ID并存储在cookie中。PHP Session是一种方便、高效的用户数据存储方式,在网站开发中有着广泛的应用。了解Session的工作原理、配置和使用方法,有助于我们更好地利用Session为网站提供更优质的服务。 阅读详情

SESSION

SESSION基本使用

session原理

session与浏览器无关,但是与cookie有关.

1. php碰到session_start()时开启session会话,会自动检测sessionID;

1.1如果cookie中存在sessionID,则使用现成的;

1.2如果cookie中不存在sessionID,创建一个sessionID,并通过响应头以cookie形式保存到浏览器上

2. 初始化超全局变量$_SESSION为1个空数组

3. php通过sessionID去指定位置(session文件存储位置)匹配对应的文件

3.1不存在该文件:创建一个sessionID命名文件;

3.2存在该文件: 读取文件内容(反序列化),将数据存储到$_SESSION中

4. 脚本执行结束,将$_SESSION中保存的所有数据序列化存储到sessionID对应的文件中

启用session,需要开启session(脚本使用到$_SESSION就开启1次)

$_SESSION是通过session_start()函数调用时才会定义的:

如上,直接使用$_SESSION会发现其未定义.

session使用需要先调用session_start()

设置session信息

  • 如果想存储数据到session中,那么只要不断给$_SESSION数组添加元素即可.

读取session信息

  • 读取$_SESSION数组即可获取session信息

会话技术的本质是为了实现跨脚本共享数据:在一个脚本中定义数据,在其他脚本中可读取数据.

我们新开1个脚本文件读取上一个脚本的session:

此时我们按浏览器F12"开发者选项"查看:

删除1个session信息:

删除session就是将session数据清理掉(让$_SESSION拿不到)

删除指定session: unset($_SESSION['某元素下标']);

删除所有session信息

删除所有session信息就是让$_SESSION变成空数组

session相关配置(php.ini)

session基础配置

  • 1. session.name : session名字,保存到cookie中sessionID对应的名字

  • 2. session.auto_start : 是否自动开启session(无须使用session_start()函数开启).默认为关闭
  • 3. session.save_handler :session数据默认的保存方式,默认是文件形式

  • 4. session.save_path: session文件默认存储的位置.默认没有开启,说明借用操作系统的临时文件存储.

使用系统的文件夹存储并不安全,我们需要指定一个存储文件夹.用户可根据实际需要自行指定一个存储文件夹.

session常用配置

  • 1. session.cookie_lifetime:php sessionID对应的cookie生命周期.默认生命周期0指至会话结束(浏览器关闭)

  • 2. session.cookie_path sessionID在浏览器存储之后允许服务器访问的路径(cookie作用范围),默认是全站

  • 3. session.cookie_domain: sessionID对应的cookie允许访问的子域范围(是否可以跨子域).默认只能当前主机访问,禁止跨子域.

配置的两种形式

  • 1. php.ini中配置:修改php.ini
  • 2. 脚本中配置:php可以通过ini_set()函数来在运行中设定某些配置项(只会对当前运行的脚本有效).把这种配置称之为项目级.

ini_set:ini_set()函数: 为一个配置选项设置值.设置指定配置选项的值。这个选项会在脚本运行时保持新的值,并在脚本结束时恢复。

格式:ini_set ( string $varname , string $newvalue ) : string

参数: varname 指定配置项.(注意:不是所有有效的选项都能够用 ini_set() 来改变的。 这里有个有效选项的清单附录); newvalue 设置配置选项新值。

返回值:成功时返回旧的值,失败时返回 FALSE。

例如在脚本中设置一个选项:

销毁session

session删除只是删除session数据,$_SESSION看不到而已.销毁session是指真正物理删除session对应的session文件.

session_destroy()函数:根据session_start()得到的sessionID去寻找对应的session文件并删除.

session垃圾回收机制

session垃圾回收机制原理

垃圾回收参数设置:

1. session.gc.maxlifetime = 1440 : 规定session文件最大生命周期是1440秒

2. session.gc.probability = 1 : 垃圾回收概率因子(分子)
probability 英[ˌprɒbəˈbɪləti]美[ˌprɑːbəˈbɪləti] n.可能性; 或然性; 很可能发生的事; 概率; 几率; 或然率;

3. sesson.gc.divisor = 1000 : 垃圾回收概率分母

禁用COOKIE后使用session

禁用cookie后不能使用session的原因

session技术需要利用cookie来保存sessionID. 从而使得php可以跨脚本时得到相同sessionID,从而访问同一个session文件.

示例:我们关闭浏览器cookie看看效果,如下:

我们在脚本1中设置session,如下:

我们在脚本2中读取session,如下:

运行脚本1,服务器产生session文件,如下:

运行脚本2,服务器产生新session文件,并没有读取其他脚本产生的原session文件,如下:

解决思路:最终让session_start开启之前拿到先前脚本产生的原来的sessionID(而不是再产生1个新sessionID).

实现无cookie使用session

方案A:利用php提供的函数:session_id和session_name来获取/设置sessionID和name.从而解决session_start总是产生新sessionID的情况.(手动操作)

  • 1.在session保存数据的脚本中获取sessionID和名字:

  • 2. 想办法将数据传递给其他脚本:表单传值(url或者form表单)

  • 3. 在其他(接收session的)脚本中接受数据.为了阻止session_start产生新的sessionID.需要使用session_id函数设置读取到的id

方案B: 利用session机制中已经提供的解决方案自动操作(配置)

原因1:默认session配置只允许使用cookie保存sessionID

原因2:默认关闭了其他能够传送数据的方式,只保留了cookie:

  • 1. 修改php.ini配置文件,开启其他方式传输sessionID.关闭[ 只允许使用cookie传输功能 ].

需要更改为:session.use_only_cookies = 0

需要更改为: session.use_trans_sid = 1

  • 2. 一旦配置开启,php会自动将sessionID和session名字在其他位置绑定数据.同时还会在session_start的时候,考虑其他方式(表单)传递数据,而不是只有cookie.

如上,效果和方案A一样,只是免于手工保存/获取sessionID和名字.(由PHP系统自动完成)

总结:网站实际开发禁止使用[禁用cookie时使用session].不建议修改以上PHP.INI配置.

【数学建模技术】蒙特卡洛方法在随机系统建模中的应用 本文系统阐述了蒙特卡洛方法在随机系统建模中的应用。该方法基于随机抽样和统计推断,利用大数定律和中心极限定理获得复杂问题的近似解。文章详细介绍了蒙特卡洛积分、随机数生成(包括伪随机数和非均匀随机数生成技术)以及方差缩减方法(对偶变量法、控制变量法、分层抽样和重要性抽样)。蒙特卡洛方法在金融定价、可靠性分析等领域展现出独特优势,尤其适用于高维、非线性系统。研究表明,该方法通过优化抽样策略可有效提高计算效率,为复杂随机系统建模提供了可靠的理论工具和实践指导。 阅读详情

相关推荐

泛微Ecology9接口调用全流程:从配置到实战Java代码解析

本文详细解析了泛微Ecology9系统接口的完整调用流程,涵盖安全架构、服务端配置与客户端Java实战代码。重点阐述了基于RSA加密的认证机制、Token管理策略,并提供了企业级集成的核心代码示例与生产环境调优建议,帮助开发者安全、高效地实现系统对接。

m9n0o的博客 836

闭关修炼(二十二)session和cookie原理

文章目录简述cookie如何创建cookie如何获取cookiecookie原理session如果创建session如何获取sessionsession原理边角料 简述 cookie和session是开发中常用的记录状态的机制。 相同点: 他们两个都可以用来存私密的东西,同样也都有有效期的说法。 cookie和session都是用来跟踪浏览器用户身份的会话方式。 不同点: cookie数据保存在客户端,session数据保存在服务器端。 session是放在服务器上的,过期与否取决于服务器的设定,c

qq_19841133的博客 574

概率论 知识图谱 + 实战案例解析

本文通过构建概率论知识图谱,系统梳理了从随机试验、概率、条件概率到随机变量与分布的核心概念及其内在联系。结合朴素贝叶斯分类器和蒙特卡洛模拟等实战案例,深入解析了条件概率、独立性及大数定律等理论如何应用于机器学习与实际问题求解,旨在帮助读者建立结构化思维,将理论有效转化为解决实际问题的能力。

weixin_29051193的博客 266

session

很多系统对于某些关键的功能需要登录后才能使用,比如支付、下载、评论等。服务器如何记忆用户是否登录? 常识:http是无状态协议, 无状态如何理解? http是基于request/response模式, session也是jsp中的一个内置对象。 session的原理: 用户登录时会在服务器内部开辟一块空间,专门存储该用户的session信息,不同的用户拥有不同的session空间,它们用sessionId来标识,该id在用户访问过程中会以cookie的形式写到客户端,客户端下次再

FairyKunKun的博客 1187

S32K3基于EB配置GPT触发WDG的实战解析

本文详细解析了S32K3 MCU基于EB tresos工具配置GPT定时器触发看门狗(WDG)的实战方法。通过分析协同工作机制、MCAL配置步骤及代码实现,帮助开发者构建可靠的硬件监控系统,提升汽车电子系统的安全性与实时性。

f9g0h的博客 204

一文读懂GPU通信互联技术:GPUDirect、NVLink与RDMA

GPUDirect是NVIDIA开发的一项技术,旨在实现GPU与其他设备(如网络接口卡NIC和存储设备)之间的直接通信和数据传输,而无需CPU的参与。传统上,数据在GPU和另一个设备之间传输时,必须通过CPU,这导致潜在的性能瓶颈和延迟增加。GPUDirect技术则通过绕过CPU,直接访问和传输数据,显著提高系统性能。NVLink是NVIDIA开发的一种高速、高带宽的互连技术,用于连接多个GPU之间或GPU与其他设备(如CPU、内存等)之间的通信。

异构算力老群群(在读985计算机博士生)的技术博客 7770

浏览器 session的存储及获取

session 在浏览器的存储 window.sessionStorage["signId"] = res.data.id; session 的读取 var signId= sessionStorage.getItem("signId"); 清空 window.sessionStorage["signId"] = '';

Missbelover的博客 3848

基于深度学习的涂胶缺陷类型检测:数据集处理与YOLOv8模型实现

本文提出了一种基于YOLOv8深度学习的涂胶缺陷检测系统,针对断胶、溢胶、缺胶、气泡及胶条宽度异常等常见缺陷类型,实现了从数据采集到模型部署的完整解决方案。系统采用工业相机采集涂胶图像,通过多形态数据增强策略解决样本稀缺问题,利用YOLOv8框架实现高效检测。相比传统人工目检和规则式机器视觉方法,该系统在检测精度(mAP达97.5%)和实时性(单图检测耗时0.038秒)方面表现优异,可满足智能制造场景下的涂胶质量检测需求。

huanghm88的专栏 271

Session详解

本文详细介绍了Session的基本使用、原理分析以及使用细节,并对Cookie和Session进行了细致的总结

BoBooY的Java学习笔记 4303

用 AI 设计力打造专业 UI_UX:在 Trea、Qoder 等 AI IDE 中集成 ui-ux-pro-max-skill

的核心是知识库Trea 和 Qoder 虽未被--ai all原生支持,但完全可通过@folder手动集成使用后,你的 AI 生成代码将从“功能可用”跃升至“设计专业”这是零成本提升产品质感的最佳实践之一🎨好的 UI 不应是设计师的专利,而是每个开发者的默认能力。然后在 Trea 或 Qoder 中输入—— 让 AI 成为你最懂设计的结对编程伙伴。

lpfasd123的博客 7099

总结个人关于雷达样式的见解(脉内脉间调制)

概述 雷达有各种各样的脉内脉间调制样式,对于雷达的设计者来说,不外乎三个目的: 1、增加雷达性能,如提高测距精度,增大侦察距离等; 2、雷达的工作机制决定雷达必须采用此种样式的调制,如有些SAR雷达为保证径向测距精度,需要使用脉内宽带调制信号; 3、降低雷达被电子战装备截获的概率,也就是LPI设计。 对于雷达对抗方,则只会观察到信号存在脉内及脉间的调制。对于一般的雷达信号,通常只采用脉内调制,脉间频率调制,脉间PRI调制。 脉间调制类型 1、PD雷达的脉间特征 雷达进行脉间调制的主要是PRI..

年糕的博客 3万+

PHP Session安全漏洞实战:从CTFshow WEB11看登录验证的常见陷阱

本文以CTFshow WEB11关卡为例,深入剖析PHP Session在登录验证中的常见安全漏洞。文章揭示了开发者将Session数据误作为可信验证基准的逻辑缺陷,并详细拆解了攻击者如何通过操控PHPSESSID或Session数据绕过验证。同时,文章提供了构建健壮登录系统的核心流程与关键防御措施,包括Session固定攻击防护、安全的Cookie设置以及密码存储最佳实践。

d3e4f的博客 699

YOLOv11改进策略【卷积层】| CVPR2025 GBConv轻量门控瓶颈卷积 低秩瓶颈降参 + 门控聚焦形态,强效捕捉纤细目标

裂缝形态不规则、纹理纤细,传统卷积参数大、计算冗余,且无法动态聚焦裂缝形态;背景噪声强易干扰特征提取,需要轻量且能自适应聚焦裂缝形态的卷积单元,因此提出轻量门控瓶颈卷积 GBC。

Limiiiing的博客 851

php 利用 session_status 判断 session 状态

一、官方session_status() 返回值为: PHP_SESSION_DISABLED会话是被禁用的。 PHP_SESSION_NONE会话是启用的,但不存在当前会话。 PHP_SESSION_ACTIVE会话是启用的,而且存在当前会话。 session_status() 二、尝试打印var_dump(session_status()); 值总为int 1...

myhongjinlin的博客 9250

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

PHP:session登录退出实例

** **

weixin_43731793的博客 1268

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PHP SESSION机制原理详解

本文介绍了session的工作原理,以及php session扩展对session的管理方式,和利用session类自定义对session的管理策略,比如利用memecache,redis作为session内容的存储器

weixin_38597669的博客 1045

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PHP SESSION

1.PH 当然是在服务器端,但不是保存在内存中,而是保存在文件或数据库中。 默认情况下,php.ini 中设置的 SESSION 保存方式是 files(session.save_handler = files),即使用读写文件的方式保存 SESSION 数据,而 SESSION 文件保存的目录由 session.save_path 指定,文件名以 sess_ 为前缀,后跟 SESSION ID

刘贠 692

PHP session变量

PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应程序中的所有页面使用。 PHP Session变量 对比起Cookie,Session是存储在服务器端的会话,相对安全,并且是以文本文件形式存储在服务器端,所以不怕客户端修改Session内容。 Session的工作机制是:为每个访问者创建一个唯一的id(UID),并...

寻欢作乐的博客 441

PHP中启动session的函数是,php中session有什么用法,php启动session

php中session有什么用法会话在PHP中有什么用,php中session的用法如下:1。开始会话,[session _ start();】;2.存储会话变量,[$ _ SESSION[‘ view ‘]=1;】;3.结束会话,[session _ destroy();】.会议的工作机制:为每个访问者创建一个唯一的id (UID),并基于这个UID存储变量。uid存储在cookie中或...

weixin_30995363的博客 1276

php关于session赋值,如何使用php中session

如何使用php中session学会php session可以在很多地方使用,比如做一个后台登录的功能,要让程序记住用户的session,其实很简单,看了下面的文章你就明白了。P session用法其实很简单它可以把用户提交的数据以全局变量形式保存在一个session中并且会生成一个唯一的session_id,这样就是为了多了不会产生混乱了,并且session中同一浏览器同一站点只能有一个sessi...

weixin_33007509的博客 778

PHP的Session机制

PHP Session 变量 当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。 但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。 通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。 不过,会话信息是...

Dev-Liangjian的博客 1393

php session详,PHP的Session详解

1、配置Session在PHP配置文件中,有一组合Session相关的配置选项,通过对一些选项重新设置新值,就可以对Session进行配置,否则使用默认的Session配置,在php.ini中和Session有关的,一些有意义的配置如下session.auto_start 自动启动会话,0表示禁用,1表示开启 默认:0session.cache_expire 为缓存中的会话设置当前时间,单位分...

weixin_42099070的博客 960

php三种清空session的方式,php中删除、清空session的方式总结

php中删除session的方式有很多种,本篇文章主要给大家介绍三种清空session的方式,感兴趣的朋友跟着小编一起学习吧session删除清空是很讲究了如果我们定义好可以清除指定变量否则不小心会把所有session都清除掉了,下面我们来看一些总结。第一种方式:unset($_SESSION['xxx']) 删除单个session,unset($_SESSION['xxx']) 用来unregi...

weixin_34775101的博客 3113
上一篇: php学习笔记10:会话技术,cookie
下一篇: php学习笔记12:GD图像处理基本技术
申佳明哥哥
博客等级 码龄10年 39粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值