透過 POST 請求提交 HTML 表單時,預計所有提交的值都會填入 $_POST 超全域變數。但是,在某些情況下,某些值可能會遺失。
導致值缺失的原因是什麼?
PHP 自動修改包含特定字元(例如空格、點、左方括號)以確保與已棄用的 register_globals 功能相容。此修改可能會導致 $_POST 中的值被省略。
解決問題
要解決此問題,可以採用各種解決方法。一種流行的方法是使用 file_get_contents('php://input') 讀取原始 POST 資料並手動解析它以提取缺少的值。
以下是一個可用於「修復」的範例函數$_POST 值:
<code class="php">function getRealPOST() { $pairs = explode("&", file_get_contents("php://input")); $vars = array(); foreach ($pairs as $pair) { $nv = explode("=", $pair); $name = urldecode($nv[0]); $value = urldecode($nv[1]); $vars[$name] = $value; } return $vars; }</code>
透過使用此函數或類似的解決方法,您可以確保所有提交的值都被正確解析並在$_POST 數組中可用。
以上是為什麼 PHP 中缺少一些 $_POST 值以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!