/**
説明: ASP リクエスト オブジェクトを使用するときに注意する必要がある小さな問題 著者: Ci Qinqiang
電子メール: [email protected]
**/
ASP において、Request オブジェクトはクライアントから送信されたデータを取得するための非常に重要なオブジェクトであり、誰もがよく知っています。
それにしても、以下の書き方の違いは何ですか、どう書けばいいのかとよく質問されます。
strMessage = リクエスト("msg")
strMessage = Request.Form("msg")
また、多くの人が書いたコードを見てきましたが、どれも Request("") の方法で書かれています。 もちろん、この書き方に問題はありません。
でもみんなも気をつけたほうがいいよ
Request オブジェクトには、クライアントによって送信されたデータを取得するためのいくつかのコレクションがあります。一般的に使用されるのは、QueryString、Form、および ServerVariables です。
どのような種類のコレクションであっても、Request("") を通じて直接取得できます。ここで問題が発生します。
Get メソッドと Post メソッドは、username=cqq などの同じ変数を送信し、Request("username") を使用します。
取り出したデータはGetから取り出したデータですか、それともPostから取り出したデータですか?
したがって、この点については、Request がこれらのコレクションから順番に QueryString、Form、最後に ServerVariables の順にデータを取得することを考えるべきです。 Request オブジェクトは、これらのコレクション内の変数をこの順序で検索し、一致するものがあれば停止し、残りは無視されます。 したがって、上記の例 Request("username")
実際に取得されるのは、Get メソッドによって送信されたデータです。
したがって、効率を向上させ、無駄な検索時間を削減し、プログラムを標準化するために、Request.Form("username") などの Request 収集メソッドを使用することをお勧めします。
以下はテスト例です。送信後、テストするアドレスの後に ?username=aaa を直接追加できます
。
request("submit")<>"" の場合
Response.Write "直接取得:"& Request("ユーザー名") & "<br>"
Response.Write "Get:" & Request.QueryString("ユーザー名") & "<br>"
Response.Write "Get Post:" & Request.Form("ユーザー名") & "<br>"
次の場合に終了
%>
<フォーム名=form1アクション=""メソッド=ポスト>
<input type=test name="ユーザー名" value="postuser">
<input type=submit name="submit" value="test">
</form>