首页 > 后端开发 > php教程 > 为什么 POST 不支持 `enctype='text/plain'` 而 GET 支持?

为什么 POST 不支持 `enctype='text/plain'` 而 GET 支持?

Linda Hamilton
发布: 2024-12-05 16:24:11
原创
401 人浏览过

Why Doesn't POST Support `enctype=

method="post" 和 enctype="text/plain" 不兼容

尝试使用以下表单时:

<form method="post" enctype="text/plain" action="proc.php">
登录后复制

您在成功将表单数据传输到“proc.php”文件时可能会遇到困难。是什么导致了这个问题,为什么“post”方法不能使用“text/plain”编码,而“get”方法可以使用?

解释:

PHP 无法使用“post”方法处理“text/plain”编码是这个问题的根源(而且这不是一个问题) bug):

https://bugs.php.net/bug.php?id=33741

对于“

”中的“enctype”属性标签,以下有效值为:
  • application/x-www-form-urlencoded
  • multipart/form-data

第一个值为默认,第二个仅用于文件上传。

PHP 的原因行为:

Alohci 解释了为什么 PHP 不填充 $_POST 数组,而是将值存储在 $HTTP_RAW_POST_DATA 变量中:

GET 和 POST 之间的区别:

  • GET:变量包含在 URL 中作为查询字符串并且必须进行 URL 编码。即使使用“enctype=text/plain”,浏览器也会对变量进行 URL 编码。
  • POST:变量不是 URL 的一部分,而是作为 HTTP 请求 (POSTDATA) 中的最后一个标头发送。您可以指定是否将它们发送为“text/plain”或“application/x-www-form-urlencoded”,但后者是消除歧义的唯一选项。

以上是为什么 POST 不支持 `enctype='text/plain'` 而 GET 支持?的详细内容。更多信息请关注PHP中文网其他相关文章!

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