gpt4 book ai didi

php - 如何在自定义处理程序中反序列化 session 数据

转载 作者:搜寻专家 更新时间:2023-10-31 21:13:33 24 4
gpt4 key购买 nike

我使用sessionHandlerInterface 将 session 保存在数据库中。一切正常。但我想从数据库中获取所有序列化数据,如

SELECT data FROM session;

并希望他们在我输出这些数据时对数据进行解码。我已经尝试使用 session_decode() 来操纵 $_SESSION 数组本身,这会导致问题。我只想获取序列化数据并返回解码数据。

这是保存在数据库中 data 列中的示例 session 数据

fb_422782977793963_code|s:216:"AQAVKa4Q8sOuioW75V9Ls-cDUEizgJDX5ZkRVLArDlroFvvhasdwKvbyzKEwiMVrN7nc5ghMaw0W67jQu5kt_sc_Edm9sABzB5PakdkUpXr52AViTOltPfPBQHM9T-JoGOQ4gasdbssC8Xt93NKFvdV7XRZ7ZYGZqIsu5SFpfFBHK_hNGDdRVbnbe_xUZVP9WI4h0jDy";fb_422782977793963_access_token|s:111:"AAAGAhasdaAKL7hAvXRv6FHUj1Tk24r7j4NqDwWWUzmXDZA2Igsb1pHjuP4jbBRNKfeYzutm0MFmgxuKPg1n0NEbvZAXM3bwoNZBiZCgZDZD";fb_422782977793963_user_id|s:15:"100004835469598";picture|s:61:"http://m-static.ak.fbcdn.net/rsrc.php/v2/yo/r/sdIqmHJn-SK.gif";

它可以很好地处理正常的 session 处理,它可以正常读取 session 并将其写入数据库。

我想获取事件 session 的所有数据。如果我使用来自 session 的 SELECT 数据。它返回上面的 session 数据(编码)我想得到它的解码数据。

最佳答案

PHP serializeunserialize 函数不能用于序列化和反序列化 session 数据。即使(默认情况下 - 并且仅在默认情况下)序列化看起来相似,这两个关心单个变量内容的函数也有重要区别:

Those [sessions] are a list of serialized values with their variable name.

(来自: Serialized README)

因此您需要创建自己的 session_unserialize 函数,该函数能够解码从您的数据库返回的字符串(例如通过 session_decode )。注意这需要里面的所有东西,例如如果 session 包含序列化对象,则需要加载类定义。

示例性的 session_unserialize 函数看起来像(采用自: a session related answer):

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

关于php - 如何在自定义处理程序中反序列化 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13875961/

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