繁体   English   中英

新的和改进的 PHP Session 重定向问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM