gpt4 book ai didi

php - 带有自定义 PdoSessionStorage 的 Symfony2 : How to save a session attribute as a custom field on DB,?

转载 作者:可可西里 更新时间:2023-10-31 23:22:51 24 4
gpt4 key购买 nike

我有一个扩展 PdoSessionStorage 的自定义类,但我不知道如何从 session 中捕获属性以将它们保存为数据库中的独立字段。

其他可能性是在我的自定义 PdoSessionStorage 类的 sessionWrite($if, $data) 方法中反序列化 session 数据。但我不知道如何反序列化 $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

谁能帮帮我?

最佳答案

您在这里使用了错误的功能。 unserialize 用于序列化值,但不适用于 session 。即使这两者彼此接近,它们也是不同的。

您可能正在寻找 session_decode代替功能。注意它反序列化为 $_SESSION 超全局,因此您可能想要包装它:

function unserialize_session($data) {
$hasBuffer = isset($_SESSION);
$hasBuffer && $buffer = $_SESSION;
session_decode($data);
$session = $_SESSION;
$hasBuffer ? $_SESSION = $buffer : unset($_SESSION);
return $session;
}

对应的是session_encode其工作方式类似。

另请参阅:How to unserialize session data in a custom handler

关于php - 带有自定义 PdoSessionStorage 的 Symfony2 : How to save a session attribute as a custom field on DB,?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com