问题描述
|
我正在处理多页表单。这是其功能的概要:
第一部分:收集表单输入字段->使用POST方法将用户发送到transfer.php
第二部分:transfer.php |验证是否没有任何内容->将$ _POST变量存储到$ _SESSION中->将用户重定向到表单的下一部分。
第三部分:表格的第二部分从第一个表单维护会话->将新变量添加到会话->准备一切以电子邮件形式发送
我一直在阅读如何使用header(location:)等删除会话信息。人们似乎找到的解决方案是在页面上验证表单,然后使用表单的操作字段指导用户。
我遇到的问题是:
表单重定向的位置基于表单的输入。实际上,可以根据用户在第一种形式中输入的内容将其转发给8种潜在形式。
我已经尝试过SID技术,
SESSION变量显示为
已注册,但它们都显示
&空值。
问题:如何获取会话变量以显示在下一页上?
这是我到目前为止的代码:
第1部分:表格
<form method=\"POST\" action=\"transfer.php\">
... all my form elements with proper names
</form>
第2部分:transfer.php
<?php
session_start();
$_SESSION = $_POST;
// project_type would store an url for the corresponding 2nd part of the form
$redirect = $_SESSION[\'project_type\'];
$redirect .= \"?phpSESSID=\".session_id();
header(\"Location: $redirect\");
exit();
?>
第3部分:下一个表格
<?php
// initialize a session
session_start();
echo \"<p>Session ID: \" . session_id() . \"</p>\";
echo \"<p>Vardump Set Off Page: \";
var_dump($_SESSION);
echo \"</p>\";
?>
<form method=\"...... the rest of the form etc
我知道该帖子使其正确地转移到transfer.php。
我知道$ _POST的内容已正确复制到$ _SESSION。
我知道重定向期间某处,会话变量被设置为&NULL
这是将用户重定向到表单的第二部分后var_dump的外观。
array(18) { [\"project_type\"]=> &NULL [\"project_timeframe\"]=> &NULL [\"company_name\"]=> &NULL [\"company_address\"]=> &NULL [\"company_city\"]=> &NULL [\"company_state\"]=> &NULL [\"company_zipcode\"]=> &NULL [\"company_phone\"]=> &NULL [\"company_website\"]=> &NULL [\"contact_name\"]=> &NULL [\"contact_title\"]=> &NULL [\"contact_email\"]=> &NULL [\"contact_phone\"]=> &NULL [\"contact_primary_phone_type\"]=> &NULL [\"contact_phone_alt\"]=> &NULL [\"contact_alternate_phone_type\"]=> &NULL [\"contact_preferences\"]=> &NULL [\"contact_preferences_additional\"]=> &NULL }
解决方法
只需在页面顶部使用
session_start();
。
除非您切换到其他会话,否则不需要ѭ5。
编辑:
同样在transfer.php
中,您只希望将所有帖子保存到会话中,所以只需执行以下操作:
session_start();
$_SESSION = $_POST;
另外:删除此行:session_write_close();