next up previous contents index
Next: VI. 画像・音声・動画の作成 Up: 4. WWWサーバによる情報公開 Previous: 4.1 情報へのアクセス制限


   
4.2 SSI,CGI

ここでは,SSI (Server Side Include)やCGI (Common Gateway Interface), Form機能の概念や記述の方法を説明し,アクセスカウンタや訪問者リストなど の利用例を紹介する.これらの機能の詳細は,市販のマニュアルやWWWで公開 されているマニュアルページ(http://www.sfc.kei
o.ac.jp/Manual/index.ja.html
)などを参照してほしい.

   
4.2.1 SSI

 

通常,ページの送信要求を受けると,WWWサーバはページのコピーをそのまま 送信する.しかし,ページの中でも拡張子が``.shtml''のファイルの送 信を要求された場合,WWWサーバはそのページの中の一部に,現在時刻や他の ページの内容などを挿入してからブラウザに向けて送信する.このように,送 信直前にページに何らかの情報を挿入する機能をSSI (Server Side Include) と呼ぶ(図 ).



  
図: SSIの機能



ページの中にSSIを記述するには,次の書式を用いる.

<!--#COMMAND TAG1="VALUE1" TAG2="VALUE2" -->
COMMANDには次のものを指定する.


 

来訪者リスト<p>
<!-#INCLUDE FILE="list.html" ->
 


現在の時刻は <!-#EXEC CMD="date" -> です.<br>
<!-#EXEC CGI="counter.cgi" ->

SSIを利用するページのファイル名の拡張子は``.shtml''  にすること.

     
4.2.2 CGI,Form機能

通常,ブラウザからページの送信要求を受けると,WWWサーバはページのコピー をそのまま送信する.しかし,CGIを利用したファイル(拡張子が ``.cgi''  などのプログラム) の送信要求を受けた場合,WWWサーバは そのプログラムを実行することで何らかの処理を行い,その結果生成されるペー ジや画像などをブラウザに向けて送信する(図). また,Form機能によりユーザから送られてきた情報を処理する場合にもCGIを 利用する.



  
図: CGIの機能


このように,CGIとはWWWサーバとそのサーバで実行されるプログラムとの橋渡 しをするインタフェースである.実際の処理はサーバのプログラムが行い,そ の結果をWWWサーバを通じてブラウザに送信する.このWWWサーバで実行される プログラムをCGIプログラム  と呼ぶ.CGIプログラムを記述する言 語(Perl,Cなど) はWWWサーバで実行できるものであれば何 でもよいが,文字列の処理に優れていて,WWWサーバが変わってもプログラム を変更せずにそのまま実行できるという理由から,ここではPerlによるCGIプ ログラムを説明する.

CGIは便利な機能ではあるが,適切に利用しないと非常に危険である.例えば, W
WWブラウザを利用しているユーザから入力された任意の文字列をそのまま コマンドとして実行できてしまうようなCGIプログラムなどは絶対に作成しな いこと.
CGIプログラムのファイル名の拡張子は ``.cgi''にして,ページと同様 にpublic_html以下のディレクトリに置く.CGIプログラムのファイル はWWWサーバにより実行されるので,chmodコマンド ()を使用し,すべてのユーザに対して実行可 能な設定にしておかなければならない.同様に,CGIプログラムが実行中に書 き込みを行うファイルなどもすべてのユーザに対して書き込み可能な設定にし ておくこと.

% pwd<RET>
/home/t98000tf/public_html
% chmod a+x sample.cgi<RET>
% ls -l sample.cgi<RET>
-rwxr-xr-x 1 t98000tf 4103 Jun 30 07:11 sample.cgi
% _

CGIプログラムの利用形式

ここでは,CGIプログラムの利用形式を紹介する.

 

1.
<A>タグ
通常のページと同様に,<A>タグを使ってCGIプログラムへのリンクを設 定する.リンクが設定されている情報(この例では``ここ''という文字)をユー ザがクリックすると,WWWサーバで自動的にsample.cgiというCGIプログ ラムが実行され,その結果生成されるページが表示される.


<A HREF="sample.cgi">ここ</A>をクリックするとCGIプログラムの結果が表示
されます.

 

1.
<IMG>タグ
<IMG>タグのSRC属性でもCGIプログラムを指定できる.この記述 が含まれているページを表示すると,WWWサーバで自動的にsample.cgi というCGIプログラムが実行され,その結果生成される画像ファイルがこの部 分に表示される.


<IMG SRC="sample.cgi">

 

