ホームページ >バックエンド開発 >PHPチュートリアル >POST リクエストで `enctype='text/plain'` を使用すると、PHP で問題が発生するのはなぜですか?

POST リクエストで `enctype='text/plain'` を使用すると、PHP で問題が発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-24 06:09:22605ブラウズ

Why Does Using `enctype=

"method="post" enctype="text/plain": 互換性の問題

method= の両方で form 要素を使用する場合"post" および enctype="text/plain" を指定すると、指定された PHP ファイルへのデータ送信で問題が発生する可能性があります。これは、PHP が処理をサポートしていないためです。 POST データの text/plain エンコーディング。

text/plain エンコーディングに問題があるのはなぜですか?

enctype の有効な値には、application/x-www-form-urlencoded および multipart が含まれます。 /form-data。1 つ目は POST リクエストのデフォルトであり、2 つ目はファイルをアップロードするときに使用されます。

text/plain エンコーディングは POST で使用され、PHP は $_POST 配列に値を設定するのではなく、生のフォーム データを $HTTP_RAW_POST_DATA 変数に保存します。これにより、フォーム値へのアクセスに不整合や曖昧さが生じる可能性があります。

次の点を考慮してください形式:

<form method="post" enctype="text/plain" action="proc.php">
  <textarea name="input1">abc
input2=def</textarea>
  <input name="input2" value="ghi" />
  <input type="submit">
</form>

対応する PHP ファイル内:

print($HTTP_RAW_POST_DATA);

結果:

input1=abc
input2=def
input2=ghi

上記のように、次のことは不可能です。 input1 と input2 の値を区別します。input1=abcrninput2=def、input2=ghi のいずれかになります。または input1=abc、input2=defrninput2=ghi.

POST リクエストとは異なり、GET リクエストでは、enctype="text/plain" が指定されている場合でも、常にクエリ文字列が URL エンコードされます。これは、変数が URL 自体の一部であるためです。

以上がPOST リクエストで `enctype='text/plain'` を使用すると、PHP で問題が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。