我有一个多页面表单,我试图在我的网站上实现,其工作原理如下:
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;
现在,在我网站的最后一页上,我有以下代码:
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;
我的页面上没有显示任何测试,因此我的会话没有按照我的想法进行。
供参考:
最后一页上的会话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" }
任何想法如何让这个工作?
由于
圣诞快乐!
答案 0 :(得分:5)
您需要在include("classes.php");
之前的最后一页上执行session_start()
,因为在反序列化会话变量时,PHP会尝试实例化您在会话数据中放入的同一个类的对象。因此,如果PHP无法找到该类,则会引发错误。
答案 1 :(得分:1)
“调用session_start()时会发生自动序列化/反序列化。 这意味着您包含文件并调用session_start()的顺序非常重要。“ - PHP Session with an Incomplete Object
在你提问之前,下次做一些研究。这是谷歌搜索“PHP不完整类”的第三个结果。
作为一般规则,您应该在每个脚本的最顶部包含所有文件。这样你就不会遇到像这样的任何依赖性问题。