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

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

Mary-Kate Olsen
リリース: 2024-12-24 06:09:22
オリジナル
601 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート