2

编辑- 我已经关闭了这篇文章,因为我只能得出结论,服务器上当前的 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) { } 

这很烦人。

有谁知道为什么?

编辑

存在 url 重写,请参见以下内容(来自 .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]

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

4

2 回答 2

4

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

您的 PHP 程序确实/login/index.php如此,当浏览器向/login服务器发出POST 请求时,会以301 Redirectto响应/login/

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

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

于 2013-03-20T09:58:42.493 回答
1

改变这个

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

<form action="http://www.domain.com/login.php" method="POST">
于 2013-03-20T09:55:10.477 回答