![](/img/trans.png)
[英]php - Handle application/x-www-form-urlencoded POST request using php
[英]PHP not populating $_POST when using x-www-form-urlencoded
PHP 5.4.17
我有一個簡單的 html 表單,看起來像這樣:
<form method="POST" action="/addnewaccount.php">
<input type="text" name="firstname" />
<button type="submit">Submit</button>
</form>
<?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"
如果我將表單的 enctype 更改為“multipart/form-data”,則會填充 $_POST 和 $_REQUEST 變量,所以我覺得問題在於“x-www-form-urlencoded”的默認 enctype,但我可以不知道如何讓事情在默認情況下工作。
我能夠解決這個問題。 我發現這是我們的 Node 代理和 php 的交互。
在我們的 Node 代碼中,我們使用了“body-parser”npm 包。 我們有一行使用中間件來處理表單數據,如下所示:
app.use(bodyParser.urlencoded({extended: true}));
該中間件在請求被代理之前將表單數據轉換為 JSON,這阻止了 PHP 獲取數據。
希望這可以幫助將來可能遇到類似情況的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.