我有一個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。我嘗試動作=「/ index.php」,沒有任何變化,所以它應該沒有關係。
你不「包括:」它使用HTTP URL而不是文件系統路徑?路徑似乎是正確的,但它是最有可能的原因 – 2010-08-07 07:03:27
我使用文件系統路徑包含它,因爲它在文檔根目錄之外(它有敏感數據,我不希望它可公開訪問,無論是否受.htaccess保護) )。 – 2010-08-07 07:08:51