POST リクエスト経由で HTML フォームを送信する場合、送信されたすべての値が $_POST スーパーグローバルに設定されることが期待されます。ただし、場合によっては、特定の値が欠落している可能性があります。
値が欠落する原因は何ですか?
PHP は、特定の文字 (スペース、ドット、ドットなど) を含む値を自動的に変更します。開き角括弧) を使用して、非推奨の register_globals 機能との互換性を確保します。この変更により、$_POST から値が省略される可能性があります。
問題の解決
この問題を解決するには、さまざまな回避策を使用できます。一般的な方法の 1 つは、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 中国語 Web サイトの他の関連記事を参照してください。