session_start()在表单提交后导致空$ _POST

时间:2013-06-05 20:34:58

标签: php forms session

我正在测试我的页面,其形式非常简单:

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

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

<? 
var_dump($_POST);
?>

输出为array(1) { ["email"]=> string(5) "hello" },正如所料。

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

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

输出现在为array(0) { }

很难搜索到这个问题,遗憾的是,我在网上找到的这些搜索字词的大部分结果都是关于空$_SESSION个变量,这对我来说不是问题。问题是$_POST为空。

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

3 个答案:

答案 0 :(得分:1)

..也有同样的问题。空$ _SESSION-vars的原因是/ var / lib / php / session目录中的错误权限:755 owner + group运行http的用户(apache,www-data或cherokee)

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您是否检查了php.ini文件中的短标签,因为您使用的是不支持php的短标签。如果您想使用短标签<? ?>,请检查您的php.ini文件并启用--enable-short-tags选项。我强烈建议您使用<?php ?>标记。使用正确的PHP标签,您的代码工作正常。 http://php.net/manual/en/language.basic-syntax.phptags.php