php.ini $ _POST因为未知原因而空(localhost)

时间:2016-11-16 16:56:04

标签: php config

我通常会自动上传脚本并在远程主机上测试它们,但是前几天我独立安装了魔法三重奏Apache,PHP和MySQL,以便更快地测试小问题。今天它发现$ _POST数组是完全空的。它是我正在测试的基本形式,它完美地适用于远程主机,所以我检查了php.ini文件。我发现enable_post_data_reading已设置为关闭并进行了评论(尽管文档说它默认启用)。我认为那是问题,但没有。我重新启动了Apache甚至笔记本,但$ _POST数组仍为空,输出Notice: Undefined index: name in C:\Users\Marco\Proj\untitled\insert.php on line 3。 有人有任何建议吗? (我只传递字符串,所以问题甚至不是post_max_size选项) 谢谢!

虽然它无用我反正发布代码

form.html

<form action="insert.php" method="post">
  <input type="text" name="name" placeholder="name" style="display:block" />
  <input type="text" name="code" value="" placeholder="code" style="display:block" />
  <input type="text" name="price" placeholder="price" style="display:block" />
  <label>Show</label><input type="checkbox" name="show" value="checked" />
  <input type="submit" value="inserisci" style="display: block" />
</form>

insert.php

<?php
include "filterFunctions.php";
$data = array("name" => $_POST["name"],
              "code" => $_POST["code"],
              "price" => $_POST["price"],
              "checkbox" => $_POST["show"]);
print_r($_POST);

[编辑] 按照 Swatantra K 的建议,我检查了POST是否使用echo file_get_contents('php://input');,这就是它显示的内容:

------WebKitFormBoundarysqxwAAdf3E55NZUK Content-Disposition: form-data; name="name" Marco 
------WebKitFormBoundarysqxwAAdf3E55NZUK Content-Disposition: form-data; name="code" 35DW 
------WebKitFormBoundarysqxwAAdf3E55NZUK Content-Disposition: form-data; name="price" 99,9 
------WebKitFormBoundarysqxwAAdf3E55NZUK Content-Disposition: form-data; name="show" checked 
------WebKitFormBoundarysqxwAAdf3E55NZUK-- 

Notice: Undefined index: name in C:\Users\Marco\Proj\untitled\insert.php on line 4
Notice: Undefined index: code in C:\Users\Marco\Proj\untitled\insert.php on line 5
Notice: Undefined index: price in C:\Users\Marco\Proj\untitled\insert.php on line 6
Notice: Undefined index: show in C:\Users\Marco\Proj\untitled\insert.php on line 7
Array ( )

我想,这意味着它有效并且插入的值存在,但我仍然无法弄清楚问题及其解决方案是什么。另外,因为var_dump($_POST);仍显示array(0) { }。 任何线索?

2 个答案:

答案 0 :(得分:1)

尝试设置

php_value post_max_size = 256M

或检查POST是否有效

echo file_get_contents('php://input');

答案 1 :(得分:0)

你有两个带有name =“name”的输入字段,所以你在php脚本中引用这两个字段,所以从中删除一个,并为form定义type属性并赋值multipart。希望这可行。