当前位置: 首页 > news >正文

php中session相关知识(目前了解部分)

#记录学习知识 

一.ini_set() 

在PHP中,ini_set() 函数用于在脚本运行时设置指定的配置选项的值。这些配置选项可以是PHP的核心设置,例如文件上传的最大大小、脚本的最大执行时间、错误报告级别等。使用 ini_set() 可以临时改变PHP.ini文件中的设置,但这些改变仅在脚本运行期间有效,不会永久更改PHP.ini文件。

函数的基本语法如下:

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

  • $varname:需要设置的配置选项名称(即在PHP.ini中的选项名称)。
  • $newvalue:为该配置选项设置的新值。

返回值是旧的配置选项值,如果操作成功。如果操作失败,通常返回一个空字符串。

以下是一些 ini_set() 函数的使用示例:

// 设置脚本最大执行时间为120秒 ini_set('max_execution_time', '120');

// 设置时区 ini_set('date.timezone', 'Asia/Shanghai');

// 设置错误报告级别,只报告运行时错误 ini_set('error_reporting', E_ERROR);

// 设置POST最大数据量为8M ini_set('post_max_size', '8M');

// 设置脚本内存限制为128MB ini_set('memory_limit', '128M');

需要注意的是,并非所有的PHP配置选项都可以使用 ini_set() 函数进行设置。有些选项是“PHP_INI_SYSTEM”类别的,它们只能在PHP.ini文件或服务器配置文件(例如httpd.conf或.htaccess文件)中设置。

此外,ini_set() 在不同的服务器环境中可能表现不同,一些服务器配置可能禁用了对某些设置的更改,或者只能在PHP.ini或.htaccess中更改这些设置。因此,在使用 ini_set() 时,建议查看PHP官方文档以确认哪些选项是可以在运行时更改的。

二.session和session.serialize_handler

在PHP中,$_SESSION是一个特殊的预定义数组,用于存储跨多个页面(即在整个用户会话中)持久化的数据。与其他类型的数据不同,会话数据在页面加载时不会丢失,而会在服务器上保存到用户会话结束(即用户关闭浏览器或者经过一定时间未活动)。

session_start()是一个函数,用来开启一个新的会话或继续已经存在的会话。如果一个会话已经存在(例如,同一个用户在另一个页面已经开启了会话),这个函数将会使用现有的会话。如果会话不存在,这个函数将会创建新的会话。要使用$_SESSION数组存储数据,首先必须调用 session_start() 函数。

// 开启会话 session_start();

// 储存数据到$_SESSION变量 $_SESSION["username"] = "JohnDoe";

session.serialize_handler 是PHP的会话配置选项,定义了会话数据序列化的方法。当PHP存储或检索会话数据时,需要进行序列化或反序列化操作。序列化是将复杂的数据结构(如数组或对象)转化为可以存储或传输的简单字符串;反序列化就是将这种字符串转回原来的数据结构。

session.serialize_handler 可以设置为以下几种值:

  • php:PHP序列化处理。这是默认值,适合大部分应用。
  • php_binary:更紧凑的二进制格式,但并不所有PHP值都支持。
  • php_serialize:使用 serialize() 和 unserialize() 函数处理。比 php 选项更安全,支持更多的数据类型,但不是所有系统都支持。
  • wddx:使用 WDDX (Web Distributed Data Exchange) 格式。

也可以通过扩展定义自定义的序列化处理器。不过,对大多数应用来说,通常使用默认的 php 选项就足够了。

三.session_start()

在PHP中,会话(Session)是一种在服务器上存储用户数据以便跨多个页面请求或访问期间使用的机制。它是一个全局性质的存储方式,允许你为每个访问者创建一个独特的会话,并且这个会话可以保持一定时间的持久化状态。

session_start() 的作用

session_start() 函数的作用是启动新的会话或者继续已有的会话。当你调用 session_start() 函数时,PHP将执行以下操作:

  1. 检查是否已经存在一个会话ID,如果存在,它将使用这个ID继续旧的会话;如果不存在,它将创建一个新的会话ID。
  2. 将会话ID发送到用户浏览器,通常是通过一个名为 PHPSESSID 的cookie。
  3. 根据会话ID,加载会话数据并将其填充到全局数组 $_SESSION 里,使得你可以在脚本中访问这些会话数据。

session_start() 必须在脚本输出任何内容到浏览器之前被调用,因为它需要发送头信息。

$_SESSION 数组的作用

