我有一个扩展PdoSessionStorage的自定义类,但我不知道如何从会话中捕获属性以将它们保存为数据库中的独立字段。Symfony2:如何使用自定义PdoSessionStorage将会话属性另存为数据库上的自定义字段?
其他可能性是反序列化我的自定义PdoSessionStorage类的sessionWrite($ if,$ data)方法中的会话数据。但我不知道如何反序列化$ data字符串以获取我想要的数据。
我尝试这样做:
unserialize($data);
,这把我后续的错误:
Fatal error: Uncaught exception 'ErrorException' with message 'Notice: unserialize() [function.unserialize]: Error at offset 0 of 82 bytes in /myserver/myapp/src/app/myBundle/myCustomPdoSessionStorage.php line 220' in /myserver/myapp/vendor/symfony/src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php:65 Stack trace: #0 [internal function]: Symfony\Component\HttpKernel\Debug\ErrorHandler->handle(8, 'unserialize() [...', '/Applications/M...', 220, Array) #1 /myserver/myapp/src/app/myBundle/myCustomPdoSessionStorage.php(220): unserialize('_symfony2|a:3:{...') #2 [internal function]: app/myBundle/myCustomPdoSessionStorage->sessionWrite('72b823b39d316dd...', '_symfony2|a:3:{...') #3 {main} thrown in /myserver/myapp/vendor/symfony/src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php on line 65
谁能帮助我吗?
的var_dump($数据)''的输出添加到你的问题,以及如何储存之前序列化数据。 – hakre
感谢@hakre您的快速响应!我真的想知道Symfony会话类在哪里执行$ data的序列化,然后调用$ pdoSessionStorageObject-> sessionWrite('.. id_session ..','..data_serialized ..')。像这样:Symfony2-file-that-I-wanna-found.php ...'$ sessId = $ session-> getId(); $ data-as-string = $ session-> serialize(); //会话对象作为字符串$ pdoSessionStorageObject-> sessionWrite($ sessId,$ data-as-string);'我想改变我的自定义sessionWrite方法来获取多一个参数。并且从$ session添加一个自定义属性到这个方法的调用。 – 2ehr
如果添加var_dump,这可能会给它一些启示。如果会话包含秘密数据,请将其屏蔽。 – hakre