一个对象session以后,为什么不能引用

foundpass 2004-09-25 05:44:46
如题:打开1.php,然后点击连接到2.php后,却没有显示,附代码如下
//1.php
<?
session_start();
class person
{
var $age;
function shuchu($str)
{
$this->age=$str;
echo $this->age;
}
}
$person=new person();
$_SESSION['person']=$person;
?>
<a href=2.php>kkkkkkkkkkkkkkkkkkkk</a>

//2.php
<?
session_start();
echo $person->shuchu(25);
?>
...全文
140 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyzoem2 2004-09-26
  • 打赏
  • 举报
回复
同意countstars(深空) ,要串行化
countstars 2004-09-26
  • 打赏
  • 举报
回复
上面写错了一个变量:

// person.php
<?php
class person
{
var $age;
function shuchu($str)
{
$this->age=$str;
echo $this->age;
}
}
?>

//1.php
<?
session_start();
require_once "person.php";
$person = new person();
$_SESSION['person'] = serialize($person);
?>

<a href=2.php>kkkkkkkkkkkkkkkkkkkk</a>

//2.php
<?
ini_set('unserialize_callback_func','mycallback'); // 设置您的回调函数

function mycallback($classname) {
include_once $classname . ".php";
}
session_start();
$person = unserialize($_SESSION["person"]);

echo $person->shuchu(25);

?>
countstars 2004-09-26
  • 打赏
  • 举报
回复
串行化
serialize

// person.php
<?php
class person
{
var $age;
function shuchu($str)
{
$this->age=$str;
echo $this->age;
}
}
?>

//1.php
<?
session_start();
require_once "person.php";
$person = new person();
$_SESSION['person'] = serialize($person);
?>

<a href=2.php>kkkkkkkkkkkkkkkkkkkk</a>

//2.php
<?
ini_set('unserialize_callback_func','mycallback'); // 设置您的回调函数

function mycallback($classname) {
include_once $classname . ".php";
}
session_start();
$person = unserialize($_SESSION["abc"]);

echo $person->shuchu(25);

?>

unserialize_callback_func 指令: 如果在解序列化的时候需要实例化一个未定义类,则可以设置回调函数以供调用(以免得到的是不完整的 object “__PHP_Incomplete_Class”)。可通过 php.ini、ini_set() 或 .htaccess 定义‘unserialize_callback_func’。每次实例化一个未定义类时它都会被调用。若要禁止这个特性,只需置空此设定。还需要注意的是 unserialize_callback_func 指令是从 PHP 4.2.0 开始提供使用的。

注: callback 参数是在 PHP 4.2.0 中添加的

参看这两个函数
lzkd 2004-09-26
  • 打赏
  • 举报
回复
因为2.php文件中缺少person类的定义


----------

那,楼主给2.php定义一个不就可以了吗?
ice_berg16 2004-09-25
  • 打赏
  • 举报
回复
将类单独写在一个文件里,然后在2.php里包含它
ashchen 2004-09-25
  • 打赏
  • 举报
回复
session不能保存object。
因为php的执行机制,每次用类 php文件必须要有类的声名,实例等全过程,好像不能保存和传递,所以php的类概念有些不伦不类。
unixdotnet 2004-09-25
  • 打赏
  • 举报
回复
php not java
unixdotnet 2004-09-25
  • 打赏
  • 举报
回复
因为2.php文件中缺少person类的定义
砖头恒久远 2004-09-25
  • 打赏
  • 举报
回复
include不行么?

很奇怪的方法。。。
foundpass 2004-09-25
  • 打赏
  • 举报
回复
楼上的,你这是单个的变量,我想要的不是用SESSION传递单个的变量,我是想传递对象的啊
砖头恒久远 2004-09-25
  • 打赏
  • 举报
回复
session是名词。不是动词
<?
class person
{
var $age;
function shuchu($str)
{
$this->age=$str;
echo $this->age;
}
}
session_start();
$person=new person();
$i=$person->shuchu(25);
$_SESSION['person']=$i;
?>
<a href=2.php>kkkkkkkkkkkkkkkkkkkk</a>

//2.php
<?
session_start();
echo $_SESSION['person'];
?>
foundpass 2004-09-25
  • 打赏
  • 举报
回复
我再把代码贴一下,我应该怎么引用SESSION以后的对象?
//1.php
<?
class person
{
var $age;
function shuchu($str)
{
$this->age=$str;
echo $this->age;
}
}
session_start();
$person=new person();
$_SESSION['person']=$person;
?>
<a href=2.php>kkkkkkkkkkkkkkkkkkkk</a>

//2.php
<?
session_start();
echo $person->shuchu(25);
?>
uuq 2004-09-25
  • 打赏
  • 举报
回复
高,session存在文件里,并非内存

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