为什么在Apache下的PHP5中$ _POST为空?

时间:2009-08-18 20:50:53

标签: php forms apache

在文件http://example.com/path/foo.php中,我有表格(格式已删除):

<form action="/path/foo.php" method="post">
Email: <input type="text" name="email">
Password: <input type="password" name="password">
<input type="checkbox" name="remember" checked="checked"> Remember me
<input type="submit" value="Log In">
</form>

有时用户无法登录:报告的行为是他们尝试登录并显示新的登录屏幕。

当我能够复制问题时,似乎$ _POST为空:$ _POST ['email']和$ _POST ['password']缺少提交的值,以下只记录“##” :

error_log("#" . file_get_contents("php://input") . "#");

我不明白为什么这会是由于重定向造成的;它不能是/ directory - &gt;的情况。 / directory /,通过Apache的相关VirtualHost部分看起来很少重写,而不是任何应该影响该文件的部分。 (并且显示的URL与表单中引用的URL相同。)

该系统已经存在了几个月,今天首先向我报告了这个问题。

我正在计划新兴的更新的Apache和PHP(5),以防有可能通过更新版本改进的侥幸。但在填写表格后,我会非常有兴趣听到其他方式我可能会得到一个空的$ _POST。

思想?

3 个答案:

答案 0 :(得分:0)

如果您对Lucky说,您可以确认这是一个FF问题,然后让您的用户禁用所有插件/插件,然后重试。可能是他们在那里有一些冲突。

答案 1 :(得分:0)

$ _REQUEST变量中的数据是否可用?我知道它不是特定于POST的,但它应该填充发布的数据。

答案 2 :(得分:-1)

您是否启用了'register_globals'?这是一个可怕的安全漏洞,会导致您的POSTed数据被分配到$ email和$ password而不是$ _POST数组中的。

如果启用此选项,则禁用此选项将导致脚本正常运行并消除潜在的安全威胁。