在 PHP 会话中存储对象
PHP文档说:“你不能在会话变量中使用引用,因为没有可行的方法来恢复对另一个变量的引用。
这是否意味着我不能拥有这样的东西:
session_start();
$user = new User;
$user->name = 'blah';
$_SESSION['user'] = $user;
我尝试在会话中存储一个简单的字符串和一个User对象,该字符串始终在页面到页面之间或页面刷新后保留。但是,User 变量在 $_SESSION 中丢失(变为空)。
任何想法?
编辑:我已经确认session_id在页面刷新之前和之后在所有这些页面/子页面中都是相同的。
编辑:奇怪的是,在我尝试了下面的序列化和非序列化方法之后,会话中的序列化用户对象(或字符串)仍然消失!
编辑:最后我弄清楚了错误是什么,看起来$_SESSION['user']被某种神秘的力量覆盖了,如果我使用“user”以外的任何变量,那么一切都很好。PHP(至少5.3,这是我正在使用的版本)当你把对象放在$_SESSION时,会自动序列化和取消序列化。
session_start();
$user = new User();
$user->name = 'blah'
$_SESSION['myuser'] = $user;