【问题标题】:Transporting POST vars using SESSION使用 SESSION 传输 POST 变量
【发布时间】:2025-12-25 04:00:17
【问题描述】:

我正在使用一个页面将 POST 变量传输到下一页,有时它完全是空的。我自己无法重现它,但看到客户遇到了这个问题。

第 1 页:

session_start();
$_SESSION['postvars'] = $_POST;
error_log("client was trying to save post: " . json_encode($_POST));

第2页:

session_start();
error_log(json_encode($_SESSION));

没有什么花哨的,一切都是默认的PHP session ini,当我用safariffie7+8测试时可以工作。我什至转储了客户的$_SERVER vars,希望他们使用IE5 或一些奇怪的东西,没有运气。到底是怎么回事?

【问题讨论】:

  • 你想传输所有 POST VARS ,对吧?
  • 两个页面加载之间是否有任何重要的时间间隔?
  • 如果cookies被禁用,而你使用cookies传输session id,则为空,你可以在url中传输session id,和\或查看用户cookie状态。跨度>
  • 您是否检查过会话 cookie 是否随每个请求一起传输,并且是否使用了相同的 cookie?如果会话 ID 每次都更改,则说明某些东西正在杀死您的 cookie,并且每次都会创建一个新的(空白)会话。

标签: php session post


【解决方案1】:

在不需要的时候检查是否设置了enctype

或者检查帖子的内容类型(必要时强制在接收页面上)

也可以在你的调试中试试这个,看看发送了什么

$contents = file_get_contents('php://input');

【讨论】:

    【解决方案2】:

    抱歉,这是问题所在。在 session_start() 的一个 cmets 中

    针对header location重定向后会话丢失的问题...

    试试这个:

    header("位置:xpage.php"); 出口(); //这句话变魔术了 ?>

    所以我在进行标头重定向,而 SESSION 正在下降。我已经通过在两个页面上获取 session_id() 并让它们有时不同来确认这一点。不过,我仍然无法在我尝试过的任何浏览器上重现这一点。

    【讨论】: