我正在测试构建互联网的代码,这是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
答案 0 :(得分:4)
我相信当您致电session_start()
它也会在执行结束时自动序列化,这意味着你不一定要自己动手。
答案 1 :(得分:0)
旧帖子,但如果您仍在寻找它,请尝试:
if(isset($_SESSION["logged_in"])) : $ObjUser = unserialize($_SESSION['user']);