5

少し前に、ページ内で同じ入力名/非表示名を複数回使用することについて質問したところ、 のようにフィールド名の後に括弧を付けるために使用する必要があることを示唆していたため、機能しない回答を得ましたpartno[]

送信先のカートは、partno、item、price、qty などの特定のフィールド名しか認識しないため、これをフォームで使用することはできません (partno[], item[]などは使用できません)。複数回使用された各フィールド名のすべての値。メソッドを使用するGETと、アドレスバーで使用される各フィールド名のすべての値が表示されます。これを試して、フォームを送信できます。アドレスバーの URL を見てください。

私の新しい質問は次のとおりです。メソッドを使用して渡されたすべての情報を取得する方法は PHP にありPOSTますか? (上記の例のアドレスバーに表示されるものと同様ですがPOST、 ではなくを使用していGETます)。キャプチャする方法がわかれば、解析できます。

ありがとう、ケリー

4

5 に答える 5

2

入力ストリームから汚染されていないデータを直接取得できます。

file_get_contents('php://input');

したがって、次のようなものがある場合:

<input name="type" value="val1">
<input name="type" value="val2">
<input name="type" value="val3">

次のような文字列が得られます。

type=val1&type=val2&type=val3

次に、この文字列を配列に解析して、独自の「生の投稿データ」を作成できます。

http://php.net/manual/en/wrappers.php.php

php://input は、リクエスト本文から生データを読み取ることができる読み取り専用ストリームです。POST リクエストの場合、特別な php.ini ディレクティブに依存しないため、$HTTP_RAW_POST_DATA の代わりに php://input を使用することをお勧めします。さらに、$HTTP_RAW_POST_DATA がデフォルトで設定されていない場合は、always_populate_raw_post_data をアクティブ化する代わりに、メモリ消費量が少ない可能性があります。php://input は enctype="multipart/form-data" では使用できません。

于 2012-07-12T20:38:54.787 に答える