当前位置: 首页 > 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,你可以在用户浏览你的网站时为他们提供一致的、个性化的体验

http://www.lryc.cn/news/338715.html

相关文章:

  • 从零实现诗词GPT大模型:GPT是怎么生成内容的?
  • 8路HDMI+8路AV高清视频流媒体编码器JR-3218HD
  • LangChain入门:14.LLMChain:最简单的链的使用
  • 深入理解k8s kube-proxy
  • Spark-机器学习(1)什么是机器学习与MLlib算法库的认识
  • java的正则表达式校验,包含了中国几乎所有运营商手机号码的校验格式
  • C#简单工厂模式的实现
  • .NET 设计模式—观察者模式(Observer Pattern)
  • EasyUI Jquery 学习笔记 ——DataGrid(数据网格)与 Tree(树)详细版
  • JAVA发票验真接口、票据ocr、数电票在线查验真伪
  • el-date-picker调用回车事件
  • js学习总结
  • MES实施优势有哪些?MES制造执行系统的主要内容
  • ChatGPT 和 Elasticsearch:使用 Elastic 数据创建自定义 GPT
  • 废品回收 小程序+APP
  • 下载好了annaconda,但是在创建一个新的Conda虚拟环境报错
  • 如何安装MacOS的虚拟机?mac安装虚拟机的步骤 虚拟机安装MacOS VMware Fusion和Parallels Desktop19
  • Flutter 中 AutomaticKeepAliveClientMixin 的介绍及使用
  • 注意力机制篇 | YOLOv8改进之清华开源ACmix:自注意力和CNN的融合 | 性能速度全面提升
  • Go语言支持重载吗?如何实现重写?
  • Spring中基于事件监听驱动 和 线程池的异步任务
  • C++ 优先级队列用法详解与模拟实现
  • Linux进阶之旅:深入探索Linux的高级功能
  • 【Java】内存可见性问题是什么?
  • Guava里一些比较常用的工具
  • 在windows系统中【.gz.tar】和【.whl】文件分别应该怎么下载到conda的某个虚拟环境中
  • Rust - 数据类型
  • 基于springboot实现洗衣店订单管理系统项目【项目源码+论文说明】计算机毕业设计
  • Java基础知识总结(53)
  • 196算法之谜在 JSP 中使用内置对象 request 获取 form 表单的文本框 text 提交的数据。