PHP不处理来自multipart / form-data表单的数据

时间:2016-03-25 17:11:02

标签: php forms

我的网站没有设置enctype="multipart/form-data"的表单中的流程数据。但是,即使php manual表示它不适用于enctype,'php://input'也会获取数据。我认为这可能是一些错误的设置,但我不知道它可能是什么。

一些代码:

<?php
    var_dump($_REQUEST);
    echo file_get_contents("php://input");
?>
<form id="slideForm" action="" method="post" enctype="multipart/form-data">
    <input type="text" name="test">
    <input type="submit" name="submit" id="submit" value="ADD"/>
</form>

更新

我一直在接触托管我网站服务器的公司的支持,我们已经解决了这个问题。我不完全确定问题是什么,但是它的服务器和php有点时髦。我不使用PHP 7.0或PHP 5.6,但如果我使用他们的原生(PHP 5.5),它的工作没有问题。

5 个答案:

答案 0 :(得分:0)

我不明白你想要POST哪种类型的数据。如果只是一个测试你应该只有:

<?php
    var_dump($_POST);
?>
<form id="slideForm" action="" method="post">
    <input type="text" name="test">
    <input type="submit" name="submit" id="submit" value="ADD"/>
</form>

如果您想发布文件,您必须:

<?php
    var_dump($_POST);
?>
<form id="slideForm" action="" method="post" enctype="multipart/form-data">
    <input type="file" name="test">
    <input type="submit" name="submit" id="submit" value="ADD"/>
</form>

确保您能够在php服务器上发布数据。 检查这些php变量:

upload_max_filesize
upload_tmp_dir
file_uploads

答案 1 :(得分:0)

在大多数情况下,您根本不需要使用此属性。默认值(即,如果您根本不使用此属性)是&#34; application / x-www-form-urlencoded&#34;,这对于几乎任何类型的表单数据都是足够的。一个例外是您要进行文件上传。在这种情况下,您应该使用&#34; multipart / form-data&#34;。 尝试使用以下代码进行echo&#34; test&#34;数据

<?php
    var_dump($_REQUEST);
    echo $_REQUEST['test'];
?>

<form id="slideForm" action="" method="post">
    <input type="text" name="test">
    <input type="submit" name="submit" id="submit" value="ADD"/>
</form>

答案 2 :(得分:0)

我尝试了您的代码,它按预期工作: $ _REQUEST正确填充,php输入为空。

考虑到您的代码看起来很好,并且它在我的服务器上按预期工作,我建议您检查.htacces(或等效的)过滤/重写模块,甚至是服务器配置设置甚至页面编码。

99%这不是代码本身。

答案 3 :(得分:0)

SELECT * FROM mytable WHERE COUNT(color) > 1

答案 4 :(得分:0)

当您发送标头Content-Type:multipart/form-data;时,PHP将请求中的数据解析为$_POST$_FILES并清除输入缓冲区。为了读取输入缓冲区,您应该删除该标头。