「method=post」リクエストの「enctype=text/plain」を使用したフォーム データ送信
この問題は、「」の使用法に関係します。フォームの "method=post" 属性内の enctype=text/plain"。このエンコーディングは「method=get」属性と互換性がありますが、「method=post」と組み合わせると互換性の問題が発生します。
説明
PHP は本質的に互換性がありません。 「post」リクエストを処理するときに「text/plain」エンコーディングを処理します。そのため、フォーム データは $_POST 配列に正しく入力されません。代わりに、データは $HTTP_RAW_POST_DATA 変数に保存されます。
GET エンコーディングと POST エンコーディングの区別
「enctype=text/plain」「method=get」シナリオの場合、変数は URL エンコードされ、クエリ文字列に含まれます。このプロセスは、あいまいさなしに文字エンコーディングを簡単に処理します。
ただし、「enctype=text/plain」「method=post」シナリオでは、変数は POSTDATA ヘッダーで送信されます。このアプローチには固有の URL エンコーディングが欠けているため、データのあいまいさが生じる可能性があります。
「method=post」リクエストの有効なエンコーディング
PHP は、「method=post」の 2 つの有効なエンコーディングのみを認識します=投稿」リクエスト:
前者のエンコーディングがデフォルトであり、後者はデフォルトです。ファイルのアップロードには必須です。
「text/plain」を使用した結果エンコーディング
「method=post」で「text/plain」エンコーディングを使用すると、データが破損する可能性があります。たとえば、類似した名前の変数が複数存在する場合、データが区別できなくなり、サーバー側で誤った処理が行われる可能性があります。
「text/plain」エンコーディングの代替
文字をエンコードする必要がある場合は、代わりに「application/x-www-form-urlencoded」エンコードを使用することを検討してください。このアプローチでは、フォーム データを URL エンコードして正しい送信を保証し、追加の文字管理の必要性を排除します。
以上がPHP が「method=post」フォームの「enctype=text/plain」を適切に処理しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。