我正在尝试使用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 序列化库。有什么建议吗?
如果你想把它从PHP传递给Python,你应该在$_SESSION
数组上调用serialize
。
例:
echo serialize($_SESSION);
然后,结果将由 PHP 序列化库解释。
session_encode
与serialize
不同。
在PHP上序列化变量,在Python中序列化数组。
此代码:
$data = array('userid' => 42);
echo json_encode($data);
将显示与phpserialize相同的结果。
但最好使用 json_encode/json_decode 在 php 应用程序和 python 应用程序之间传输数据。