1.
<FORM>タグ
<FORM>タグを利用すると,ユーザが入力した文字などの情報をWWWサー バにあるCGIプログラムに送信できる.これにより,CGIプログラムはユーザか らの情報に応じたインタラクティブな処理が可能となる.このようなForm機能 についてはを参照すること.
2.
SSI
SSIを利用してもCGIプログラムを実行できる ().

   
Form機能

Form機能を利用すると,ユーザが入力した文字などの情報をWWWサーバにある CGIプログラムに送信できる.これにより,CGIプログラムはユーザからの情報 に応じたインタラクティブな処理ができる.この機能を利用したページを作成 するには,<FORM>タグ,<INPUT>タグなどを使用する.

1.
<FORM>タグ
<FORM>タグではACTION属性  に ユーザが送信する情報を処理するCGIプログラムをURLで指定する.

<FORM ACTION="CGIプログラムのURL">
<INPUT....>
</FORM>
 
2.
<INPUT>タグ
<INPUT>タグにより,送信する情報を入力するフィールドを作成する. <INPUT>タグは,<FORM>タグと</FORM>タグに囲まれた領域 に記述すること.

<INPUT TYPE="入力フィールドの種類" NAME="変数名" SIZE="数値">
 

    
4.2.3 SSI,CGIの利用例(アクセスカウンタ)

ここでは,SSIによりCGIプログラムを実行する例として,アクセスカウン タの作成方法を紹介する.アクセスカウンタとは,それが埋め込まれたページ がアクセスされた回数を数える機能である.

アクセスカウンタを作成する際に必要となる2つのファイルを次に示す.これ らはWWWサーバによりアクセスされるので,public_htmlディレクトリ の下に作成し,さらに,用途に応じて各ファイルの保護モードをchmod コマンド()を使って変更しなければならない.

1.
の内容 でcounter.cgiという名前のCGIプログラムを 作成し,すべてのユーザに対して実行可能となるよ うに保護モードを設定する.
2.
中身が0という数字と改行コードのみのnumber.txtという名前のテキストファイルを作成 し,すべてのユーザに対して書き込み可能となるよ うに保護モードを設定する.

以上のファイルを準備したら,public_htmlディレクトの下にアクセス カウンタを埋め込むページを作成し,次の1行を記述する.なお,このアク セスカウンタはSSIを利用しているので,これを埋め込むページのファイル名 の拡張子は``.shtml''でなければならない.

あなたは<!-#EXEC CGI="counter.cgi" ->人目です.
アクセスカウンタを埋め込んだぺージをブラウ ザで表示すると,先の一行を記述した部分に``あなたは1人目です.''と表示 される.以後,このページがアクセスされる度にこの数値は1ずつ増加する.



  
図: CGIプログラム` counter.cgi'のサンプル
\begin{figure}
{file}
...


      
4.2.4 CGI,Form機能の利用例(訪問者リスト)

ここでは,Form機能によりユーザが入力した文字などの情報をWWWサーバのCGI プログラムに送信する例として,訪問者リストの作成方法を紹介する.これに より,ページを見たユーザは自分の名前や電子メールアドレスをページに登録 できる.

訪問者リストを作成する際に必要となるファイルを次に示す.これらはWWWサー バによりアクセスされるので,public_htmlディレクトリの下に作成し, さらに,用途に応じて各ファイルの保護モードをchmodコマンド ()を使って変更しなければならない.

1.
の内容で input.htmlという名前のファイルを作成する.



  
図: ページ` input.html'のサンプル
\begin{figure}
{file}
<HTML>
<HEAD><TITLE></TITLE></HEAD>
<BODY>
<FORM ACTION=''...
...UE=''Registration''>
</FORM>
</BODY>
</HTML>
\\
{tex2html_deferred}\end{figure}

2.
の内容 でregister.cgiという名前のCGIプログラムを作成 し,すべてのユーザに対して実行可能となるように 保護モードを設定する.


  
図: CGIプログラム` register.cgi'のサンプル
\begin{figure}
{file}
...

3.
list.htmlという名前のファ イルを作成し,すべてのユーザに対して書き込み可 能となるように保護モードを設定する(内容は何でも可).

以上のファイルを準備したら,ブラウザにページ`input.html'を表示し, 入力部分(図)に文字を入力してから [Registration]を押す.すると,入力した文字情報がWWWサーバに送信され, WWWサーバはCGIプログラム`register.cgi'を起動して文字情報を渡す. このCGIプログラムは文字情報をlist.htmlに書き込んだ上で,``Thank you. Click here!''という文章を含んだページを生成する.このページをWWW サーバがブラウザに対して送信する.

WWWサーバから送られてきたページの中の``Click here!''という文字列には list.htmlへのリンクが設定されているので,この文字をクリックする と登録した情報が表示される.


  
図: ページ` input.html'の表示