POST リクエストでの重複したフォーム フィールド名の操作
Web フォームを操作する場合、複数の入力要素がフィールドを共有する状況がよく発生します。同じ名前の属性。ここで疑問が生じます: PHP の $_POST 配列はこれらすべてのフィールドの値を効果的にキャプチャできますか?
PHP の動作を理解する
この質問に答えるには、理解することが重要ですPHP がフォーム データをどのように処理するか。 POST メソッドを使用してフォームが送信されると、PHP は生のリクエスト本文を解析し、送信された名前と値のペアに基づいて $_POST 配列に値を設定します。
名前が重複する場合
フィールド名が重複している場合、PHP はその名前を持つ最後に検出された入力要素の値のみを保存します。これは、同じ名前を持つ以前のすべてのフィールドの値が失われることを意味します。
解決策: 配列の使用
この問題を軽減し、すべてのフィールドの値を取得するにはフィールドが重複している場合、PHP は簡単な解決策を提供します。つまり、「name='foo[]'」のように、角括弧で name 属性を割り当てます。これにより、PHP は入力フィールドを配列として扱うように指示され、同じ名前の複数の値を保存できるようになります。
たとえば、次の形式を考えてみましょう。
<form method="post"> <input name="foo[]" value="first value"> <input name="foo[]" value="second value"> <input name="foo[]" value="third value"> <input type="submit"> </form>
このフォームの場合が送信されると、$_POST 配列には、3 つの値 (「最初の値」、「2 番目の値」、および「3 番目の値」) の配列を含むエントリ「foo」が含まれます。 value").
生のリクエスト本文へのアクセス
配列の操作だけでは不十分なシナリオでは、PHP は生のリクエスト本文へのアクセスという代替方法を提供します。 。これは、file_get_contents('php://input') 関数を使用して実現できます。未加工の本文を解析することで、必要に応じて重複したフィールド値を手動で抽出して処理できます。
以上がPHP は POST リクエスト内の重複したフォームフィールド名をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。