簡體   English   中英

使用 x-www-form-urlencoded 時 PHP 不填充 $_POST

[英]PHP not populating $_POST when using x-www-form-urlencoded

PHP 5.4.17

我有一個簡單的 html 表單,看起來像這樣:

索引.html

<form method="POST" action="/addnewaccount.php">
    <input type="text" name="firstname" />
    <button type="submit">Submit</button>
</form>

添加新帳戶.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"

如果我將表單的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM