sn0*_*0ep 12 php session class
Class User{
public $id;
public $username;
public $password;
public $email;
public $steam;
public $donator;
public $active;
public function __construct($username, $email, $password, $id, $active, $donator, $steam){
$this->id = $id;
$this->username = $username;
$this->password = $password;
$this->email = $email;
$this->steam = $steam;
$this->donator = $donator;
$this->active = $active;
}}
Run Code Online (Sandbox Code Playgroud)
是我的班级(简化)
以下是我的代码:
$_SESSION['loggedIn'] = $user;
Run Code Online (Sandbox Code Playgroud)
$ user是User的类实例
现在这就是print_r($ _ SESSION ['loggedIn'])向我展示的内容:
__PHP_Incomplete_Class Object
(
[__PHP_Incomplete_Class_Name] => User
[id] => 22
[username] => xxxx
[password] => xxxx
[email] => xxxx
[steam] => 1234567
[donator] => 0
[active] => 1
)
Run Code Online (Sandbox Code Playgroud)
其中xxxx是正确的值.
但是当我尝试从我的会话中检索数据时.像这样:"$ _SESSION ['loggedIn'] - >用户名"它向我返回一个空值.
Kev*_*ans 13
您必须首先将对象序列化为字符串:
$_SESSION['user'] = serialize($user);
和:
$user = unserialize($_SESSION['user']);
只需确保在反序列化对象之前首先定义类.
out*_*tis 13
您可以存储对象$_SESSION.PHP将为您序列化它们.只需确保在调用之前定义了类session_start,或者可以自动加载它.存储在会话中的值具有类型"__PHP_Incomplete_Class_Name"的原因是,在会话加载期间反序列化对象时未定义User类(如对象序列化的PHP手册页中所述).
资源无法序列化.如果您存储了使用资源的对象,请实现__sleep并__wakeup自定义序列化.PHP的序列化应该能够处理所有其他类型,即使它们包含循环引用.