我有一个简单的表单,在method="GET"
时按预期行事,但在method="POST"
时却没有。
FORM:
<form action="/login" method="POST">
<input type="text" name="user" maxlength="30" value="">
<input type="password" name="pass" maxlength="30" value="">
<input type="hidden" name="sublogin" value="1">
<input type="submit" value="Login" />
</form>
如果我将变量回显到屏幕(var_dump( $_POST )
或var_dump( $_GET )
),当method =&#34; POST&#34;时,我得到一个空数组。当方法=&#34; GET&#34;我得到一个具有相应名称/值对的数组(user,pass,sublogin ...)
要了解的事情:
.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .$ index.php
感谢任何帮助!
答案 0 :(得分:4)
如果“/ login”不存在,并且htaccess重定向(不重写url),则所有POST数据都将丢失。 GET数据被保留,因为它们是URL的一部分。
答案 1 :(得分:1)
这个问题甚至不符合我的想法。
一个类设置在处理错误后销毁$ _POST数组,但无论如何都在破坏我的$ _POST数组。仅在具有PHP 5.3的计算机上发生(警告导致该类行为异常),服务器运行5.2。
谢谢你,Briedis试图提供帮助。对不起,我带你去追逐!
当然,解决方案是编写一种更好的方法来处理该类中的警告,而不允许$ _POST数组被销毁。
答案 2 :(得分:0)
这是一个边缘案例答案,可能有益于未来的用户研究此主题。
在我的情况下,解决方案是修复我在本地php.ini文件中创建的错误配置。为了在开发工作期间运行Imagick图像处理脚本,我已经将设置更改为更自由。
为了尝试将max_post_size从默认值8M增加,我将设置更改为40.问题是没有明确说明单位&#34; 40&#34;提到。未指定时,php.ini使用BYTES作为单位。我添加了&#34; M&#34;单位后缀为&#34; 40&#34;并且$ _POST操作开始按预期工作。
为了将来参考,单位后缀可以是&#34; K&#34;,&#34; M&#34;或&#34; G&#34;,当然没有引号,或者,对于字节,缺席。您可以在PHP手册中阅读这些单元:
https://secure.php.net/manual/en/faq.using.php#faq.using.shorthandbytes