ブラウザ クライアントが forms.submit() を呼び出すと、http ポスト リクエストがサーバーに送信されます。
ここで、フォーム内に複数のキー => 値のペアが存在する可能性があるため、私の質問は次のとおりです。サーバーは、リクエスト文字列から使用するペアをどのように認識しますか?
ありがとう!
ブラウザ クライアントが forms.submit() を呼び出すと、http ポスト リクエストがサーバーに送信されます。
ここで、フォーム内に複数のキー => 値のペアが存在する可能性があるため、私の質問は次のとおりです。サーバーは、リクエスト文字列から使用するペアをどのように認識しますか?
ありがとう!
投稿要求は、一般的な方法ではサーバーに送信されませんが、具体的にはサーバー上の 1 つの .php (または .asp など) ファイルに送信されます。このファイルには、次のコードが含まれている必要があります。
目的のキーが受信されたことを確認します
各キー -> 値のペアに対して基本的な検証を実行します
ユーザーが送信したデータをさまざまなセキュリティ機能に送信して、SQL インジェクション攻撃などから保護します
先に進み、送信された 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';
}