首页 >后端开发 >php教程 >如何在不使用内置函数的情况下在 PHP 中解析多部分/表单数据 POST 请求?

如何在不使用内置函数的情况下在 PHP 中解析多部分/表单数据 POST 请求?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-05 04:29:10447浏览

How Can I Parse Multipart/Form-Data POST Requests in PHP Without Using Built-in Functions?

无需 PHP 干预即可解析 Multipart/Form-Data POST 请求

尽管 php://input 和 $HTTP_RAW_POST_DATA 在处理多部分方面存在限制/form-data POST请求,有一种方法可以访问原始数据

RAW multipart/form-Data 解析的挑战

PHP 会自动解析 multipart/form-data 请求,导致无法直接获取原始数据。当处理 PHP 无法解析的格式不正确的数据时,这可能会成为一个问题。

绕过限制

解决方案在于使用 Apache 配置修改请求标头指示。通过将 Content-Type 从 multipart/form-data 更改为 multipart/form-data-alternate,PHP 会被诱骗不解析请求。

Apache 配置修改

可以将以下代码添加到 Apache 配置中:

<Location "/backend/XXX.php">
    SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate OLD_CONTENT_TYPE=
    RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE
</Location> 

该指令更改传入请求的 Content-Type 标头从 multipart/form-data 到 /backend/XXX.php 到 multipart/form-data-alternate,阻止 PHP 尝试解析请求。

检索原始数据并解析

修改配置后,可以从php://input中获取原始数据并手动解析。但是,此方法有一个警告:$_FILES 数组将为空。

这种解决方法并不理想,但它为默认 PHP 解析失败的情况提供了一种解决方案。

以上是如何在不使用内置函数的情况下在 PHP 中解析多部分/表单数据 POST 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn