【发布时间】:2011-01-29 04:40:22
【问题描述】:
我正在尝试在$_SESSION 中保存一个对象,但是如下:
<?php
$user = db->load( $username, $pass ) ;
$_SESSION[ 'user' ] = $user ;
# on subsequent page loads:
$user = $_SESSION[ 'user' ] ; #retrieve the user from session
很遗憾,这不起作用。
该脚本试图执行方法或访问不完整对象的属性。请确保您尝试操作的对象的类定义“用户”已加载_before_ unserialize() 被调用或提供 __autoload() 函数来加载类定义
除非你使用serialize():
<?php
$user = db->load( $username, $pass ) ;
$_SESSION[ 'user' ] = serialize( $user ) ;
# on subsequent page loads:
$user = unserialize( $_SESSION[ 'user' ] ) ; #retrieve the user from session
我假设需要序列化,因为会话信息已保存到磁盘。但是 PHP 不应该足够聪明地自己序列化东西吗?
并且使用 serialize/_unserialize_,现在可以可靠地工作吗?还是我的 PHP 类中需要 __serialize() 方法?
【问题讨论】:
-
你有没有想过使用 Zend.Session?
标签: php session serialization