2013-03-20 64 views
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 recieving任何的任何数据。就在页面顶部我倾倒:

var_dump($_POST); 

,我也得到:

​​

这是很烦人的。

任何人都知道为什么?

编辑

有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] 

,但我不能看到什么不对,当我们设置它,它是工作正常吗?看起来最近有什么改变了(它不是我的服务器)?但是还有什么可以阻碍的?

+0

您是否在表单发布时添加了代码...? – 2013-03-20 09:55:34

+2

行动的路径是否正确? – HamZa 2013-03-20 09:55:43

+0

检查您的服务器设置.. – 2013-03-20 09:56:01

回答

1

改变这种

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

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

如果OP使用url'rewrite',该怎么办? – 2013-03-20 09:56:27

+1

如果OP没有? – George 2013-03-20 09:56:55

+6

如果我们询问OP而不是猜测,该怎么办? – 2013-03-20 09:57:16

4

在没有看到真正的URL,就很难确定,但一个可能的解释是:

你的PHP程序真的是在/login/index.php所以当浏览器发出POST请求到/login时,服务器会以301 Redirect来响应/login/

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

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

+0

请参阅上面的重定向.htaccess - login.php页面引用自身,它位于根目录中。 – Chud37 2013-03-20 10:16:47

+0

尾随斜线没有差别:( – Chud37 2013-03-20 10:19:39

+1

@ Chud37它是否工作,当你设置为你的'login.php',没有'mod_rewrite'的直接路径? – 2013-03-20 10:25:39