首页 > 后端开发 > php教程 > 为什么 `enctype='text/plain'` 与 HTML 表单中的 POST 方法不兼容?

为什么 `enctype='text/plain'` 与 HTML 表单中的 POST 方法不兼容?

Barbara Streisand
发布: 2024-12-16 04:37:11
原创
878 人浏览过

Why is `enctype=

为什么“method="post" enctype="text/plain"”不兼容?

使用 HTML 表单编码方法时"post" with "enctype="text/plain"," 表单数据无法传递到 PHP 脚本。这个问题背后的原因是什么?为什么 text/plain 编码与 post 不兼容,而 get 允许?

说明

PHP 不支持 "enctype="text/plain"" method="post";这不是程序错误。

表单中“enctype”的批准值分别是:

  • application/x-www-form-urlencoded
  • multipart/form-data

第一个选项是默认的,第二个选项是对于文件上传至关重要。

PHP 在以下情况下不会填充 $_POST 数组使用“enctype=”text/plain”;它将值存储在 $HTTP_RAW_POST_DATA 中。

文本/纯文本编码的潜在问题

考虑以下场景:

中file1.php:

<form method="post" enctype="text/plain" action="file2.php">
  <textarea name="input1">abc
input2=def</textarea>
  <input name="input2" value="ghi" />
  <input type="submit">
</form>
登录后复制

在 file2.php:

<?php
print($HTTP_RAW_POST_DATA);
?>
登录后复制

预期结果:

input1=abc
input2=def
input2=ghi
登录后复制

但是,使用文本/纯编码,有无法区分 input1 和 input2 的值。为:

  • input1=abcrninput2=def, input2=ghi
  • input1=abc, input2=defrninput2=ghi

GET 和 POST 的区别就是:

  • GET 变量出现在 URL 中作为查询字符串,并且必须进行 URL 编码,即使使用 enctype="text/plain"。
  • POST 变量在 HTTP 请求的最终标头 (POSTDATA) 中传输,允许编码为 text/plain 或应用程序/x-www-form-urlencoded。然而,为了避免歧义,首选后者。

以上是为什么 `enctype='text/plain'` 与 HTML 表单中的 POST 方法不兼容?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板