在会话中存储PHP对象?

tom*_*ato 2 php forms oop session

我有一个多页面表单,我试图在我的网站上实现这样的工作:

1输入客户详细信息 - $ _POST - > 2确认客户详细信息 - $ _ SESSION - > 3从客户详细信息生成PDF

正如你在我的第二页上看到的那样,我从$ _POST获得了我的表单中的值.在同一页面上,我从我的类customer创建一个名为"customer"的对象,该对象存储从我的第一页发布的所有值.

然后我设置一个名为"customer"的$ _SESSION变量并将其分配给我的对象.

session_start();  

        //includes html header part of page
        include("includes/page/header.php");



        //customer class 
        include("classes.php");


        $customer = new customer();


        $_SESSION['customer'] = $customer;
Run Code Online (Sandbox Code Playgroud)

现在,在我网站的最后一页上,我有以下代码:

    session_start();

//assign customer to equal object stored in session
$customer = $_SESSION['customer'];


//to test if successfull , nothing is displayed!
echo $customer->first_name;


return 0;
Run Code Online (Sandbox Code Playgroud)

我的页面上没有显示任何测试,所以我的会话没有按照我的想法做.

供参考:

  • 我的班级客户很好,工作正常,正确存储所有价值!
  • 我的帖子阵列工作正常

最后一页上的会话var_dump.

object(__PHP_Incomplete_Class)#1 (15) { ["__PHP_Incomplete_Class_Name"]=> string(8) "customer" ["first_name"]=> string(5) "Iain" ["second_name"]=> string(6) "Taylor" ["company_name"]=> string(10) "Wired Ltd." ["address_1"]=> string(15) "14 Joseph St" ["address_2"]=> string(8) "West End" ["city"]=> string(7) "Glasgow" ["postcode"]=> string(7) "G45 NP4" ["county"]=> string(29) "Scotland" ["country"]=> string(14) "United Kingdom" ["email"]=> string(31) "somebody@somebody.com" ["phone"]=> NULL ["cid"]=> NULL ["reg_date"]=> NULL ["tel"]=> string(11) "01413395678" } 
Run Code Online (Sandbox Code Playgroud)

任何想法如何让这个工作?

谢谢

圣诞节快乐!

Tim*_*mur 5

您需要include("classes.php");在最后一页上执行此操作session_start(),因为在反序列化会话变量时,PHP会尝试实例化您在会话数据中放入的同一个类的对象.因此,如果PHP无法找到该类,则会引发错误.