[. SSI について

CGIと並んでよく使われるものに 「 SSI 」 というものがあります。
このSSIとCGIの違いとは何でしょうか?。
CGIの場合は、そのページに訪れた人が、”送信ボタンを押す”などのアクションを起こさなければ、
プログラムは実行されません。
しかしSSIの場合は、指定されたコマンドをHTML文書中に埋め込むだけで、
そのプログラムが実行されるというものです。
こちらではSSIの基礎について解説致します。
★SSIを使った最も有名なプログラムは「アクセスカウンター」です。
これはページを見に来た人が、何もしなくてもプログラムが起動し、カウンターアップするようになっています。
★SSI★ Server Side Include の略称


1.SSIコマンドの記述方法

記述方法はいたって簡単です。
実行させたいHTML文書内に下記のような記述を埋めこむだけです。

<!--#コマンド 引数-->

★コマンド:どういう処理をさせるか?
★引 数:何に対して?

ここでHTMLタグに詳しい人なら、「?」と思う事がありませんか?。
そうです、SSIの記述に使われる <!--○○○--> は、HTMLタグの「コメントタグ」と同じなのです。
本来コメントタグは、その文中にある言葉は全て無視するようになりますが、
SSIが使えるように設定されているサーバーなら、ちゃんと中身をSSIコマンドとして認識してくれます。

【例1】<!--テーブルの作成--> ・・・コメントタグとして認識・ブラウザ上では非表示
【例2】<!--#echo var="DATE_GMT--> ・・・SSIコマンドとして認識・ブラウザ上では世界標準時を表示

2.SSIコマンドの記述例と解説

さて、これだけでは何のことかさっぱりわかりませんね?(^^;。
では、具体的に解説致します。

コマンド:#echo
#echoコマンドは、時間などの情報を表示する為に使います。
引数として表示したい変数[ var="変数名" ] の形で指定します。
記述例表示される結果表示される内容の説明
<!--#echo var="DATE_GMT"-->Sunday, 05-May-2024 19:40:59 GMT世界標準時間
<!--#echo var="DATE_LOCAL"-->Monday, 06-May-2024 04:40:59 JST現地時間
<!--#echo var="DOCUMENT_NAME"-->body6_dti.shtmlここのファイル名
<!--#echo var="DOCUMENT_URI"-->/~mixdown/cgki/body6_dti.shtmlこのファイルのURLパス
<!--#echo var="LAST_MODIFIED"-->Sunday, 25-Jun-2006 17:55:42 JSTこのファイルの最終更新日時
【使 用 例 】現在の時刻は<!--#echo var="DATE_LOCAL"-->です。
【結果表示】現在の時刻はMonday, 06-May-2024 04:40:59 JSTです。

コマンド:#flastmod
#flastmodコマンドは、最終更新日時を表示させたいファイルを指定することが出来ます。
引数として表示したい変数[ file="ファイルの相対パス" ] の形で指定します。
表示させたいファイルが上の階層にある場合、絶対パスや「..(上部ディレクトリ)」は使えませんので、
[ virtual="最上部からのパス" ] の形で指定します。
記述例表示される結果表示される内容の説明
<!--#flastmod file="body6_dti.shtml"-->Sunday, 25-Jun-2006 17:55:42 JSTこのファイルの最終更新日時
<!--#flastmod virtual="/~mixdown/index.html"-->Sunday, 25-Jun-2006 18:35:00 JST上の階層にある場合
【使 用 例 1】このページの最終更新日時は<!--#flastmod file="body6_dti.shtml"-->です。
【結果表示1】このページの最終更新日時はSunday, 25-Jun-2006 17:55:42 JSTです。
【使 用 例 2】トップページの最終更新日時は<!--#flastmod virtual="/~mixdown/index.html"-->です。
【結果表示2】トップページの最終更新日時はSunday, 25-Jun-2006 18:35:00 JSTです。

コマンド:#fsize
#fsizeコマンドは、ファイルや画像のサイズ情報を表示する為に使います。
引数として表示したい変数[ file="ファイル(画像)の相対パス" ] の形で指定します。
表示させたいファイルが上の階層にある場合、絶対パスや「..(上部ディレクトリ)」は使えませんので、
[ virtual="最上部からのパス" ] の形で指定します。
記述例表示される結果表示される内容の説明
<!--#fsize file="body6_dti.shtml"--> 17Kこのファイルのサイズ
<!--#fsize file="gazou/htaxs.gif"-->9.8Kサブディレクトリで使っている画像サイズ
【使 用 例 】このページのファイルサイズは<!--#fsize file="body6_dti.shtml"-->バイトです。
【結果表示】このページのファイルサイズは 17Kバイトです。

コマンド:#config
#configコマンドは、#echoコマンドや、#fsizeコマンドでの表示形式を指定するものです。。
#echoコマンドや、#fsizeコマンドの前に記述し、セットで使って下さい。
記述例表示される結果表示される内容の説明
<!--#config sizefmt="bytes"-->
<!--#fsize file="body6.shtml"-->
17,193このファイルのサイズ
(バイト単位)
<!--#config sizefmt="abbrev"-->
<!--#fsize file="body6.shtml"-->
17Kこのファイルのサイズ
(キロ or メガバイト単位に戻す)
<!--#config timefmt="%Y年%m月%d日"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(年月日表示)
<!--#config timefmt="%a"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(省略形の曜日)
<!--#config timefmt="%A"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(曜日・英語)
<!--#config timefmt="%b"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(省略形の月)
<!--#config timefmt="%B"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(月・英語)
<!--#config timefmt="%c"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(日時)
<!--#config timefmt="%d"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(日付・1桁の場合0付き)
<!--#config timefmt="%D"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(月/日/年)
<!--#config timefmt="%e"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(日付・1桁の場合0なし)
<!--#config timefmt="%H"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(時・24時間制・1桁の場合0付き)
<!--#config timefmt="%I"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(時・12時間制・1桁の場合0付き)
<!--#config timefmt="%k"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(時・24時間制・1桁の場合0なし)
<!--#config timefmt="%l"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(時・12時間制・1桁の場合0なし)
<!--#config timefmt="%m"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(月・1桁の場合0付き)
<!--#config timefmt="%M"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(分)
<!--#config timefmt="%p"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(AM/PM)
<!--#config timefmt="%r"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(時:分:秒・12時間制)
<!--#config timefmt="%R"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(時:分・24時間制)
<!--#config timefmt="%S"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(秒)
<!--#config timefmt="%T"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(時:分:秒・24時間制)
<!--#config timefmt="%y"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(年の下2桁)
<!--#config timefmt="%Y"-->
<!--#echo var="DATE_LOCAL"-->
Monday, 06-May-2024 04:40:59 JST現地時間
(年)

【注意】こちらで指定した書式は、サーバーによっては使えないものもございます。

コマンド:#include
#includeコマンドは、他のファイルの内容をそのまま引用する時に使います。
引数は、#flastmodや、#fsizeと同じく、 [ file ][ virtual ] です。
記述例表示される結果表示される内容の説明
<!--#include file="footer.html"-->Copyright(C)1998-1999 miyappu All Rights Reserved.
miyappu@remus.dti.ne.jp
下記 footer.html の内容が挿入される
【 footer.html 】(別ファイルにて作成しておくこと)

<address>
<center>
<font color="blue">
Copyright(C)1998-1999 miyappu All Rights Reserved.
<br>
miyappu@remus.dti.ne.jp
</font>
</center>
</address>


【注意】セキュリティ上の理由から、#includeコマンドを禁止しているサーバーもあります。

コマンド:#exec
#execコマンドは、UNIXコマンドやCGIプログラムを実行させる時に使います。
UNIXコマンドを実行する引数 [ cmd ]
CGIプログラムを実行する引数 [ cgi ] になります。
Perlなどのスクリプトを実行させる時は、 [ cmd ] を使います。
また、ここで使用する参照先パスが上部ディレクトリにある場合は
UNIX上の「フルパス」を使用します。URLの絶対パスでは動作しません。
記述例表示される内容の説明
<!--#exec cmd="ls"-->UNIXコマンド [ ls ] を実行
<!--#exec cmd="./samplescript.pl"-->[ samplescript.pl ] スクリプトを実行
(同じデイレクトリ)
<!--#exec cgi="/home/mixdown/cgi-bin/sample.cgi"-->[ sample.cgi ] を実行
(上部のディレクトリ)

【注意】
セキュリティ上の理由から、#includeコマンドを禁止しているサーバーもあります。
このコマンドが使えないサーバーでは、アクセスカウンターなどの自己設置は難しいでしょう・・・。

3.shtmlファイルについて

サーバーによっては、SSIコマンドを使ったHTML文書の拡張子は 「 .shtml 」 と指定される場合があります。
この場合、通常の 「 .html 」 もしくは 「 .htm 」 の拡張子で作成したファイル中のSSIコマンドは、
コメントタグとみなされ、SSIが作動しないようになっています。

4.htaccessファイルでの設定

また、SSIコマンドを記述しただけでは、SSIが作動しない場合、
前コーナーで解説した「.htaccessファイル」を設置する必要があります。

★拡張子「.html」「.htm」でSSIコマンドが使える場合は、
AddType text/x-server-parsed-html .html
AddType text/x-server-parsed-html .htm

★拡張子「.shtml」でSSIコマンドを使う場合は、
AddType text/x-server-parsed-html .shtml

と、記述した「.htaccessファイル」を設置して下さい。


前へ戻る 次へ進む

HOME
miyappu@remus.dti.ne.jp