PHP $_SESSION 变量键中的保留字符

2024-02-12

我正在查看 PHP 会话文件的内部表示,我注意到会话密钥由管道字符分隔|.

在讨论我遇到的问题之前,让我先快速介绍一下会话文件的格式。至少,这是它在我的 Mac 上的格式化方式(10.9.4,PHP 5.4.24)。

会话文件格式

假设我有以下代码:

$_SESSION["age"] = 26;
$_SESSION["car"] = "Mazda";
$_SESSION["nerdy"] = true;
$_SESSION["likes"] = array(42, "being meta");
$_SESSION["stats"] = array("bmi" => 1000);

然后它被存储在会话变量中,如下所示:

age|i:26;car|s:5:"Mazda";nerdy|b:1;
likes|a:2:{i:1;i:42;i:2;s:10:"being meta"}
stats|a:1:{s:3:"bmi";i:1000}

一般格式为

session_key|session_value[;session_key|value] etc.

where session_value是一般形式

type[:size]:value

更具体地说(如果有人感兴趣的话),

  • 字符串:s:3:"some text"
  • 整数:i:4
  • 布尔值:b:1(正确)或b:0 (false)
  • arrays: a:2:{session_value;session_value;session_value;session_value}

哪里有四个session_value大小为 2 的数组中的 s 是key;value key;value pairs.

问题

您可以看到,在上面,顶级会话密钥由|特点。但是如果我们的会话密钥名称之一怎么办?includes the |特点?

嗯,我尝试过。当我这样做时,整个会话文件(在/tmp) was blank(并且变量肯定没有设置)。这是 PHP 开发人员的疏忽还是未记录的限制(或者是否在某处记录了)?

通过将 $_SESSION 键本身放在引号中或在 $_SESSION 键字符串中反斜杠任何管道,可以轻松解决此问题。这对我个人来说不是一个大问题,因为我无法理解为什么我需要放一个|在 $_SESSION 变量键中 - 只是好奇它。


这是一个已知的错误

https://bugs.php.net/bug.php?id=33786 https://bugs.php.net/bug.php?id=33786

解决方法是更新到 5.5.4 并使用 php_serialize 会话序列化程序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP $_SESSION 变量键中的保留字符 的相关文章

  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  •  
    标记内删除

    我制作了简单的 BBCode 脚本 一切正常 但后来我使用了一个 javascript 库来美化我的代码 pre pre 现在我面临的唯一问题是 br 每行代码后面的标签 pre pre tags 所以问题是我怎样才能删除 br 标记哪些在
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • 在 iFrame 内维护会话状态

    不确定我是否疯了 但我在 iFrame 内的会话状态遇到问题 它是一个域在另一个域中的简单设置 我不需要跨域共享任何内容 我想做的就是将一个网站嵌入到另一个网站中 并且我希望该嵌入网站能够使用 cookie 会话状态登录 编辑 更新 等 为
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多

