通过php://input 对于内容类型为多部分/表单数据不起作用的表单
我们有一个代理PHP脚本,可以通过通过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数据?多部分/
$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>