我使用DynamoDB实现了会话处理程序。它工作正常,除了从服务器返回响应并且我在其上调用json_decode
时,嵌套的php序列化会话字符串被破坏。我假设在JSON对象中存储序列化会话是不兼容的?这是一个逃避问题吗?
问题:
serialize()
?这可能会解决问题。这就是原始文件来自数据库时的样子(注意:它真的很长,所以我自己完成了结束)
_sf2_attributes|a:4:{s:34:"_security.secured_area.target_path";s:36:"http://my.domain";s:10:"some_id";s:13:"abc123";s:8:"userData";O:27:"Some\Symfony\Bundle":49:{s:8:"�*�email";s:27:"
这是在该字符串所在的JSON对象上调用json_decode
后的样子:
_sf2_attributes|a:4:{s:34:"_security.secured_area.target_path";s:36:"http://my.domain";s:10:"some_id";s:13:"abc123";s:8:"userData";O:27:"Some\Symfony\Bundle":49:{s:8:"
似乎是截断了星号在原始位置的位置。
答案 0 :(得分:1)
json和序列化在PHP中运行良好
class ClassA
{
public $publicMember;
private $privateMember;
protected $protected;
}
$object = new ClassA();
var_dump(unserialize(json_decode(json_encode(serialize($object)))));
但是这个问题可能来自DynamoDB: Bug in DynamoDB / DynamoDB Session Handler for PHP (handling of NULL BYTES)。它似乎已关闭,但是......你可以在json_encode
之前添加base64_encode的额外换行var_dump(unserialize(base64_decode(json_decode(json_encode(base64_encode(serialize($object)))))));