没有$ _POST数据?

时间:2013-03-20 09:53:43

标签: php post

编辑 - 我已经关闭了这篇文章,因为我只能得出结论,服务器上当前的PHP版本存在问题。 PHP接受$ _GET变量没问题,但任何接收/发送$ _POST变量的尝试都完全失败。

我有一个愚蠢的小形式:

<form action="http://www.domain.com/login" method="POST">
    <input type="hidden" name="loginPage" value="login">
    <table class="login">   
        <tr><td>Email Address</td><td><input type="text" class="txt" name="usr"></td></tr>
        <tr><td>Password</td><td><input type="password" class="txt" name="psw"></td></tr>
        <tr><td colspan=2><input type="submit" class="submit right" value="Log in"></td></tr>
    </table>
</form>

我在$ _POST中没有收到任何数据。在页面顶部我转储:

var_dump($_POST);

我得到了:

array(0) { } 

这非常烦人。

任何人都知道为什么?

修改

有网址重写,请参阅以下内容(来自.HTACCESS):

Options +FollowSymlinks
RewriteEngine on
RewriteOptions MaxRedirects=10

AddType "text/html; charset=UTF-8" html
AddType "text/plain; charset=UTF-8" txt

RewriteRule ^login$ "login.php" [NC]
RewriteRule ^login/$ "login.php" [NC]

但是我看不出有什么问题,当我们设置它时,它工作正常吗?看起来最近发生了一些变化(它不是我的服务器)?但还有什么可能阻碍呢?

2 个答案:

答案 0 :(得分:4)

如果没有看到真正的网址,很难确定,但可能的解释是:

您的PHP程序确实在/login/index.php,因此当浏览器向/login发出POST请求时,服务器会以301 Redirect回复/login/

这会导致浏览器向/login/发出GET请求,而$_POST将为空。

如果是这种情况,解决方案是使用action="http://example.com/login/"(最后加/)。

答案 1 :(得分:1)

更改此

<form action="http://www.domain.com/login" method="POST">

<form action="http://www.domain.com/login.php" method="POST">