3

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

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

4

3 回答 3

1

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

于 2014-01-30T04:49:58.263 回答
0

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

于 2013-09-27T10:02:34.980 回答
0

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

<?
if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
  var_dump($_POST);
}else{
    var_dump($_POST);
}  ?>
于 2013-09-27T06:50:36.873 回答