情報処理技術2000年前期
第8回 SSIの仕組みと組み込み、フォームの作成とその処理

2000/6/15


SSI(Server Side Include)

サーバーに登録したWebページのファイル、つまりHTMLファイルがあるとします。いっぱんには、クライアントであるWebブラウザが、そのファイルを指定したとき、Webサーバーは少しだけ情報を付加しますが、そのファイルの内容をそのままクライアントに送り込みます。送り込まれたクライアントは、そこに記述された内容にしたがって、ページを構成し、見えるようにするという具合です。

しかしながら、そうなると、HTMLファイルに固定された内容のものしか表示できません。用途によってはそれでもいいのですが、「状況に応じて表示内容を変更する」というような、いわゆる「ダイナミック」なWebページを実現したいという要望もあります。そのための仕組みはいろいろありますが、まず、いちばんシンプルなSSIについて今回の講義では説明しましょう。

SSIは、文字とおり、「サーバーの側でデータを取り込む」ということを行います。動作原理の違いを次の図で説明しましょう。

HTMLファイルに、SSIを発生させる、特別なタグを書き込みます。そうすると、サーバーの側で、そうしたタグがあることを認識して、タグに記述した内容のデータに「置き換え」をします(あるいは差し込みを行います)。その結果を、クライアントに送付します。

このようなメカニズムを使うことで、次のようなメリットがあります。

つまり、状況によって変わるような内容をWebページに含めるということが可能になるというわけです。たとえば、ページの更新日を、HTMLファイルの更新日から自動的に表示させるようなことがSSIで可能になります。手作業でやっていると、忘れたりしがちな更新日の表示も自動的にできるようになります。

ただし、SSIを実行するには、一般のHTMLファイルの作成に比べて、次のようなハードルがあります。

こうしたハードルを超えれば、たとえば、サーバーに登録されているファイル情報などをその都度取り込んで表示できます。適切に設計すれば、Webブラウザに送られるのは、純粋なHTMLなので、クライアント側には何の仕掛けも必要なくなるわけです。

ただし、SSIはいくつかの理由であまり使われていないということもあります。1つは、サーバーに負荷がかかることがあるので、サーバー管理のポリシーによって制約されていることが多いということがあります。使われていないというより、使える環境が限られているということです。

ダイナミックなページを作成する手法としては、次回説明するCGIの方が良く利用されています。一般に、HTMLページの一部分にダイナミックなものを表示したいときにはSSIも便利なのですが、HTMLとSSIで処理するプログラムの連携を取るなど、開発は難しくなります。一方、CGIは場合によるのですが、1つのプログラムで記述が完了することが多く、そちらのほうが好まれるということもあります。

具体的なSSIの記述方法については、以下の資料を参照してください。

テキストとサンプル

参考サイト


フォーム

インターネットのページで、テキスト入力枠やボタン、チェックボックスなど、通常のソフトウエアのダイアログボックスのようなオブジェクトが配置されているのをよく見るかと思います。たとえば、Yahooなどの検索サイトの検索条件を入力するような個所もその類です。こうしたWebページの要素を「フォーム」と総称します。

こうしたフォームは、HTMLで記述して作成できるようになっています。フォームを記述する<FORM>タグにはさまれた中に、オブジェクトごとにタグを記述するような感じです。なお、多くのホームページソフトは、フォームの作成機能を持っています。それを利用すれば、オブジェクトを直接ページ上に見ながら作業できるので作りやすいといえるでしょう。なお、フォームの中は、フォームで使うオブジェクトだけでなく、画像や文章など、一般的なHTMLの要素は自由に配置できます。

フォーム要素 要素名 タグの例 備考
(フォーム)   <form method="POST" action="....">

</form>

