ここでは,SSI (Server Side Include)やCGI (Common Gateway Interface),フォーム機能の概念や記述の方法を説明し,アクセスカウンタや訪問者リストなどの利用例を紹介する.これらの機能の詳細は,市販のマニュアルなどを参照してほしい.
通常,ページの送信要求を受けると,WWWサーバはページをそのまま送信する.しかし,ページの中でも拡張子が`.shtml'のファイルの送信を要求された場合,WWWサーバはそのページの中の一部に,現在時刻や他のページの内容などを挿入してからWWWブラウザに向けて送信する.このように,送信直前にページに何らかの情報を挿入する機能をSSI (Server Side Include)と呼ぶ(図4.6).ページの中にSSIを記述するには,次の書式を用いる.
<!--#COMMAND TAG1="VALUE1" TAG2="VALUE2" -->
COMMANDには次のものを指定する.
<!-#config errmsg="エラーメッセージ"-> SSIでエラーが発生した場合、ここで設定したメッセージが出力される。 <!-#config timefmt=" #echoや#flastmodで日時を表示する際の形式指定。
このファイルの名前は<!-#echo var="DOCUMENT_NAME" ->です。 現在時刻は<!-#echo var="DATE_LOCAL" ->です
来訪者リスト<p> <!-#INCLUDE VIRTUAL="list.txt" ->
このページは<p> <!-#FLASTMOD VIRTUAL="list.html" ->に更新されました. link.htmlは<p> <!-#FLASTMOD VIRTUAL="/ t99000tf/link.html" -> に更新されました.
現在時刻は <!-#EXEC CMD="date" ->です <br> あなたは<!-#EXEC CGI="counter.cgi" ->人目のお客様です.
通常,WWWブラウザからページの送信要求を受けると,WWWサーバはページをそのまま送信する.しかし,CGIを利用したファイル(拡張子が`.cgi' などのプログラム)の送信要求を受けた場合,WWWサーバはそのプログラムを実行することで何らかの処理を行い,その結果生成されるページや画像などをWWWブラウザに向けて送信する(図4.7).また,フォーム機能によりユーザから送られてきた情報を処理する場合にもCGIを利用する.
このように,CGIとはWWWサーバとサーバで実行されるプログラムとの橋渡しをするインタフェースである.実際の処理はサーバのプログラムが行い,その結果をWWWサーバを通じてブラウザに送信する.このWWWサーバで実行されるプログラムをCGIプログラムと呼ぶ.CGIプログラムを記述する言語(Perl,Cなど) はWWWサーバで実行できるものであれば何でもよいが,文字列の処理に優れていて,WWWサーバが変わってもプログラムを変更せずにそのまま実行でき,セキュリティを考慮したプログラムが書きやすいという理由から,ここではPerlによるCGIプログラムを説明する.
CGIプログラムのファイルは 拡張子を`.cgi'にして, public_html以下のディレクトリに置く.CGIプログラムのファイルはWWWサーバにより実行されるので,chmodコマンドを使用し,すべてのユーザに対して実行可能な設定にしておかなければならない.同様に,CGIプログラムが実行中に書き込みを行うファイルなどもすべてのユーザに対して書き込み可能な設定にしておくこと.
% pwd<RET> /home/t99000tf/public_html % chmod a+x sample.cgi<RET> % ls -l sample.cgi<RET> -rwxr-xr-x 1 t99000tf 4103 Jun 30 07:11 sample.cgi % _
CGIプログラムは,WWWサーバでプログラムとして実行されるので,適切に利用しないと非常に危険である.次に,CGIプログラムを書くときの注意点を挙げる.CGIプログラムのセキュリティについては,`The World Wide Web Security FAQ'(http://www.w3.org/Security/)を参照すること.
ここでは,CGIプログラムの利用形式を紹介する.
<A HREF="sample.cgi">ここ</A>をクリックするとCGIプログラムの結果が表示 されます.
<IMG SRC="sample.cgi">
フォーム機能を利用すると,ユーザが入力した文字などの情報をWWWサーバにあるCGIプログラムに送信できる.これにより,CGIプログラムはユーザからの情報に応じたインタラクティブな処理ができる.この機能を利用したページを作成するには,<FORM>タグ,<INPUT>タグなどを使用する.
<FORM ACTION="CGIプログラムのURI"> <INPUT....> </FORM>
<INPUT TYPE="入力フィールドの種類" NAME="変数名" SIZE="数値">
ここでは,SSIによりCGIプログラムを実行する例として,アクセスカウンタの作成方法を紹介する.アクセスカウンタとは,それが埋め込まれたページがアクセスされた回数を数える機能である.
アクセスカウンタを作成する際に必要となる2つのファイルを次に示す.これらはWWWサーバによりアクセスされるので,public_htmlディレクトリの下に作成し,さらに,用途に応じて各ファイルの保護モードをchmodコマンドを使って変更しなければならない.
% chmod 755 counter.cgi<RET> % chmod 777 number.txt<RET> % _
以上のファイルを準備したら,public_htmlディレクトの下にアクセスカウンタを埋め込むページを作成し,次の1行を記述する.なお,このアクセスカウンタはSSIを利用しているので,これを埋め込むページのファイル名の拡張子は`.shtml'でなければならない.
あなたは<!-#EXEC CGI="counter.cgi" ->人目です.
アクセスカウンタを埋め込んだぺージをWWWブラウザで表示すると,先の一行を記述した部分に``あなたは1人目です.''と表示される.以後,このページがアクセスされる度にこの数値は1ずつ増加する.
#!/usr/local/bin/perl -T #以下,「#」以降はコメントなので打ち込まなくてもよい. print "Content-type: text/html |
ここでは,フォーム機能により入力された文字などの情報をWWWサーバのCGIプログラムに送信する例として,ページにアクセスしたユーザが自分の名前や電子メールアドレスをページに登録する,訪問者リストの作成方法を紹介する.
訪問者リストを作成する際に必要となるファイルを次に示す.これらはWWWサーバにより実行されるので,public_htmlディレクトリの下に作成し,さらに,用途に応じて各ファイルの保護モードをchmodコマンドを使って変更しなければならない.
<HTML> <HEAD><TITLE></TITLE></HEAD> <BODY> <FORM ACTION="register.cgi"> NAME:<INPUT TYPE="TEXT" NAME="user_name"><BR> E-MAIL ADDRESS:<INPUT TYPE="TEXT" SIZE="30" NAME="email_address"><BR> URI:<INPUT TYPE="TEXT" SIZE="30" NAME="page_address"><BR> <INPUT TYPE="SUBMIT" VALUE="Registration"> </FORM> </BODY> </HTML> |
#!/usr/local/bin/perl -T print "Content-type: text/html |
% chmod 755 register.cgi<RET> % chmod 777 list.html<RET> % _
以上のファイルを準備したら,ブラウザにページ`input.html'を表示し,入力部分(図4.12)に文字を入力してから[Registration]を押す.すると,入力した文字情報がWWWサーバに送信され,WWWサーバはCGIプログラム`register.cgi'を起動して文字情報を渡す.このCGIプログラムは文字情報をlist.htmlに書き込んだ上で,``Thankyou. Click here!''という文章を含んだページを生成する.このページをWWWサーバがブラウザに対して送信する.
WWWサーバから送られてきたページの中の``Click here!''という文字列には list.htmlへのリンクが設定されているので,これをクリックすると登録した情報が表示される.