duanli0119 2011-11-26 19:58
浏览 44
已采纳

serialize()和$ _SESSION [重复]

This question already has an answer here:

Once the user is authenticated, I serialized the class object and stored it in a session. However, I cant seem to print its output even after using unserialize().

Creating the session variable:

if(!isset($_SESSION['myObj']) && empty($_SESSION['myObj'])) {
$myObj = new User($row['user_id'], $row['username'], $row['user_level']);
$_SESSION['username']= $myObj->usr_name;
$s_Obj = serialize($myObj);
$_SESSION['myObj'] = $s_Obj;

Accessing from a different page, no output:

$sObj = $_SESSION['Obj'];
$myObj = unserialize($s_Obj);
echo $myObj->usr_name;

This works however, so there's nothing wrong with my class. I am also using session_start() in both pages.

echo $_SESSION['username'];

Class user:

<?php 

class User{
    public $usr_id;
    public $usr_name;
    public $usr_level;
    public $last_access_login;

    public function __construct($id, $usr_name, $usr_level) {
        $this->usr_id = $id;
        $this->usr_name = $usr_name;
        $this->usr_level = $usr_level;
        $this->last_access_login = date("F d Y H:i:s.",time());
  }
}
?>

Edit:

This is my vardump

array
  'myObj' => 
    object(__PHP_Incomplete_Class)[1]
      public '__PHP_Incomplete_Class_Name' => string 'User' (length=4)
      public 'usr_id' => string '3' (length=1)
      public 'usr_name' => string 'student' (length=7)
      public 'usr_level' => string '3' (length=1)
      public 'last_access_login' => string 'November 26 2011 20:12:38.' (length=26)
  'url' => string '/researchportal/proposal' (length=24)
</div>
  • 写回答

2条回答 默认 最新

  • doumeng3080 2011-11-26 20:01
    关注

    Inital page:

    $s_Obj = serialize($myObj);
    $_SESSION['myObj'] = $s_Obj;
    

    should be

    $_SESSION['myObj'] = $myObj;
    

    Next page:

    $sObj = $_SESSION['Obj'];
    $myObj = unserialize($s_Obj);
    

    should be

    $myObj = $_SESSION['myObj'];
    

    In addition, try declaring your classes before your call to session_start().

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端