我是PHP
中的新用户,我正在尝试保存$_SESSION
中的对象。我实际上已经阅读了this帖子,但我需要存储一些内容。
我使用serialize($myObject)
将其放入$_SESSION
但是当我使用unserialize()
时,我收到以下消息:警告:unserialize() expects parameter 1 to be string, object given in...
好奇的是我的本地机器与PHP 5.4它的工作原理。在安装了PHP 5.2的主机上,它不起作用。我调用start_session()
并在调用unserialize之前实例化new MyObject()
....
然而ißm有点困惑。在一些帖子中我读到PHP自己序列化和反序列化对象,所以我不需要调用它。其他帖子说我必须打电话。
我该如何解决这个问题?
编辑: 我仍然对PHP 5.2和5.4的不同行为感到困惑。以下代码打印出不同的结果:
$inner = '';
if (isset($_GET['inner'])){
var_dump(1);
$inner = $_GET['inner'];
} else if (isset($_GET['lang']) === true && isset($_SESSION['inner'])){
$inner = $_SESSION['inner'];
var_dump(2);
} else {
unset($_SESSION['inner']);
var_dump(3);
}
var_dump($inner);
if ($inner == 'editpwd'){
$_SESSION['inner'] = 'editpwd';
} else if ($inner == 'browseparks'){
$_SESSION['inner'] = 'browseparks';
} else if ($inner == 'browsetricks'){
$_SESSION['inner'] = 'browsetricks';
}
通过执行它,在两种情况下执行相同的if-branch,但'inner'的值不同。