この特集のトップページへ
Chapter 8:プレゼンテーション層の構築

8.2.1 基本的なASPプログラム
●ユーザーからの入力

○どのボタンが押されたかを判定する
 多くの場合,1つのフォームに1つのボタン(<INPUT TYPE="SUBMIT">)しか配置しない。しかし,場合によっては複数のボタンを配置したいこともある。その場合,スクリプト側でどのボタンが押されたのかを判定する必要が生じる。

 複数のボタンを配置したい場合には,そのそれぞれのボタンに対して,“NAME="ボタンの名前"”という属性を指定する。たとえば,次のような具合である。

<INPUT TYPE="SUBMIT"
 NAME="BUTTON1"
 VALUE="ボタン1">
<INPUT TYPE="SUBMIT"
 NAME="BUTTON2"
 VALUE="ボタン2>

 上の例では,[ボタン1]というラベルを備えたボタンと[ボタン2]というラベルを備えたボタンの2つを用意し,前者にはBUTTON1という名前を,後者にはBUTTON2という名前を付けている。

 このとき,もし[ボタン1]が押されたならば,Request("BUTTON1")の値がEMPTY値以外の値に,[ボタン2]が押されたならばRequest("BUTTON2")の値がEMPTY値以外の値になる。よって,次のようにすれば,どちらのボタンが押されたのかを判定できる。


<%
If Not IsEmpty(Request("BUTTON1")) Then
  ' [ボタン1]が押された
End If
If Not IsEmpty(Request("BUTTON2")) Then
  ' [ボタン2]が押された
End If
%>
○環境変数の取得
 RequsetオブジェクトのServerVariablesプロパティを使うと,IISの環境変数を取得することができる。定義されている環境変数には,REMOTE_USER(呼び出したユーザー名),REMOTE_ADDR(呼び出したクライアントのIPアドレス)などがある。全リストはIISのオンラインヘルプ(http://localhost/IISHelp/)に記述されているので,そちらを参照してほしい。

 たとえば,次のようにすると,呼び出したクライアントのIPアドレスを取得できる。

<%= Request.ServerVariables("REMOTE_ADDR") %>

 デフォルトで定義されている環境変数以外に,“HTTP_ヘッダ名”を指定すると,Webブラウザから送信されたヘッダ情報が得られる。ヘッダ名の部分には,取得したいHTTPヘッダの名前をすべて大文字にし,“-”(マイナス)を“_”(アンダースコア)に変更して指定する。Webブラウザから送信してくる主なヘッダ情報には,Table 8-2に示すものがある。たとえば,Accept-Languageヘッダを取得したいのであれば,“Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")”と指定する。

Table 8-2 Webブラウザが送信する代表的なヘッダ情報
ヘッダ名解説
Accept受信できるコンテンツタイプ
Accept-Languate受信できる言語
Connectionコネクションの状態
User-AgentWebブラウザの種類
Cookieクッキー情報

 環境変数を調べることで,クライアントの種類に応じて,返すコンテンツを変更するWebアプリケーションを構築することができる。たとえば,HTTP_USER_AGENTを使ってWebブラウザの種類を取得し,条件に応じて出力内容を変更することで,Internet Explorerでアクセスされたときと,Netscape Navigatorでアクセスされたときとで,返すコンテンツを変更することができるのである。最近は,HTTP_USER_AGENTを調べて,携帯電話からアクセスされた場合には,HTMLではなくCHTMLやWAPのコンテンツを返すようにすることも多い。

 なお,List 8-17のように,For EachNext構文を用いてResponse.ServerVariablesコレクションをループ処理することで,全環境変数の一覧が得られる(Fig.8-40)。一覧を取得することで,どのようなWebブラウザがどのような環境変数を送信しているのかを調べることができるだろう。

Fig.8-40 List 8-17の実行結果
fig8_40

Prev 18/43 Next