-2

ブラウザ クライアントが forms.submit() を呼び出すと、http ポスト リクエストがサーバーに送信されます。

ここで、フォーム内に複数のキー => 値のペアが存在する可能性があるため、私の質問は次のとおりです。サーバーは、リクエスト文字列から使用するペアをどのように認識しますか?

ありがとう!

4

1 に答える 1

0

投稿要求は、一般的な方法ではサーバーに送信されませんが、具体的にはサーバー上の 1 つの .php (または .asp など) ファイルに送信されます。このファイルには、次のコードが含まれている必要があります。

  1. 目的のキーが受信されたことを確認します

  2. 各キー -> 値のペアに対して基本的な検証を実行します

  3. ユーザーが送信したデータをさまざまなセキュリティ機能に送信して、SQL インジェクション攻撃などから保護します

  4. 先に進み、送信された key->value ペアを使用します。たとえば、呼び出されたキーから値を取得し、呼び出さusernameれた別のキーから値を取得し、passwordそれらを使用してデータベースにクエリを実行し、このユーザーに次のページを表示する必要があるかどうかを確認します。

最後の質問に答えるために、プログラマーがシステムの両側を書いたので、サーバーはリクエスト文字列からどのペアを使用するかを知っています。したがって、プログラマーは、(HTML 内の) ユーザー名入力フィールドの NAME 要素を一致させるように注意し、送信されたユーザー名を探すときにその特定のキー名から値を取得する必要があります。

おそらく、例が役立つでしょう。

オンザカフ、テストされていない例:

メインページ: index.php

<form id="myForm" action="dologin.php" method="POST">
    Username: <br>
    <input type="text" name="dausername"><br>
    <br>
    Password:<br>
    <input type="text" name="yerpass">
    <br>
    <input type="submit" name="do_submit">
</form>

dologin.php ページ:

$uname = $_POST['dausername'];
$pword = $_POST['yerpass'];

$uname = security_check($uname);
$pword = security_check($pword);

$q = "SELECT * FROM `users` WHERE `username` = '$uname'";
$result = mysql_query($q) or die(mysql_error());
$r = mysql_result($result, 0);

if (!empty($r)) {
    //Now, check that the password matches
    if ($pword == $r['password']) {
        //The user has passed the security check (i.e. has "logged in") and can now see the secret stuff
        echo 'Welcome to our Private Server<br />';
        echo 'The pass code for our door is 4321';
    }
}else{
    echo 'Sorry, you must login first';
}
于 2013-05-30T22:39:09.753 に答える