1

我正在尝试使用 Python phpserialize 库从 PHP 读取序列化会话数据。但是,我发现我的 PHP 设置以不同于 phpserialize(以及几乎所有其他网络文档)所期望的格式保存会话数据。例如:

$_SESSION["userid"] = 42;
echo session_encode();

打印出来

userid|i:42;

而 phpserialize 将其序列化为:

phpserialize.serialize({'userid':42})
'a:1:{s:6:"userid";i:42;}'

我通过 phpinfo() 检查了 session.serialize_handler 并将其设置为“php”(其他选项是 php_binary 和 wddx)。结果,我无法在 python 中使用任何标准的 php 序列化库。有什么建议么?

4

2 回答 2

3

如果你想将它从 PHP 传递给 Python,serialize你应该调用数组。$_SESSION

例子:

echo serialize($_SESSION);

然后结果将由 PHP 序列化库解释。

session_encode不一样serialize

于 2012-08-13T16:38:53.350 回答
1

在 PHP 中序列化变量,在 Python 中序列化数组。

这段代码:

$data = array('userid' => 42);
echo json_encode($data);

将向您显示与 phpserialize 相同的结果。

但最好使用 json_encode/json_decode 在 php 应用程序和 python 应用程序之间传输数据。

于 2012-08-13T14:58:44.417 回答