フォーム全体を記述する
テキストボックス <input type="text" name="T1" size="20"> SIZEで横幅を決める
スクロールテキストボックス <textarea rows="2" name="S1" cols="20"> rows、colsで大きさを決める
チェックボックス <input type="checkbox" name="C1" value="ON"> valueで初期値を決める
ラジオボタン <input type="radio" value="V1" checked name="R1"> 複数あるラジオボタンのnameパラメータに同じものを設定する。そして、ボタンごとにchecked nameを異なるものにする
ドロップダウンメニュー、リスト <select size="1" name="D1">
<option>日本</option>
<option>アメリカ</option>
<option>カナダ</option>
</select>
sizeは行数。1ならドロップダウンで、2以上にするとリストになる。optionタグで選択肢を書き並べる
プッシュボタン <input type="button" value="ボタン" name="B1"> valueでボタン名を指定
送信ボタン <input type="submit" value="送信" name="B2"> フォームの内容を送信する特別なボタン
リセットボタン <input type="reset" value="リセット" name="B3"> フォームの入力結果をクリアする特別なボタン

フォームの要素にはどれにもnameパラメータがあります。フォームでの入力結果では、このnameと実際に入力や選択した値が得られます。後の結果で再度説明します。

実際の作成はデモで見せます。おおまかには、次のような作成方法があります。

フォームの入力結果の取得

フォームを作ること自体はそれほど難しいことではありません。それよりもむしろ、入力した結果をどうやって得るかということの方が難しいことだといえます。一般には、次の2通りの方法があります。

メールで受け取るのが簡単な方法ですが、場合によっては、そのまますぐに読み込めないデータであることもあります。そのときには、変換処理が必要です(ソフトがあります)。また、仮に受け取ったとしても、それをもとに集計するのが一苦労になります。概して、ページ作成は簡単ですが、後処理に苦労するのがメール方式です。

一方、サーバー上に書き込む方式は、CGIというプログラムが必要になります。フォームの内容をサーバーで受け取って、それをサーバー上のテキストファイルなどに追加していくような形式が一般的です。データベースに書き込むようなことも行われます。

したがって、入力結果は柔軟に設計できますが、そのためのプログラム作成が必要になります。ただ、最近は、こうしたプログラムも汎用的に利用できるものが広く出回っているため、必ずしも自分で開発するなりして用意しなければならないわけではありません。このCGIについては、次回に説明します。

FrontPage Expressの「フォームウィザード」を使って作成したフォームの例を見てもらいます。このフォームは、メールで結果を受け取る方式です。

→「フォームウィザード」を使って作成したフォームの例

(上記の例は若干の失敗があるります、お許しを…)。FrontPage Expressでウィザードを使う方法のポイントは、次のとおりです。

  1. 「ファイル」メニューから「新規作成」を選択する
  2. ダイアログボックスで、「フォームページウィザード」を選ぶ
  3. 後は、対話式にフォームの要素を追加していく(ここはいろいろやりようがあるので、説明は省略)。最後の出力オプションは「ユーザー設定のCGIスクリプトを使用する」を選んでおく
  4. 作成後は、フォームを右ボタンでクリックして「フォームのプロパティ」を選択する
  5. 「ユーザー設定のISAPI、NSAPI、またはCGIスクリプト」が選択されているのを確認して、「設定」ボタンをクリックして、ダイアログボックスを表示する。
  6. 「アクション」のところに、「mailto:msyk@locus.co.jp」形式のメール送信リンクを記述する

メール送信方式の場合、HTMLレベルでは、<form action="mailto:msyk@locus.co.jp" method="post">のようになっていればかまわないはずです。うまくいかないときには、HTMLファイルをエディタで直接編集してください。

こうして作成したフォームを誰かが参照し、項目を埋めて送信したとします。すると、この場合はmsyk@locus.co.jp宛てに送信されるように設定したので、講師のメールソフトで次のように読めます(Windowsでなくてすみません)。

得られたメールは、「nameパラメータ=入力・選択結果」という形式で並んでます。

テキストとサンプル

 


本日の課題

SSIを使う

課題提出ページに関する情報を表示するページはすでに作成中です。そのページの中に、

をSSIを使って表示すること。

フォームを作成する

簡単なものでいいのでアンケートのフォームのページを作成すること。おおむね、次のような要素が入っていること。

結果は、自分のメールアドレスで受け取るようにしておくこと。


←「情報処理技術」のホームページへ