Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过php://input 对于内容类型为多部分/表单数据不起作用的表单_Php_Http - Fatal编程技术网

通过php://input 对于内容类型为多部分/表单数据不起作用的表单

通过php://input 对于内容类型为多部分/表单数据不起作用的表单,php,http,Php,Http,我们有一个代理PHP脚本,可以通过 $postPayload = file_get_contents('php://input'); 这通常是有效的 (不使用$\u POST的原因是,我们有时会有重复的表单输入名称,而PHP会禁止这些名称) 现在我们有了一个 <form name="form" method="post" action="/script.php" enctype="multipart/form-data"> 在这种情况下,如何访问原始POST数据?多部分/

我们有一个代理PHP脚本,可以通过

$postPayload = file_get_contents('php://input');
这通常是有效的

(不使用
$\u POST
的原因是,我们有时会有重复的表单输入名称,而PHP会禁止这些名称)

现在我们有了一个

<form name="form" method="post" 
   action="/script.php" enctype="multipart/form-data">

在这种情况下,如何访问原始POST数据?

多部分/表单数据
不发送到php://input,仅发送至$\u POST

在php.ini中,您可以设置
enable post data reading=off
来更改此设置,但是$\u post将始终为空。看

您可以使用.htaccess将其设置为单页

php_value  enable-post-data-reading off
还有一个apache黑客:

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

SetEnvIf内容类型^(多部分/表单数据)(*)新内容类型=多部分/表单数据替换$2旧内容类型=$1$2
RequestHeader集合内容类型%{NEW_Content_Type}e env=NEW_Content_Type

另请参见:

我能够在
中这样修复它。htaccess

<Files "script.php">
# make post data always available in the proxy
php_flag enable_post_data_reading 0
</Files>

#使post数据在代理中始终可用
php_标志启用_post_数据_读取0

很抱歉,当我找到副本时,我已经写了一半的答案,所以我添加了链接。我也投票支持结束……不,我写了第一部分。找到apache黑客,添加链接并将重要部分复制到。我没有删除我的答案,因为它总结了我找到的所有内容,还添加了.htaccess,因为OP抱怨无法更改服务器上的这些设置。但无论如何,请随意否决投票。
<Files "script.php">
# make post data always available in the proxy
php_flag enable_post_data_reading 0
</Files>