透過 POST 提交大型 HTML 表單時,PHP 可能會缺少某些 $_POST 值。儘管透過 php://input 存取的原始請求正文中存在值,但仍會發生這種情況。
出現此問題的原因是 PHP 修改了欄位名稱中的某些字符,例如空格和點,以符合已棄用的 register_globals環境。因此,某些鍵可能會被更改並在 $_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>
例如,HTML 片段:
<code class="html"><input type="text" name="my_field.value" value="test"></code>
PHP 程式碼:
<code class="php">$my_field_value = $_POST['my_field.value'];</code>
以上是為什麼 php://input 中存在某些 $_POST 值卻遺失了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!