$_SESSION 是一个超全局变量,它是一个关联数组,包含了会话变量的名字和值。这些会话变量在会话开始时通过 session_start() 函数填充,然后可以在整个会话期间使用。

session_start(); // 开启会话

// 设置会话变量 $_SESSION["username"] = "JohnDoe"; $_SESSION["email"] = "john@example.com";

// 访问会话变量 echo $_SESSION["username"]; // 输出 JohnDoe

会话的持久化

会话数据通常存储在服务器的临时文件夹中,但这个存储位置可以通过修改 session.save_path 配置选项进行改变。会话数据在每个页面请求结束时写入存储,并在每个新请求时(通过 session_start())读取。

会话的安全性和生命周期

  • 会话ID应该保持安全,防止会话劫持。
  • 会话数据保持在服务器上,因此敏感信息不会直接暴露给客户端。
  • 会话可以设定过期时间,超过这个时间不活动的会话将被自动清理。
  • 会话也可以通过 session_destroy() 函数显式地销毁。

总之,会话在PHP中是用来维持用户状态和存储跨页面请求的用户数据的重要工具。通过 session_start() 和 $_SESSION,你可以在用户浏览你的网站时为他们提供一致的、个性化的体验

相关文章:

php中session相关知识(目前了解部分)

#记录学习知识 一.ini_set() 在PHP中,ini_set() 函数用于在脚本运行时设置指定的配置选项的值。这些配置选项可以是PHP的核心设置,例如文件上传的最大大小、脚本的最大执行时间、错误报告级别等。使用 ini_set() 可以临时改变PHP.ini文件中的设置&am…...

从零实现诗词GPT大模型:GPT是怎么生成内容的?

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 再开始编写GPT之前,我们得对GPT是怎么生成内容的有一个大致的了解。目前的神经网络我们大多都可以看成是一个黑盒,即我们把数据输送给网络后,网络给我我们输出,我们可以不用关心这个黑盒里到底是怎么实现…...

8路HDMI+8路AV高清视频流媒体编码器JR-3218HD

产品简介: JR-3218HD高清音视频编码产品支持8路高清HDMI音视频采集功能,8路AV视频采集功能,8路3.5MM独独立音频接口采集功能。编码输出双码流H.264格式,音频MP3/AAC格式。编码码率可调,画面质量可控制。支持HTTP/RTSP…...

LangChain入门:14.LLMChain:最简单的链的使用

摘要 本文将介绍LangChain库中LLMChain工具的使用方法。LLMChain将提示模板、语言模型(LLM)和输出解析器整合在一起,形成一个连贯的处理链,简化了与语言模型的交互过程。我们将探讨LLMChain的技术特点、应用场景以及它解决的问题…...

深入理解k8s kube-proxy

1、概述 我觉得只要大家知道kube-proxy是用来配置网络规则的而不是转发流量的,真正的流量由iptables/ipvs来转发就可以了。 网络是k8s的一个关键部分。理解k8s中网络组件如何工作可以帮助更好的设计和配置我们的应用。 kube-proxy就是K8s网络的核心组件。它把我们…...

Spark-机器学习(1)什么是机器学习与MLlib算法库的认识

从这一系列开始,我会带着大家一起了解我们的机器学习,了解我们spark机器学习中的MLIib算法库,知道它大概的模型,熟悉并认识它。同时,本篇文章为个人spark免费专栏的系列文章,有兴趣的可以收藏关注一下&…...

java的正则表达式校验,包含了中国几乎所有运营商手机号码的校验格式

时间2024年4月14日22:25:00 代码 String PHONE_REGEX "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";解释 这个Java代码段定义了一个常量 PHONE_REGEX,它包含了一个正则表达式,用于匹配中国大陆的手机号码。下面是对这…...

C#简单工厂模式的实现

