在我的项目中,我在核心文件中有这一行:
$LoggedIn = isset($_SESSION['User']) ? unserialize($_SESSION['User']) : false;
核心:http://pastebin.com/9HMP11bG
并且在登录方法下,它有相应的:
$_SESSION['User'] = serialize($User);
用户回复:http://pastebin.com/vNehc2Hm
用户:http://pastebin.com/4UXT79MU
当我尝试访问$ LoggedIn对象时,它会给出一个如下错误:
Fatal error: Uncaught Error: Cannot use object of type __PHP_Incomplete_Class as array in C:\xampp\htdocs\jalawebs\dev\webcofounder\web\controller\index\index.php:14 Stack trace: #0 C:\xampp\htdocs\jalawebs\dev\webcofounder\config\core.php(111): require() #1 C:\xampp\htdocs\jalawebs\dev\webcofounder\index.php(9): require('C:\\xampp\\htdocs...') #2 {main} thrown in C:\xampp\htdocs\jalawebs\dev\webcofounder\web\controller\index\index.php on line 14
答案 0 :(得分:0)
当您调用未在脚本本身中定义的未序列化对象的属性时会发生这种情况。
创建一个类似new User()
的类将调用自动加载器来加载unserialize()
没有的脚本。
您可以执行以下操作:
$o = unserialize($yourstring);
if(is_object($o) && class_exists(get_class($o))){ // invoke the autoloader
echo $o->LoggedIn;
}
或者直接将脚本包含在include_once()
或require_once()
。