【问题标题】:session_start() causing empty $_POST after form submissionsession_start() 在表单提交后导致空 $_POST
【发布时间】:2013-06-01 17:02:54
【问题描述】:

我正在测试我的页面,它有一个非常简单的表单:

<form action="script/check.php" method = "post">
    <input type = "text" name = "email">
    <input type = "submit">
</form>

当我的check.php 文件包含以下代码时,它可以正常工作:

<? 
var_dump($_POST);
?>

正如预期的那样,输出是array(1) { ["email"]=&gt; string(5) "hello" }

check.php 包含session_start() 时,$_POST 变为空。

<?
session_start();
var_dump($_POST);
?>

现在的输出是array(0) { }

很难搜索到这个问题,不幸的是我在网上找到的大多数结果都是关于空的$_SESSION变量,这对我来说不是问题。问题是$_POST 为空。

有一个问题:$_POST 在我从本地机器测试页面时正确通过,在存储服务器的网络上。对于其他任何地方,情况并非如此,该站点无法运行。这非常奇怪,因为我几个月来一直在使用这种类型的脚本而没有任何问题,并且外部用户已经能够毫无问题地连接。我认为这是目录权限问题,但如果没有更多信息,我无法确定。

【问题讨论】:

  • 你在什么样的服务器上?是本地服务器吗?
  • 刚刚在本地堆栈上运行session_start 给出的确切代码,返回array(1) { ["email"]=&gt; string(4) "test" } 你是否将其设置为display_errors?
  • 这是在线的吗?我想测试它检查 http 标头
  • 启动会话可能会导致重定向,这将通过 GET 完成,这意味着 POST 数据丢失。您可以使用 firefox 的 firebug nettab 或 httpfox 扩展等轻松验证这一点,并查看是否发生任何重定向。
  • 请永远不要启用 register_globals。你不需要它,它是一个主要的安全漏洞,它已经被弃用并且将停止工作。 Rgister globals 与 $_POST 无关,但会为发布的任何内容创建全局变量。 php.net/manual/en/security.globals.php

标签: php forms session


【解决方案1】:

..也有同样的问题。 $_SESSION-vars 为空的原因是 /var/lib/php/session 目录中的权限不正确:755 所有者 + 运行 http 的用户组(apache、www-data 或 cherokee)

【讨论】:

  • @SaurabhSinha:请不要无故重复NAA,无效。更具体,才能真正有用。
  • @Laszlo Papp:这个答案在上下文中吗?
  • @SaurabhSinha:你声称了一些东西。你应该解释你的东西。
  • @Laszlo Papp:好的,现在我明白了。我需要在发布的 cmets 上进行解释。不是吗..下次会记住..谢谢
【解决方案2】:

发生的事情是由于会话,您需要检查会话是否已经开始。

<?
if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
  var_dump($_POST);
}else{
    var_dump($_POST);
}  ?>

【讨论】:

    【解决方案3】:

    您是否检查了您的 php.ini 文件中的短标签,因为您使用的是不鼓励的 php 短标签。如果您想使用短标签&lt;? ?&gt;,请检查您的 php.ini 文件并启用 --enable-short-tags 选项。我强烈建议您使用&lt;?php ?&gt; 标签。使用适当的 php 标签,您的代码可以正常工作。 http://php.net/manual/en/language.basic-syntax.phptags.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多