【发布时间】:2019-07-31 22:12:58
【问题描述】:
我知道这里有一些类似的问题,但在我看来,它们都不是我的问题所在,或者理解它们需要比我拥有的更高级的知识。
我想做什么:
- 将 $_POST 值存储在数组中
- 序列化该数组
- 将数组存储在包含三个相似数组的二维 $_SESSION 中
- 直接在其他页面上从 $_SESSION 数组中检索数据
我的尝试如下所述
if ($_SERVER["REQUEST_METHOD"] === 'POST') {
$name = $_POST['name'];
$surname = $_POST['surname'];
$age = $_POST['age'];
$assocArray = ['name' => $_POST['name'], 'surname' => $surname, 'age' => $age];
$assocArraySerialized = serialize($assocArray);
$_SESSION += ['etap1' => $assocArraySerialized];
echo unserialize($_SESSION['etap1']['name']);
}
当我尝试回显收到的项目时:
- 警告:非法字符串偏移 'name'
- unserialize(): 特定本地主机路径中 1 个字节的偏移量 0 处出错...
我检查了 $_POST 是否有效,当我回显 $_POST['name'] 时,我可以看到所需的值。当我对 $_SESSION 进行 var_dump 时,我可以看到它已正确序列化。
如何从 $_SESSION 获得相同的恢复数据?
【问题讨论】:
-
你在 $_SESSION["etap1"] 中存储了一个字符串,但是在 unserialize() 中你尝试访问一个不是它的数组。
-
感谢 Natha 的建议!
标签: php serialization multidimensional-array