php.ini post,关于config:php.ini $ _POST为未知原因为空(localhost)

我通常会自动上传脚本并在远程主机上对其进行测试,但是几天前,我分别安装了魔术三重奏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

Show

insert.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) { }。

有什么线索吗?

filterFunctions.php文件有什么作用?

$_POST是数组吗?我不知道这一点。

您的postmax_size值是多少?

您的表单中有两次name,但它仍会显示。在包含行之前尝试var_dump($_POST)和var_dump($_REQUEST)。

@JiriHrazdil它将过滤和清理字符串,但我仍然没有编写它(我什至没有调用该函数),因为由于这个"愚蠢"的问题而停止了,我不知道它来自哪里

@MuhammadAsif是10M,我将其设置为128M

php.ini中带注释的指令无效。但是您不必从配置文件和文档中找出指令。可以使用ini_get()或(更简单)phpinfo()检索运行时值。您也不需要猜测$_POST包含什么,可以使用var_dump()检查任何PHP变量。

@lvaroGonzlez当然,我实际上使用了var_dump(),对于所有$ _POST,它都是false

@aynber您说得对,这只是一个复制粘贴错误;)我尝试了var_dump($_POST),但显示了一个空数组(0)。 var_dump($_REQUEST)相同

关闭form标记的末尾缺少>。不知道这是否是原因。另外,您是否签入开发工具以确保该请求作为POST请求发送?如果执行echo $_SERVER[REQUEST_METHOD],会得到什么?应该是POST。

@KodosJohnson另一个复制粘贴错误,将对其进行编辑。你什么意思?如果我在中指定了method="post",它应该以POST的形式发送数据,并且使用$_POST我总是能够得到它(现在在本地主机上!)。可能我不明白你的意思

var_dump($_POST),false或array(0)显示什么? enable_post_data_reading怎么样?您可以编辑问题并在此处显示信息吗?

@lvaroGonzlez我设置了enable_post_data_reading = On,但它没有解决任何问题,这就是为什么我在Stack上问过这个;而var_dump($_POST)显示array(0) { }。我使用echo file_get_contents(php:input);编辑了问题,可能您可以帮助我

尝试设定

php_value post_max_size = 256M

或检查POST是否有效

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

我将post_max_size设置为256,但没有任何变化,而echo file_get_contents(php:input);不产生任何输出。这意味着它不起作用?

HTTP POST数据通常填充在$ _POST中,php:// input通常包含PUT数据。

好吧,有个好消息!我再次尝试使用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--包含所有插入数据,但紧接在它之后输出:Undefined index: XXX

@brigo不知何故我错过了线程。你设法得到了吗?

@SwatantraK幸运的是您回答了!不幸的是,我没有解决问题,因为我不是从哪里来的,我想您是一个能够理解它的人。我还尝试再次下载php7,甚至用php5代替它,但问题始终存在。您是否有任何线索为什么使用file_get_contents(php:input);似乎已经传递了POST数据,但是却没有使用$_POST?

您有两个名称为name =" name"的输入字段,因此您在php脚本中同时引用了这两个字段,因此请从中删除其中一个字段,并为表单定义type属性并分配值multipart。 希望这可以工作。

您说得对,但加倍的名称只是一个复制粘贴错误,我编辑了问题。"多值分配"是什么意思?分配空白value=""?

我的意思是在表单元素中使用enctype =" multipart / form-data"属性。

不幸的是,它没有解决问题,但是我现在将在我使用POST方法时使用它,谢谢;)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值