using System.Diagnostics.Metrics; using System.Runtime.InteropServices; using static 手写工厂模式.Program;namespace 手写工厂模式 {internal class Program{public interface eats {void eat();}//定义了一个接口public class rice : eats{public void eat() {Console.…...

.NET 设计模式—观察者模式(Observer Pattern)

简介 在.NET中,观察者模式是一种设计模式,它允许对象之间进行一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。这种模式在事件驱动的设计中非常常见。 在.NET中实现观察者模式,通常涉…...

EasyUI Jquery 学习笔记 ——DataGrid(数据网格)与 Tree(树)详细版

1. DataGrid(数据网格)与 Tree(树) 1.1 Datagrid 数据网格 扩展自 $.fn.panel.defaults。通过 $.fn.datagrid.defaults 重写默认的 defaults。 数据网格(datagrid)以表格格式显示数据,并为选择、排序、分组和编辑数据提供了丰富的支持。数据网格(datagrid)的设计目…...

JAVA发票验真接口、票据ocr、数电票在线查验真伪

发票验真接口,,实时联网核验发票真伪,查验一致返回全票面信息,支持查验增值税发票管理系统开具的发票,支持批量核验发票,翔云发票查验送发票识别,助您摆脱手动输入繁琐,提升工作效率。 发票查验接口适用于银行、金融、代理记账等发票管理数量…...

el-date-picker调用回车事件

elementui的el-date-picker想要调用回车事件&#xff1a; <el-date-pickerv-model"state.date"type"date"value-format"YYYY-MM-DD HH:mm:ss"placeholder"选择日期"clearablekeydown.enter"handleDown"></el-date-…...

js学习总结

这里写目录标题 前情提要JavaScript书写位置1. 内部javaScript (不常用)2. 外部javaScript (常用)3.内联javaScript (常用) js中的输入和输出输出语法1. document.write()2. alert()3. console.log() 输入语法prompt() 前情提要 1. 在javaScript中的 分号 是可以省略的JavaScr…...

MES实施优势有哪些?MES制造执行系统的主要内容

各个行业之间也开始进入到了激烈的竞争当中&#xff0c;很多企业为了能够有效提升企业竞争力&#xff0c;都会通过提升自身实力的方式来提升竞争力。一些制造业也会在经营过程当中使用到MES系统&#xff0c;那么&#xff0c;mes系统的优势有哪些呢&#xff1f; 1、优化企业现场…...

ChatGPT 和 Elasticsearch:使用 Elastic 数据创建自定义 GPT

作者&#xff1a;Sandra Gonzales ChatGPT Plus 订阅者现在有机会创建他们自己的定制版 ChatGPT&#xff0c;称为 GPT&#xff0c;这替代了之前博客文章中讨论的插件。基于本系列的第一部分的基础 —— 我们深入探讨了在 Elastic Cloud 中设置 Elasticsearch 数据和创建向量嵌…...

废品回收 小程序+APP

用户实名认证、回收员实名认证、后台审核、会员管理、回收员管理、订单管理、提现管理、地图、档案管理。 支持&#xff0c;安卓APP、苹果APP、小程序 流程&#xff1a; 一、用户端下单&#xff0c;地图选择上门位置、填写具体位置、废品名称、预估重量、选择是企业废旧、家…...

下载好了annaconda,但是在创建一个新的Conda虚拟环境报错

文章目录 问题描述&#xff1a;解决方案1.生成一个配置文件 问题总结 问题描述&#xff1a; ProxyError(MaxRetryError(“HTTPSConnectionPool(host‘repo.anaconda.com’, port443): Max retries exceeded with url: /pkgs/pro/win-64/repodata.json.bz2 (Caused by ProxyErr…...

如何安装MacOS的虚拟机?mac安装虚拟机的步骤 虚拟机安装MacOS VMware Fusion和Parallels Desktop19

要在Mac上运行MacOS的虚拟机&#xff0c;常用的方法是使用虚拟化软件如VMware Fusion或Parallels Desktop。 以下是安装MacOS的虚拟机的主要步骤&#xff1a; 1. 检查系统要求&#xff1a;确定您的Mac硬件和操作系统满足安装要求。您需要一台具备足够性能的Mac&#xff0c;并…...

Flutter 中 AutomaticKeepAliveClientMixin 的介绍及使用

在 Flutter 中&#xff0c;当你在一个页面中滑动列表或者进行其他一些操作时&#xff0c;如果你返回到该页面&#xff0c;可能会发现之前的状态已经丢失了。这在某些情况下可能是不可取的&#xff0c;特别是当你想要保留之前的状态&#xff0c;而不是每次都重新加载页面时。 为…...

注意力机制篇 | YOLOv8改进之清华开源ACmix:自注意力和CNN的融合 | 性能速度全面提升

前言:Hello大家好,我是小哥谈。混合模型ACmix将自注意力机制和卷积神经网络进行整合,使其同时具有自注意力机制和卷积神经网络的优点。这是清华大学、华为和北京人工智能研究院共同发布在2022年CVPR中的论文。ACmix结合了自注意力机制和卷积神经网络的优势,以提高模型的性能…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...