可以print_r $ _SESSION对象,但无法访问它?

时间:2012-01-18 10:17:35

标签: php session

首先,一些背景信息。我正在开发一个多站点项目,3个城市都有自己安装的自定义CMS类型的东西。客户端不希望支付多个SSL证书,尽管我的建议甚至不会查看通配符SSL。我的工作是创建一个位于domain.com/paypment.php上的统一支付网关,这些网站本身位于子域,例如cityx.domain.com。

现在,在原始付款页面上,代码访问由CMS创建的名为$ _SESSION ['member_obj']的对象,并且代码中的某个位置使用以下内容检测用户的帐户级别:

if ($_SESSION['member_obj']->data['account_level']==1)

所以,这一切都很好,花花公子没有任何问题,但只要我在我的脚本上使用相同的对象就会中断。我想指出我的代码位于根域,并且子代码上的工作代码使得$ _SESSION变量可用于所有子域:

ini_set('session.cookie_domain', '.domain.com');

现在,奇怪的部分,对象存在,但是当我尝试使用 - > data ['account_level']方法时,它就死了。我知道对象存在,因为我可以print_r对象,我得到以下内容:

__PHP_Incomplete_Class Object
(
    [__PHP_Incomplete_Class_Name] => Member
    [table] => members
    [data] => Array
    (
        [id] => 1689
        [title] => mr
        [firstname] => Testy
        [surname] => McTesters
        [age_range] => 18-24
        [gender] => male
        [email] => xxxxxx
        [username] => xxxxxx
        [password] => xxxxxx
        [account_level] => 1
        [joined] => 1326290317
        [password_reset] => 
        [password_reset_date] => 01/01/1970
        [last_active] => 1326881531
        [status] => active
        [contact] => 0
        [third_party] => 0
        [notifications] => 0
        [terms] => 1
        [dummy] => 0
        [override_account] => 0
        [premium_request] => 1
        [password_reset_date_original] => 1970-01-01
    )

然后加载其他东西。

那么,是否有人能够向我解释一个物体如何存在,但不能被访问?

2 个答案:

答案 0 :(得分:3)

可能 - __PHP_Incomplete_Class - 是因为你忘了include封装这些数据的类的类定义吗?

答案 1 :(得分:1)

您必须在开始会话之前加载课程Member

检查session.auto_start中的off是否设为php.ini