0

我有一个 PHP 应用程序,但无法从 SESSION 获取用户对象。

保存对象时,我有以下代码(其他文件)。

$_SESSION['user'] = serialize($user);

当我尝试加载一个名为timeline.php 的文件时,问题就开始了。我第一次加载页面时(在我登录并设置了 SESSION['user] 之后)页面工作正常。当我刷新页面时,我收到错误 500。

错误日志显示:

在第 10 行的timeline.php 中调用非对象的成员函数get()。

第 2-10 行的代码是这样的:

include_once('isUserLoggedIn.php');
require_once('classes/User.php');

session_start();

$user = unserialize($_SESSION['user']);

require_once('classes/Database.php');
$tweets = Database::getTimeline($user->get('user_id'));

任何人都可以为此提供任何理由吗?

更新 (1)

在timeline.php 中,我将var_dump($user) 添加到第8 行。第一次加载页面时,它给了我正确的值。

我第二次加载页面时它给了我 bool(false)。

更新 (2)

问题似乎出在主机上(可能是那里的 php.ini 文件中的设置)。我使用的公司是 Fatcow。当我使用别人的主机(1and1)时,问题没有发生。

4

1 回答 1

0

反序列化对象时可能会发生很多奇怪的事情,请参阅 PHP 手册页以获取更多信息。

http://php.net/manual/en/function.unserialize.php

此评论似乎相关: http ://www.php.net/manual/en/function.unserialize.php#77826

于 2012-11-04T19:12:59.143 回答