[英]New & Improved PHP Session Redirect Problem
我正在处理一个多页表单。 这是它的function的轮廓:
第一部分:收集表单输入字段 -> 发送用户到 transfer.php 使用 POST 方法
第二部分:转移。php | 验证没有什么是空的 -> 将 $_POST 变量存储到 $_SESSION -> 将用户重定向到表单的下一部分。
第三部分:表格的第二部分 | 维护第一个表单中的 session -> 将新变量添加到 session -> 准备所有内容以通过电子邮件发送
我一直在阅读使用标头(位置:)等如何删除 session 信息。 人们似乎找到的解决方案是验证页面上的表单,然后使用表单的操作字段指导用户。
我遇到的问题:表单重定向的位置基于表单的输入。 实际上有 8 个潜在的 forms 用户可以根据他们在第一个表单中输入的内容被转发到。
我已经尝试过 SID 技术,并且 SESSION 变量显示为已注册,但它们都显示 &NULL。
问题:如何让 session 变量显示在下一页上?
这是我到目前为止的代码:
第 1 部分:表格
<form method="POST" action="transfer.php">
... all my form elements with proper names
</form>
第 2 部分:转移。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
我知道该帖子正在正确地转移。php。 我知道 $_POST 的内容被正确复制到 $_SESSION 。 我知道在重定向期间的某处,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();
在页面顶部。
不需要session_id($_GET['phpSESSID']);
除非您更改为不同的 session。
编辑:
同样在transfer.php
中,您只想将所有帖子保存到 session 中,只需执行以下操作:
session_start();
$_SESSION = $_POST;
另外:删除这一行: session_write_close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.