0

2 つのフィールド (ログイン フォーム) を持つ非常に基本的なフォームがあります。変数はスクリプトに投稿されますが (以下を参照)、投稿された変数を確認できません。何が間違っているのかわかりません。誰か助けてもらえますか?

<?php
    add_page_content();
    function add_page_content() {
    $error = true;
    echo '      <div id="page_content">
        <h3>Login</h3>
        <div id="login_form">
            '
        . ($error ? '<p class="text_red">Wrong username and/or password.</p>' : '') . '
            <form action="login.php" method="post" enctype="text/plain">
                <div id="login_fields">
                    <div>
                        <label>Username:</label>
                        <input id="admin_user_input" type="text" name="username" ' . ($error ? ('value="' . htmlspecialchars($_POST["username"]) . '"') : '') . '>
                    </div>
                    <div>
                        <label>Password:</label>
                        <input id="admin_pass_input" type="password" name="password">
                    </div>
                </div>
                <input id="login_submit_button" type="submit" name="submit" value="Go">
            </form>
            ' . 'username: ' . $_POST["username"] . '
        </div>
    </div>';
}
?>

編集:おっと、何が起こったのかわかりません。投稿の半分を失いました...ここで再入力します:

httpfox アドオンを使用してリクエストの post vars をトレースすると、次のようになります。-「user」をユーザー名フィールドに入力し、「pass」をパスワードに入力するとします。生:

username=user
password=pass
submit=Go

かわいい:

Parameter         Value
username          userpassword

フィードバックありがとうございます!

4

2 に答える 2

2

あなたの問題はこれです:

enctype="text/plain"

PHP はプレーン テキストの送信を解析しません。それを取り出すので、代わりにデフォルト ( application/x-www-form-urlencoded) が使用されます。

text/plain 形式を使用するペイロードは、人間が判読できるように意図されています。形式があいまいであるため、それらはコンピューターによって確実に解釈されません(たとえば、値のリテラル改行と値の末尾の改行を区別する方法はありません)。

http://www.w3.org/TR/html5/forms.html#text/plain-encoding-algorithm

于 2013-09-13T22:42:42.063 に答える
0

enctype を削除します (デフォルトでは application/x-www-form-urlencoded )

于 2013-09-13T23:36:09.960 に答える