使用php的SESSION直接保存对象序列化,但反序列化时出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用php的SESSION直接保存对象序列化,但反序列化时出错相关的知识,希望对你有一定的参考价值。
person.php ?php<br class Person var $age; function setAge($set_age) $this->age = $set_age; function outPut() echo $this->age; ?> sess_serialize.php ?php<br session_start(); include 'person.php'; $person = new Person(); $person->setAge(21); $_SESSION['person'] = $person; echo ' click here to show age '; echo " "; $person->outPut(); echo " "; var_dump($person); echo " "; echo var_dump($_SESSION['person']); ?> output.php ?php<br ini_set('unserialize_callback_func', 'mycallback'); function mycallback($className) include $className . '.php'; include 'person.php'; session_start(); $person = $_session['person']; $person->outPut(); ?> localhost/sess_test/sess_serialize.php输出结果如下: click here to show age 21 object(Person)#2 (1) ["age"]=> int(21) object(Person)#2 (1) ["age"]=> int(21) 点击“click here to show age”后提示错误: Fatal error: Call to a member function outPut() on a non-object in D:\AppServ\www\sess_test\output.php on line 9
参考技术A 在output.php中$person没有实例化成Person对象,所以无法调用Person对象的outPut()方法。 参考技术B 你好!session是可以存储数组和对象的,但是不可用存储souce
只能这样做。
mysql_select_db("test",$con);
$result=mysql_query("select
*
from
user
");
$_SESSION["result"]=$result;
$arr=
array();
while($row
=
mysql_fetch_row($result))
$arr[]
=$row;
$_SESSION["rows"]=$arr;
以下来自php5手册
Warning
有些类型的数据不能被序列化因此也就不能保存在会话中。包括
resource
变量或者有循环引用的对象(即某对象将一个指向自己的引用传递给另一个对象)。
打字不易,采纳哦!
以上是关于使用php的SESSION直接保存对象序列化,但反序列化时出错的主要内容,如果未能解决你的问题,请参考以下文章
Memcached的安装配置及将PHP的session保存在Memcached中
Memcached的安装配置及将PHP的session保存在Memcached中