首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用x-www-form- $_POST编码时PHP不填充urlencoded

问使用x-www-form- $_POST编码时PHP不填充urlencoded
EN

Stack Overflow用户
提问于 2020-01-09 08:10:10
回答 1查看 187关注 0票数 1

PHP 5.4.17

我有一个简单的html表单,如下所示:

index.html

代码语言:javascript
复制
<form method="POST" action="/addnewaccount.php">
    <input type="text" name="firstname" />
    <button type="submit">Submit</button>
</form>

addnewaccount.php

代码语言:javascript
复制
<?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文件中检查了以下内容:

代码语言:javascript
复制
enable_post_data_reading = On
post_max_size = 10M
variables_order = "GPCS"
request_order = "GP"

如果我将表单的封装类型更改为"multipart/form-data",$_POST和$_REQUEST变量就会被填充,所以我觉得问题出在默认的封装类型"x-www-form-urlencoded“上,但是我不知道如何使用默认的封装类型。

EN

回答 1

Stack Overflow用户

发布于 2020-01-11 01:35:07

我能够解决这个问题。我发现这是我们的Node代理和php之间的交互。

在Node代码中,我们使用了'body-parser‘npm包。我们有一行代码,我们将中间件用于表单数据,如下所示:

代码语言:javascript
复制
app.use(bodyParser.urlencoded({extended: true}));

中间件在请求被代理之前将表单数据转换为JSON,这阻止了PHP获取数据。

希望这对将来可能遇到类似情况的人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59655538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档