随机推荐

  • 多次加密密码真的会更安全吗? [复制]

    这个问题在这里已经有答案了 可能的重复 双重哈希 密码是否比仅哈希一次更安全 https stackoverflow com questions 348109 is double hashing a password less secure
  • 资产文件project.assets.json没有“net6.0”的目标 - VS2022

    就在几天前 更新到 Visual Studio Community 2022 v17 2 从 v17 1 6 后出现此错误 错误NETSDK1005 资产文件 C XXXXXX Web obj project assets json 没有
  • 底部导航视图:更改应用程序启动时默认突出显示的选项卡

    如上所示 我有这个按钮导航视图 当我启动我的应用程序时 默认情况下我的 类别 选项卡会突出显示 但我想在启动我的应用程序时突出显示我的 主页 选项卡 任何人都可以帮助我摆脱它 尝试这个用法setSelectedItemId 你的方法Bott
  • 字符串初始值设定项和只读部分

    假设我有一个数组 函数的局部数组 和一个指针 char a aesdf and char b asdf 我的问题是在前一种情况下字符串文字是否 aesdf 存储在只读部分 然后复制到本地数组或者类似于 char a a e s d f 0
  • 在feathersjs中将socket.io逻辑与app.js分离

    目前 我的 app js 文件中的 socket io 配置如下 app configure feathers socketio function io io on connection function socket socket emi
  • Flutter中如何调度后台任务?

    我一直在寻找这个 但没有找到任何包或在 Flutter 中安排后台任务的方法 就像在 Android 中一样WorkManager AlarmManager 我知道我可以使用以下方式访问这些课程MethodChannel 但我想要一些适用于
  • 如何将子 SKSpriteNode 放置在其父级内部

    我不太明白定位子节点的逻辑 假设我有一个矩形 如果我没有改变它的锚点 子节点默认会出现在中间 但例如如何将其放置在矩形的左上角呢 还是右下角 我试过 child zPosition 1 child position y rect size
  • Xcode 中的存档显示在“其他项目”下

    我正在尝试使用 存档 选项将应用程序提交到 iTunes Connect 为通用 iOS 设备构建 它通常显示在管理器中的 iOS 应用程序下 然而 现在它显示在 其他项目 下 但没有更整洁的版本和想法 我最后一次构建是在 10 月 28
  • 在 GWT 单元格表中添加超链接

    我正在尝试在单元格表中添加一个超链接 然后单击该链接我想调用一个方法 使用下面的代码 我在单元格表中正确获得了超链接 但我无法通过单击链接来调用方法 当我单击链接时 它会将我带到上一页 任何解决方案 Hyperlink link new H
  • Excel VBA - 将子菜单添加到自定义右键菜单

    看了很久了 第一次发海报 我有一个带有右键单击功能的表单 可以正常工作 我试图在主右键菜单中添加一个子菜单来分隔一些功能 命令 我需要 想要插入 选择案例 所在的部分 但是 它只显示顶部菜单 不知道从这里去哪里 任何帮助都是极好的 谢谢 附
  • Python读取DOT格式的文件并返回城市名称列表

    嘿大家好 问题是这样的 说实话 这是家庭作业问题 但我只是被困住了 而且已经永远了 我的问题是 由于城市在每行中都有不同的索引位置 我们如何逐行迭代并将城市名称返回到列表中 任何可以让我开始的帮助将不胜感激 我并不懒惰 我已经为此工作了几个
  • 如何从视频中提取方向信息?

    在网上浏览了大量文档后 iPhone 似乎总是以 480x360 的宽高比拍摄视频 并在视频轨道上应用变换矩阵 480x360 可能会改变 但对于给定设备来说始终相同 这是在 iOS 项目中修改 ffmpeg 源并访问矩阵的方法http w
  • python中pandas系列的地板还是天花板?

    我有一个熊猫系列series 如果我想获得元素级下限或上限 是否有内置方法或者我是否必须编写函数并使用 apply 我问是因为数据很大所以我很看重效率 此外 还没有针对 Pandas 包提出这个问题 您可以使用 NumPy 的内置方法来执行
  • App Engine Java API 页面大小

    为什么谷歌决定忽略pageSize参数以及为什么使用不同的页面大小时收集的项目的总体大小不同 这是一个例子 Appsactivity Activities List request service activities list setDr
  • 如何更改 UIView zPosition?

    我不明白如何更改视图的位置 我尝试这样做 但没有任何反应 void viewDidLoad super viewDidLoad UIView view UIView alloc initWithFrame CGRectMake 100 10
  • 如何使用 Clang 从 C++ 字符串生成 AST?

    我正在尝试使用 Clang 操作 C 源代码 但在发现 API 时遇到问题 我想获取一串 C 源代码并从中生成 AST 就像是 auto myAst clang parse auto x 1 1 有一个最小的工作示例吗 您可以尝试下一个代码
  • 为什么添加的子图层没有显示在屏幕截图中?

    我正在尝试找出 iPad 应用程序的某些 iOS 代码中的错误 在我们的一个视图中 我们添加了子图层以产生阴影并确保视图的底部具有圆角边缘 这是我们添加子层的代码 UIBezierPath maskPath UIBezierPath bez
  • 无效的路由名称,已在使用中:“admin_root”(ArgumentError)- ActiveAdmin 安装失败

    I ran rails g active admin install 并得到这个错误 Invalid route name already in use admin root ArgumentError You may have defin
  • 为什么java中所有对象都是动态创建的? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在一次采访中我被问到为什么java中的对象是动态创建的 我不明白这个问题 有人可以解释一下吗 此人可能指的是 Java 不像 C 那样知道堆
  • PHP $_SESSION 变量键中的保留字符

    我正在查看 PHP 会话文件的内部表示 我注意到会话密钥由管道字符分隔 在讨论我遇到的问题之前 让我先快速介绍一下会话文件的格式 至少 这是它在我的 Mac 上的格式化方式 10 9 4 PHP 5 4 24 会话文件格式 假设我有以下代码