PHP で php://input を使用して、同じ名前値、inputname を持つフォーム データを処理します
昨年 10 月に、PHP がフロントエンドで同じ名前の値を持つフォーム送信データを受信する問題を分析しました。そのときの解決策は、PHP が受信した後に名前の値を配列型に変更することでした。 、その後、配列のマージ処理が行われます。この欠点は、フロントエンド フォームと完全な互換性がないこと、およびユーザーがフォームを変更する必要があることです。システム要件として、すべてのアップグレードがユーザーに対して完全に透過的であるため、この方法はまだ完全ではありません。
ほぼ 1 年間の蓄積の後、php には php://input:
を通じて POST データを取得できる入出力ストリームにアクセスする原始的な方法が用意されていることがわかりました。
コードをコピーします コードは次のとおりです:
php://input は、要求された生データへのアクセスを提供する読み取り専用ストリームです。 POST リクエストの場合、特定の php.ini ディレクティブに依存しないため、$HTTP_RAW_POST_DATA の代わりに php://input を使用することをお勧めします。 また、この場合、$HTTP_RAW_POST_DATA はデフォルトでは設定されないため、always_populate_raw_post_data をアクティブにするよりも必要なメモリが少なくなる可能性があります。 enctype=”multipart/form-data”の場合、php://inputは無効となります。
php://input によって開かれたデータ ストリームは 1 回だけ読み取ることができます。データ ストリームはシーク操作をサポートしていません。 ただし、SAPI の実装によっては、リクエスト本文のデータが保存されるときに、別の php://input データ ストリームを開いて再読み取ることができます。 通常、これは POST リクエストにのみ当てはまり、PUT や PROPFIND などの他のリクエスト メソッドには当てはまりません。
したがって、php を使用して同じ名前の値を持つフォーム データを取得するという考えは次のようになります。 1. php://input を通じて元の POST データを取得します。 2. データを処理してマージします。処理された値はシステム変数 $_POST に次のように定義されています:
リーリー
次に、必要に応じて「$_POST=GET_SUBMIT()」を使用するだけで、処理後の各フォームのデータを$_POSTを使用して取得できます。
http://www.bkjia.com/PHPjc/953149.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/953149.html技術記事 PHP では、php://input は、同じ名前値 inputname を持つフォーム データを処理するために使用されます。昨年 10 月に、PHP が同じフロントエンド名値を持つフォーム送信データを受信する問題を分析しました。 ..