当前位置:  开发笔记 > 编程语言 > 正文

表单提交时,php $ _POST数组为空

如何解决《表单提交时,php$_POST数组为空》经验,为你挑选了6个好方法。

我有一个自定义的CMS我已经构建,在我的开发盒(Ubuntu/PHP5 +/MySQL5 +)上完美运行.

我只是将它移动到我的客户端的生产框中,现在所有表单提交都显示为空的$ _POST数组.

我找到了一个技巧来验证数据实际上正在使用file_get_contents('php://input');并且数据在那里显示正常 - $_POST/ $_REQUEST数组总是为空.

我还通过firebug(application/x-www-form-urlencoded; charset=utf-8)验证了内容类型标题是正确的.

无论表单是通过AJAX提交还是通过常规表单提交,都会发生此问题.

任何帮助是极大的赞赏!



1> tiltem..:

我知道这个问题是关于通过表单发布的POST,但是在使用JSON内容类型进行POST时寻找类似问题的答案.找到答案并希望分享它,因为它花了我很多时间.

当使用JSON内容类型时,$ _POST数组将不会填充(我认为只有多部分表单)

以下是纠正问题的方法:

$rest_json = file_get_contents("php://input");
$_POST = json_decode($rest_json, true);

希望这有助于某人!



2> 小智..:

这是另一个可能的原因 - 我的表单是在没有WWW的情况下提交到domain.com.我已经设置了一个自动重定向来添加"WWW".$ _POST数组在此过程中被清空.所以我要做的就是提交给www.domain.com


该死的,我的`htaccess`中的网址重写是导致POST失败的原因.我自动将斜杠附加到所有url,但在代码作为ACTION我使用的是没有斜线的url.你的答案有所帮助,因为我从没想过要检查.htaccess.+1

3> 小智..:

我遇到了类似的问题.原来是一个简单的修复.以我的形式

其中directory是...目录的名称.我的POST阵列完全是空的.当我在浏览器中查看网址时,结果显示为正斜杠.

在我的操作结束时添加正斜杠就可以了 -

我的$ _POST数组又满了!



4> MrMage..:

确保在php.ini中:

track_vars (它仅适用于非常旧的PHP版本)设置为 On

variables_order 包含这封信 P

post_max_size 设置为合理的值(例如8 MB)

(如果使用suhosin补丁)suhosin.post.max_vars并且suhosin.request.max_vars足够大.

我想我的第二个建议将解决你的问题.



5> 小智..:

我发现,当从HTTP发布到HTTPS时,它们为$_POST空。这是在测试表单时发生的,但是花了我一段时间才意识到。



6> 小智..:

我遇到了一个类似但略有不同的问题,花了2天时间来理解这个问题.

在我的情况下,POST数组也是空的.

然后用file_get_contents('php:// input')检查; 这也是空的.

后来我发现浏览器没有要求确认重新提交表单数据如果我刷新POST提交后加载的页面.这是直接刷新页面.但是,当我将表单URL更改为另一个时,它正确地传递了POST,并在尝试刷新页面时要求重新提交数据.

然后我检查了实际URL的错误.URL没有错,但它指向URL中没有index.php的文件夹,我在index.php检查POST.

在这里我怀疑从/到/index.php的重定向导致POST数据丢失并测试URL并将index.php附加到URL.

工作了.

在这里发布,所以有人会发现它很有帮助.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有