我正在测试来自 build internet 的代码,这是一个 OOP 教程。我收到一条错误消息:
unserialize() expects parameter 1 to be string, object given in includes/global.inc.php on line 20
这是serialize()的代码:
$_SESSION['user'] = serialize(new User(mysql_fetch_assoc($result)));
下面是unserialize()的代码:
$_SESSION['user'] = serialize(new User(mysql_fetch_assoc($result)));
我用Expert Debugger看看是怎么回事,我发现用户登录后,页面重定向到index,session变量还是正确的,但是在index页面运行unserialize()后,所有session变量都被重置为某个值数字,这里是 unserialize() 行的代码:
if(isset($_SESSION["logged_in"])) : $user = unserialize($_SESSION['user']);
我不知道是什么原因造成的。您可以在此处下载程序的全部代码: http://s3.amazonaws.com/buildinternet/live-tutorials/first-php-app/first-php-application.zip
最佳答案
我相信当您调用 session_start()
它也会在执行结束时自动序列化,这意味着您不必自己做。
关于PHP session : SESSION Variables Automatically Reset after Unserialize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315849/