PHP 会话中的数组未完成

Posted

技术标签:

【中文标题】PHP 会话中的数组未完成【英文标题】:Array not complete in PHP session 【发布时间】:2015-06-19 17:31:54 【问题描述】:

这几天我遇到了一个令人困惑的问题。我在会话数组中存储了一个包含 10 - 50 个元素的数组。

$_SESSION['my_array'] = erg_array;

然后我将表单提交到另一个页面。在新页面上,我读取了数组,数组中只剩下几个元素。有时数组中有 2 个或 3 个或 4 个元素。

如果我查看服务器上的会话文件,文件中的数组不完整。在我的页面末尾,我检查了数组

print_r($_SESSION['my_array']);

将打印 50 个元素。那是最后一行代码。在我的会话服务器文件中只存储了 3 个元素。

有人知道去哪里看吗?


编辑:

如果我像这样序列化我的数组

$_SESSION['my_array_string'] = base64_encode(serialize($_SESSION['my_array'));

在另一个脚本上

$_SESSION['my_array'] = unserialize(base64_decode($_SESSION['my_array_string']));

数组是否完整?

【问题讨论】:

我不知道,这怎么可能。但如果你告诉我你想要达到的目标,我可以告诉你替代方案。 我想在会话中存储文章数据并将其传输到其他脚本。自过去 3 年以来一直运作良好。现在我遇到了会话问题。我知道一些替代方法,例如存储在文件或数据库中……但我想知道问题是什么? 您先生有一个非常有趣(烦人)的问题。您能否为我们提供一些代码示例以便我们进行复制?还请告诉我们您的托管设置? 我使用 1und1 的托管服务器。使用 php 5.2.17 和 Linux 您的阵列上是否有任何来自自定义类的对象? 【参考方案1】:

我建议您在序列化之前将 $_SESSION['my_array'] 数组存储在变量中。像这样……

$array[] = $_SESSION['my_array']; 这里数组存储在数组变量中,现在将该数组序列化到新会话。

$_SESSION['my_array_string'] = base64_encode(serialize($array[]));

这可能会解决您的问题。

【讨论】:

以上是关于PHP 会话中的数组未完成的主要内容,如果未能解决你的问题,请参考以下文章

从 iOS 应用程序调用脚本时未维护 PHP 会话数组

PHP 会话未在 Amazon EC2 上持续存在

Azure B2C 联合注销未完成(身份令牌未传递到第三方结束会话端点)

php中的用户注册:如何删除未完成激活的用户[关闭]

JavaWeb期末复习(未完成)

PhP 5.4 中的 PhP 上传进度不起作用。未设置会话变量