我有一个 HTML 表单发布到以下 index.php:
<?php require_once("/home/full/path/to/included/file.php"); ?>
在 file.php 中,我试图访问 $_POST:
ob_start();
session_start();
var_dump($_POST);
$contents = ob_get_contents();
ob_end_clean();
echo $contents;
但是 var_dump($_POST) 返回一个空数组。
将 ob 函数移动到 index.php 没有任何效果。
如果我将 var_dump($_POST) 放在ob_start()之前,或者如果我完全删除输出缓冲,问题就会消失,但我需要输出缓冲。因此,为了解决问题,我尝试将表单数据发布到 test.php:
ob_start();
$session_start;
var_dump($_POST);
$contents = ob_get_contents();
ob_end_clean();
echo $contents;
它显示一切正常。所以我的 file.php 的问题似乎是它既包含在内,又使用输出缓冲。你看到我的设置有问题吗?为什么 $_POST 不能被包含的输出缓冲脚本访问?您是否看到解决此问题的方法或替代方法?谢谢。
编辑:另一个可能的因素:我的 HTML 表单标签是这样的:
<form action="/" method="POST">
我使用 mod_rewrite 将其重定向到 index.php。我尝试了 action="/index.php" 并没有任何变化,所以没关系。