PHP SESSION:SESSION变量在Unserialize()后自动重置

时间:2010-02-23 03:00:41

标签: php mysql oop session serialization

我正在测试构建互联网的代码,这是OOP的教程。我收到一条错误消息:

  

unserialize()期望参数1为字符串,第20行的includes / global.inc.php中给出的对象

这是serialize()的代码:

  

$ _ SESSION ['user'] = serialize(新用户(mysql_fetch_assoc($ result)));

这是unserialize()的代码:

  

$ _ SESSION ['user'] = serialize(新用户(mysql_fetch_assoc($ result)));

我使用Expert Debugger查看发生了什么,我发现在用户登录后,页面重定向到索引,会话变量仍然正确,但是在运行索引页面中的unserialize()之后,所有会话变量都被重置为某些数字,这是unserialize()行的代码:

  

if(isset($ _ SESSION [“logged_in”])):$ user = unserialize($ _ SESSION ['user']);

我无法弄清楚是什么原因引起的。您可以在此处下载该程序的完整代码: http://s3.amazonaws.com/buildinternet/live-tutorials/first-php-app/first-php-application.zip

2 个答案:

答案 0 :(得分:4)

我相信当您致电session_start()

时,PHP可能会自动取消序列化数据

它也会在执行结束时自动序列化,这意味着你不一定要自己动手。

答案 1 :(得分:0)

旧帖子,但如果您仍在寻找它,请尝试:

if(isset($_SESSION["logged_in"])) : $ObjUser = unserialize($_SESSION['user']);