PHP存储会话:似乎无法序列化会话变量

Abs*_*Abs 2 php variables session serialization

我正在使用seralize和unseralize来设置和获取我的数据库中的会话变量.

用户在会话中并且每次单击保存.我这样做:

$array = serialize($_SESSION);
//and save to DB field
Run Code Online (Sandbox Code Playgroud)

当用户加载会话时,我也加载变量以继续该会话,如下所示:

//get row from DB
$_SESSION = unserialize($row['session_variables']);
Run Code Online (Sandbox Code Playgroud)
  1. 这对我不起作用.它首先不会取消分离,因为当我执行以下操作时返回类似的内容print_r($_SESSION):

    Array (
        [user_id] => test2
        [date_created] =>
        [date_updated] =>
        [session_variables] => a:9:{s:7:"user_id";s:5:"test2";s:12:"date_created";N;s:12:"date_updated";N;s:17:"session_variables";s:149:"a:6:{s:7:"user_id";s:5:"test2";s:4:"here";s:2:"12";s:5:"here2";s:6:"112432";s:5:"here3";s:6:"132432";s:5:"here4";s:4:"1qw2";s:5:"here5";s:5:"1wqe2";}";s:4:"here";s:2:"12";s:5:"here2";s:6:"112432";s:5:"here3";s:6:"132432";s:5:"here4";s:4:"1qw2";s:5:"here5";s:5:"1wqe2";}
        [here] => 12
        [here2] => 112432
        [here3] => 132432
        [here4] => 1qw2
        [here5] => 1wqe2
    )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这些变量的session_id在不同的页面中使用在哪里?我写过了吗?

谢谢大家的帮助

编辑

session_id是否保存在全局$ _SESSION中?我猜不是.如果我取消设置$ _SESSION,这意味着会话不会只是变量,对吗?有人验证吗?

Joe*_*lls 7

试试这个.

$array = base64_encode(serialize($_SESSION)); // going to the database
$_SESSION = unserialize(base64_decode($row['session_vars'])); // coming from the database
Run Code Online (Sandbox Code Playgroud)

通常情况下,MySQL不能很好地处理序列化数据,除非你对它进行base64_encode.看看是否有帮助.