正在学习php,现在遇到一个麻烦的问题,在php中使用session存储对象没有问题,但是在另外一个页面中取不出session来,使用print_r发现显示的是__PHP_Incomplete_Class,表明那个对象值是存在的,使用序列化的方式如下:
$_SESSION['users'] = serialize($user);//赋值时把对象序列化一下 在输出页面:$login = unserialize($_SESSION['users']);//取值的时候再反序列化一下 
重新运行,一样的效果,不能输出,代码如下:
输入页面:
<?php 
class User
{
    var $UserName;
    var $Name;
    var $Pwd;
    
}
$user = new User();
$user->UserName="abc";
$user->Name="zc";
$user->Pwd="123";
session_start();$_SESSION["users"]=$user;
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题页</title>
</head>
<body>
<form name="form1" method="post" action="display.php" id="form1">
<input type="submit" value="确定"></input>
<div></div>
</form>
</body>
</html>
输出页面:
<?php
session_start();
$login =$_SESSION["users"];
print_r($_SESSION["users"]);//此行有数据显示:“__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => User [UserName] => abc [Name] => zc [Pwd] => 123 )”print $login->UserName;//此行不输出任何东西
?>
要求能输出 $login->UserName的属性值,如何做,请大人说明谢谢!

解决方案 »

  1.   

    在 session_start(); 前面要有类定义比如,你可将类放在单独的文件里
    user.php
    <?php
    class User
    {
      var $UserName;
      var $Name;
      var $Pwd; 
    }
    在 a.php 中
    <?php
    include 'user.php';
    $user = new User();
    $user->UserName="abc";
    $user->Name="zc";
    $user->Pwd="123";
    session_start();$_SESSION["users"]=$user;
    在 b.php 中<?php
    include 'user.php';
    session_start();
    $login =$_SESSION["users"];print $login->UserName;//
      

  2.   


    //看看这个
    <?php
    //=========================================================================================================================
    function p($var){echo '<pre>';if((is_array($var)||is_object($var))&&count($var)){print_r($var);}else{var_dump($var);}exit;}
    //=========================================================================================================================class dbconnect {
        protected $link;
        private $server, $username, $password, $db;
        
        public function __construct($server, $username, $password, $db)    {
            $this->server = $server;
            $this->username = $username;
            $this->password = $password;
            $this->db = $db;
            $this->connect();
        }
        
        private function connect(){
            $this->link = mysql_connect($this->server, $this->username, $this->password);
            mysql_select_db($this->db, $this->link);
        }
        
        public function __sleep(){
            return array('server', 'username', 'password', 'db'); //返回保存的属性
        }
        
        public function __wakeup(){
            $this->connect();
        }
    }$db = new dbconnect('localhost', 'user', 'pass', 'dbname');
    $srlz_db= serialize($db);
    $unsrlz_db= unserialize($srlz_db);
    p($unsrlz_db);?>
      

  3.   

    写好几年NET了,习惯了,谢谢xuzuning