ASPでは、リクエストオブジェクトはクライアントが提出したデータを取得するための非常に重要なオブジェクトであり、誰もがそれに非常に精通しています。それにもかかわらず、人々はしばしば次の執筆方法が何であるかを私に尋ねます、そして、私はそれらをどのように書くべきですか?
strmessage = request( "msg")
strmessage = request.form( "msg")
さらに、私は多くの人々によって書かれたコードも見ましたが、そのすべてはリクエスト( "")で書かれています。もちろん、この執筆には何の問題もありません。
しかし、誰もが注意を払うべきです
リクエストオブジェクトには、クライアントが送信したデータを取得するためのいくつかのコレクションがあります。一般に、クエリストリング、フォーム、サーバーバリスブルが一般的に使用されます。
どのコレクションが実際にリクエスト( "")を通じて直接取得されていても、ここには問題があります。
GETメソッドとPOSTメソッドは、username = cqqなどの同じ変数を送信し、リクエスト( "username")を使用します
データはgetまたはpostから取得されますか?
したがって、問題がこの時点に来たら、これらのセットからデータを取得するリクエストが正面から背面にあるシーケンスがあると考えるべきです
順序は、クエリストリング、フォーム、そして最後にサーバーバリスです。リクエストオブジェクトはこの順序で検索されます
これらのセットに変数がある場合、それらは中止され、その後の変数は無視されます。したがって、上記の例リクエスト( "username")
取得されたのは、実際にはGETメソッドによって提出されたデータです。
したがって、効率を改善し、不必要な検索時間を短縮するため、およびプログラムの仕様については、リクエストを使用することをお勧めします。
request.form( "username")など、この方法はより優れています。
以下はテストの例です。送信後、テストするためにアドレスにusername = aaaを直接追加できます。
<%
ifrequest( "submit")<> "" then
Response.write "direct:"&request( "username")& "<br>"
Response.write "get:"&request.querystring( "username")& "<br>"
Response.Write "Take Post:"&request.form( "username")& "<br>"
endif
%>
<formname = form1action = "" method = post>
<inputtype = testname = "username" value = "posuser">
<inputtype = submitname = "submit" value = "test">
</form>