我尝试使用Python phpserialize库从PHP读取序列化会话数据。但是,我发现我的PHP设置正在以不同于phpserialize(以及几乎所有其他Web文档)所期望的格式保存会话数据。例如:
$_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序列化库作为结果。有什么建议吗?
答案 0 :(得分:2)
如果你想将这个从PHP传递给Python,你应该在serialize
数组上调用$_SESSION
。
示例:
echo serialize($_SESSION);
然后,PHP序列化库将解释结果。
session_encode
与serialize
不同。
答案 1 :(得分:1)
在PHP上序列化变量,在Python中序列化数组。
此代码:
$data = array('userid' => 42);
echo json_encode($data);
会显示与phpserialize相同的结果。
但是最好使用json_encode / json_decode在php应用程序之间传输数据。 python应用程序。