【问题标题】:PHP5.5 $_SESSION array empty after invocation by <form action=>PHP5.5 $_SESSION 数组在 <form action=> 调用后为空
【发布时间】:2013-04-09 00:52:47
【问题描述】:

我定义了一个表单,比如:

<form name="form1" method="POST" action="display_info.php">

当调用动作文件display_info.php 时,它会从表单中接收到带有正确信息的$_POST 数组,但$_SESSION 数组是空的。我仍然需要来电者$_SESSION 中的信息!

是否有另一种方法可以让调用的php 文件同时接收$_SESSION$_POST 信息?即使我尝试method="SESSION",它仍然是空的。

【问题讨论】:

  • 我打赌你忘了把 session_start() 放在页面顶部
  • 显而易见的问题:您是否在您的display_info.php 中调用session_start()
  • 没有method="SESSION"。在这里阅读更多:w3schools.com/tags/att_form_method.asp
  • 5.5 仍处于测试阶段,所以如果没有正常工作.. 等待下一个测试版本。您不应该为了编写代码而接触 beta 开发,而只是进行试验。
  • @barbashov 如果您发布了答案,我会因为您向 w3schools 发布问题而投反对票。为什么?在这里阅读——w3fools.com

标签: php forms session


【解决方案1】:

如果会话包含数据应该没有问题。只需确保在文档开头使用以下命令开始会话:session_start();

$_POST 和 $_SESSION 全局变量是不同的东西。不要将这两者混为一谈。

它们都是数组,因此您可以像访问任何其他数组一样访问它们,但是,$_POST 保存从另一个页面发布的数据,而 $_SESSION 保存过去存储的会话。

因此,即使您有一个将一些数据发布到处理该数据的另一个页面的表单,您也需要启动会话以使用它并通过 $_SESSION 变量访问会话数据。

也可以试试这个检查 $_SESSION 是否为空:var_export($_SESSION);

【讨论】:

  • 是的,我忘记了 session_start();哦!
【解决方案2】:

你把:

session_start();

在你的 php 文件的顶部?

http://php.net/manual/en/function.session-start.php

您确定该会话包含数据吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 2021-02-12
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 2011-07-01
    相关资源
    最近更新 更多