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