2013-03-20 61 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