print_r($ POST)不工作但print_r($ _ SESSION)呢?

时间:2016-09-08 19:50:10

标签: php session post

使用单独的php文件“session_info.php”导航到新选项卡中,并使用以下代码查看$ _SESSION数组值和$ _POST数组值,只显示$ _SESSION数组值。

session_start();
echo 'SESSION VALUES';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
echo '<br>';

echo 'POST VALUES';
echo '<pre>';
print_r($_POST);
echo '</pre>';

print_r($ _ POST)仅返回

Array
(
)

如果我在php代码中包含一个“print_r($ _ POST)”行,该行使用表单的$ _POSTed值更新数据库并在单独的框架中显示值,则$ _POST值将显示在框架O.K中。 那么为什么不在我的“session_info.php”显示中呢?

2 个答案:

答案 0 :(得分:1)

仅当您向该页面发送$_POST请求时,

POST值才会显示。如果您打开新标签页,则会发送GET个请求,因此您的$_POST变量将为空。

您的$_SESSION变量会在任何类型的请求中显示其内容,因为它与您发送到该页面的请求类型无关。

此外,如果您将二进制数据作为$_POST请求发送,则必须使用file_get_contents('php://input');

读取原始发布数据

答案 1 :(得分:1)

当您在浏览器中打开某个页面时,它会根据主机名和IP运行对服务器的请求。这意味着每个请求都是您运行的脚本的新运行。每个请求都有自己的数据发送到服务器。例如,如果您使用<Route ... />创建表单,则会使用方法发布将数据发送到服务器。当服务器处理此请求时,它将使用已发送数据填充method="post"数组。

如果您通过url(GET方法)发送数据,那么服务器将使用它填充$ _GET数据。但是,如果您只是输入地址字段,则您的网址根本没有POST请求,也永远不会。所以你的POST阵列是空的,服务器也没问题。

在您的情况下,根本没有错误。我建议你再次阅读php中有关预定义变量的文档。