我有一个PHP应用程序,我在从SESSION获取User对象时遇到了问题。
保存对象时,我有以下代码(其他一些文件)。
$_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。当我使用别人主持人(1和1)时,问题没有发生。
答案 0 :(得分:0)
当反序列化对象时可能会发生许多奇怪的事情,请参阅PHP手册页以获取更多信息。
http://php.net/manual/en/function.unserialize.php
此评论似乎相关: http://www.php.net/manual/en/function.unserialize.php#77826