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 会话中的数组未完成的主要内容,如果未能解决你的问题,请参考以下文章