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 を確認しないと確信が持てませんが、次のような説明が考えられます。

/login/index.phpブラウザがサーバーに POST リクエストを送信すると、PHP プログラムは実際にto/loginで応答します。301 Redirect/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 に答える