ASP レクチャー 2: フォームを通じて送信されたデータの読み取り
著者:Eve Cole
更新時間:2009-05-30 19:58:19
ASP を学習する上で最も重要なことは、ASP の 6 つの組み込みオブジェクトをマスターすることです。実際、前回の講義で、Response オブジェクト (本当ですか? 間違えました!) と、Response オブジェクトで最もよく使用される Write メソッド、Redirect メソッド、および Expires プロパティについてすでに学習しました。オブジェクト、メソッド、プロパティ、コレクション、イベントの概念 (私はどれも知りません!) を見たときに、これまでそれらに触れたことがないのであれば、あなたは賢明で、これらの概念など気にしません。私の見解では、それは単なる始まりに過ぎず、コピーすることです。例を通して Request オブジェクトについて学び続けましょう。理解を深めるために、これらのプログラムを実行して出力結果を確認してください。
1. Request.ServerVariables を使用して環境変数を取得します。この部分は非常に簡単ですが、取得する内容は非常に重要です。次の例を参照してください。
<%@ 言語=VBScript %>
<HTML><本文>
<% 'wuf8.asp
Response.Write "ASP ファイルを実行するパス: " &_
Request.ServerVariables("スクリプト名") & "<Br>"
Response.Write "コンテンツのデータ長を返します: " &_
Request.ServerVariables("Content_Length") & "<Br>"
Response.Write "顧客の IP アドレスを返します: " &_
Request.ServerVariables("Remote_Addr") & "<Br>"
Response.Write "ブラウザ名: " &_
Request.ServerVariables("HTTP_USER_AGENT") & "<Br>"
Response.Write "ホームページの実際の物理パスに戻ります: " &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
%>
<tablecolspan=8 cellpadding=5 border=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">環境変数名</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">コンテンツ</font></td>
</tr>
<tr>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
結果1
</font></td>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
結果2
</font></td></tr>
</テーブル>
</BODY></HTML>
これで、前の講義の wuf2.asp ルーチンがいかに簡単であるかがわかるはずです。
注: このプログラムの後半の HTML マークアップは、純粋に次の例の準備のためのものなので、驚かないでください。では、他にはどのような環境変数があるのでしょうか?次の例を実行するとわかります (このプログラムでは一部のコードが削除されています。理解しやすいように、私のサイトからソース プログラムをダウンロードするのが最善です)。
<%@ 言語=VBScript %>
<% 'wuf9.asp
明示的なオプション
ディム SV
%>
<HTML><本文>
<tablecolspan=8 cellpadding=5 border=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">環境変数名</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">結果</font></td>
</tr>
<%
Request.ServerVariables の各 Sv について
応答。「<tr>」を書き込みます。
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
応答.書き込みSV
応答。「</font></td>」と書き込みます。
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
応答.書き込み要求.サーバー変数(Sv)
応答。「</font></td></tr>」と書き込みます。
次
%>
</テーブル>
</BODY></HTML>
ここでは、コレクション内のすべての要素をリストするために For...Each ループが使用されています。後半が理解できない場合は、wuf8.asp を比較し、実行結果を見て、よく理解してください (どういう態度ですか?)。
2. フォームを通じてサーバーにデータを送信します (これは、サーバーがクライアントによって送信されたデータを読み取る方法としても理解できます)
ホームページで作業したことがある場合は、多くのホームページで通常、ユーザーがデータを入力し、「送信」ボタンを通じてデータを送信できるようにフォーム フォームを使用していることをご存知でしょう。 From フォームの「メソッド」には、POST と GET という 2 つの主なメソッドがあります。「アクション」の後には、通常、.cgi、.pl、または .asp ファイルが指定されます。今日学習するのは、この .asp の記述方法です。ファイル。
(1) POSTメソッドでデータを送信する場合、Request.Formを使用してデータを読み込みます。
まず、ユーザーがデータを入力できるように次の wuf10.htm ファイルを編集します。
<html>
<body bgcolor="#FFFFFF">
<form method="post" action="wuf11.asp">
名前: <input type="text" name="あなたの名前"><br>
性別: <select name="gender">
<オプション>男性</オプション>
<オプション>女性</オプション>
</選択> <br>
メッセージ: <textarea name="message">こんにちは!
複数行テキストの処理に注意してください</textarea> <br>
趣味 (Ctrl キーを押しながら複数選択します):
<select name="hobby" multiple size="4">
<オプション>コンピュータ</オプション>
<option>ショッピング</option>
<オプション>映画</オプション>
<オプション>読み取り</オプション>
</選択> <br>
<input type="submit" name="submit" value="submit">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
次に、データを収集するために wuf10.htm が使用する必要があるファイル wuf11.asp を作成します。
<%@ 言語=VBScript %>
<% 'wuf11.asp
明示的なオプション
応答.有効期限=0
Dim StrName、StrGender、StrM、StrMsg
StrName = Trim(Request.Form("yourname")) 'Trim 関数は先頭と末尾のスペースを削除するために使用されます
StrGender = Trim(Request.Form("性別"))
StrM = Trim(Request.Form("メッセージ"))
StrMsg = Replace(StrM,vbcrlf,"<Br>" & vbcrlf)
' vbcrlf は、キャリッジ リターンとライン フィードの組み合わせに相当します。 Replace 関数については、文字列 StrM 内の vbcrlf を "<Br>" & vbcrlf に置き換える機能です (この vbcrlf の用途について考えてください。出力ファイルの HTML ソース コードを見ると理解できます)。詳細については、VBScript のヘルプを参照してください。
%>
<HTML><本文>
名前: <%= StrName%><Br><Br>
性別: <%= StrGender%><Br><Br>
メッセージ: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
実際、「送信」ボタンの値も渡されます: <Br>
<%= Request.Form("送信")%><Br><Br>
<% 'まず上記を理解してから、興味がある場合は複数のオプションを読む方法を見てください。
Response.Write "選択された趣味の総数:" & Request.Form("hobby").Count & "<Br>"
ディムI
I = 1 の場合、Request.Form("hobby").Count に
Response.Write Request.Form("趣味")(I) & "<Br>"
次
%>
</BODY></HTML>
この例では、理解を容易にするために 2 つのプログラムを使用しています。実際には、1 つのプログラムだけを使用することもできます。興味がある場合は、環境変数の理解を深めるのに役立つ次のルーチン wuf12.asp を参照してください。
<%@ 言語=VBScript %>
<% 'wuf12.asp
明示的なオプション
応答.有効期限=0
Dim StrName、StrGender、StrM、StrMsg
If Request.ServerVariables("Content_Length") <> 0 then
'データ送信後は長さが0にならないため、以下のステートメントを実行して結果を表示します
'以下の部分は実際には wuf11.asp からコピーしたものです
StrName = Trim(Request.Form("あなたの名前"))
StrGender = Trim(Request.Form("性別"))
StrM = Trim(Request.Form("メッセージ"))
StrMsg = Replace(StrM,vbcrlf,"<Br>" & vbcrlf)
%>
<HTML><本文>
名前: <%= StrName%><Br><Br>
性別: <%= StrGender%><Br><Br>
メッセージ: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
<%
Response.Write "選択された趣味の総数:" & Request.Form("hobby").Count & "<Br>"
ディムI
I = 1 の場合、Request.Form("hobby").Count に
Response.Write Request.Form("趣味")(I) & "<Br>"
次
%>
</BODY></HTML>
<%
それ以外
'初めてページが読み込まれるときはデータが送信されていないため、前の部分は実行されず、ここから始まります
' これが、<HTML></HTML> のペアが 2 つある理由です。
' 以下の wuf10.htm をコピーしてください。
'<form method="post" action="wuf11.asp"> は環境変数に置き換えられていますが、まったく同じです
Response.Write "結果を見てください: " & Request.ServerVariables("Script_name") & "<Br>"
%>
<HTML><本文>
<form method="post" action="<%= Request.ServerVariables("Script_name")%>">
名前: <input type="text" name="あなたの名前"><br>
性別: <select name="gender">
<オプション>男性</オプション>
<オプション>女性</オプション>
</選択> <br>
メッセージ: <textarea name="message">こんにちは!
複数行テキストの処理に注意してください</textarea> <br>
趣味 (Ctrl キーを押しながら複数選択します):
<select name="hobby" multiple size="4">
<オプション>コンピュータ</オプション>
<option>ショッピング</option>
<オプション>映画</オプション>
<オプション>読み取り</オプション>
</選択> <br>
<input type="submit" name="submit" value="submit">
<input type="reset" name="Submit2" value="Reset">
</form>
</BODY></HTML>
<%End If%>
(2) GETメソッドでデータを送信する場合は、Request.Querystringを使用してデータを読み込みます。
まず、ユーザーがデータを入力できるように次の wuf13.htm ファイルを編集します。
<html>
<body bgcolor="#FFFFFF">
<form method="get" action="wuf14.asp">
英語名: <input type="text" name="Ename"> <br>
中国語名: <input type="text" name="Cname"><br>
性別: <select name="gender">
<オプション>男性</オプション>
<オプション>女性</オプション>
</選択> <br>
<input type="submit" name="submit" value="submit">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
次に、データを収集するために wuf13.htm が使用する必要があるファイル wuf14.asp を作成します。
<%@ 言語=VBScript %>
<% 'wuf14.asp
明示的なオプション
応答.有効期限=0
Dim StrCname、StrEname、StrGender
StrEname = Trim(Request.QueryString("Ename")) 'Trim 関数は先頭と末尾のスペースを削除するために使用されます
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("性別"))
%>
<HTML><本文>
英語名: <%= StrEname%><Br><Br>
中国語名: <%= StrCname%><Br><Br>
性別: <%= StrGender%><Br><Br>
送信された文字列を見てください: <Br>
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
このプログラムをよりよく理解するには、まずブラウザでルーチン wuf13.htm の効果を試し、出力結果を確認してください。アドレス バーの長い文字列に見覚えがあることがわかります。 Yahooで検索するとほぼ同じです。このとき、アドレスバーに「http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=雌」と直接入力してみましたが、同じ結果が得られます。このように見ると、wuf13.htm の結果は次のようなパラメータを持つリンクを取得することになります。 Request.QueryString は、http:// アドレスの追加パラメーターから各データを読み取ります。
実際、「送信」ボタンが押されると、データ転送の目的を達成するために、クエリ文字列 (入力データ) がパラメータの形式で URL アドレスに追加されます (各パラメータは「&」で区切られます)。同時に、ブラウザに表示されるクエリ文字列には中国語はありませんが、パーセント記号を含む認識できない文字化けが発生することに注意してください。これはエンコードされているためです。最後に、前と同様に、これら 2 つのプログラムを 1 つのプログラムにマージすることもできます (ルーチン wuf15.asp、私のサイトからダウンロードする必要があります)。
いくつかのメモ:
1. POST メソッドを使用してデータを送信する場合は、Request.ServerVariables("Content_Length")>0 になります。
GET メソッドを使用してデータを送信する場合は、Request.ServerVariables("Query_String") <> "" となります。
2. 原理を理解した後は、同じ ASP ファイル内で Request.Form と Request.QueryString を混在させることができます。
3. フォーム内に複数のボタンがある場合、ユーザーがどのボタンを押したかをどのように判断すればよいでしょうか?注意してみると、ルーチン wuf11.asp の中に「送信」ボタンの値も送信されるという文があり、wuf13.htm で生成されるクエリ文字列にも同様の値が見つかります。注意: 押されたボタンの値のみが送信され、他のボタンの値は「」が判断の基準になります (「中国計画ニュース」InfoWeb Web サイトに同様の記事があります)。