ホームページ >バックエンド開発 >PHPチュートリアル >PHP POST 変数が php://input に存在するにもかかわらず、$_POST に存在しないのはなぜですか?
php://input に存在するにもかかわらず PHP POST 変数が見つからない
はじめに:
POST リクエストを介して PHP でフォーム送信を処理する場合、php://input.
問題の説明:
この問題は、ネストされたフィールドを含む大きな HTML フォームを送信するときに発生します。フォーム データがサーバーに送信されているにもかかわらず、一部の値が $_POST に入力されない場合があります。 php://input を検査すると、これらの値は確かにリクエストに含まれているものの、$_POST では切り捨てられているようです。原因:
動作が原因であることがわかります。ドット、スペース、左角括弧などの文字を含む POST フィールドの PHP の変更。これらの文字は、以前は非推奨の register_globals 設定によって処理されていました。解決策:
この問題に対処するには、次のような回避策を採用できます。<code class="php">// Get real POST variables 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>この関数は、php://input 内の生の POST リクエストを解析し、元のフィールド名を使用して POST 変数を再構築します。 PHP によって行われた文字置換。
以上がPHP POST 変数が php://input に存在するにもかかわらず、$_POST に存在しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。