使用单独的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”显示中呢?
答案 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中有关预定义变量的文档。