PHP 5.4.17
我有一个简单的html表单,如下所示:
index.html
<form method="POST" action="/addnewaccount.php">
<input type="text" name="firstname" />
<button type="submit">Submit</button>
</form>addnewaccount.php
<?php
var_dump($_POST); // array(0) {}
var_dump($_REQUEST); // array(0) {}
var_dump(file_get_contents('php://input')); //string(0) ""
var_dump($HTTP_RAW_POST_DATA); // NULL当这个表单被提交时,php不会填充$_POST或$_REQUEST变量。它们只是空数组。
我在我的php.ini文件中检查了以下内容:
enable_post_data_reading = On
post_max_size = 10M
variables_order = "GPCS"
request_order = "GP"如果我将表单的封装类型更改为"multipart/form-data",$_POST和$_REQUEST变量就会被填充,所以我觉得问题出在默认的封装类型"x-www-form-urlencoded“上,但是我不知道如何使用默认的封装类型。
发布于 2020-01-11 01:35:07
我能够解决这个问题。我发现这是我们的Node代理和php之间的交互。
在Node代码中,我们使用了'body-parser‘npm包。我们有一行代码,我们将中间件用于表单数据,如下所示:
app.use(bodyParser.urlencoded({extended: true}));中间件在请求被代理之前将表单数据转换为JSON,这阻止了PHP获取数据。
希望这对将来可能遇到类似情况的人有所帮助。
https://stackoverflow.com/questions/59655538
复制相似问题