我正在开发并使用PHP Version 5.3.3-1ubuntu9.1版本在本地计算机上进行所有测试。主机是PHP Version 5.2.15。
所有的seriliaze论点都是相同的。
问题是当我尝试在我的测试本地计算机上登录用户时,我执行以下操作:
$user->getByUserId($results['id'], $db);
$_SESSION['user'] = serialize($user);
检索并序列化用户的我只是在检测到会话存在时将其加载回来:
$user->LoadFromObject(unserialize($_SESSION['user']));
这在我的测试机器上完美运行。刚刚转移了主机上的文件,看看我是否可以获得测试版,但我继续获取:
警告:unserialize()需要 参数1为字符串,给定对象 在/home/gamerent/public_html/beta/includes/header.php中 第19行
我注意到如果我在两个系统中回显$_SESSION['user']
,测试将确实显示序列化的一个,但主要的只会显示对象并且不会序列化$user
。 / p>
更新:
经过一些测试后确定..... 我已经看到,如果我在初始化用户之前转储会话
var_dump($_SESSION['user']);
$user = new User();
var_dump($_SESSION['user']);
它将正确显示序列化的会话。 之后,它将显示会话的字符串
我的用户不会使用默认值执行任何操作init
function User() {
$this->userId = 0;
$this->firstname = "Guest";
$this->password = "";
include_once('includes/generalUtils.php');
$this->generalUtils = new generalUtils();
include_once('includes/utils.php');
$this->utils = new utils();
}