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"--> | Thursday, 01-May-2025 06:46:08 GMT | 世界標準時間 |
<!--#echo var="DATE_LOCAL"--> | Thursday, 01-May-2025 15:46:08 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"-->です。 【結果表示】現在の時刻はThursday, 01-May-2025 15:46:08 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"--> |
2025年05月01日 | 現地時間 (年月日表示) |
<!--#config timefmt="%a"--> <!--#echo var="DATE_LOCAL"--> |
Thu | 現地時間 (省略形の曜日) |
<!--#config timefmt="%A"--> <!--#echo var="DATE_LOCAL"--> |
Thursday | 現地時間 (曜日・英語) |
<!--#config timefmt="%b"--> <!--#echo var="DATE_LOCAL"--> |
May | 現地時間 (省略形の月) |
<!--#config timefmt="%B"--> <!--#echo var="DATE_LOCAL"--> |
May | 現地時間 (月・英語) |
<!--#config timefmt="%c"--> <!--#echo var="DATE_LOCAL"--> |
Thu May 1 15:46:08 2025 | 現地時間 (日時) |
<!--#config timefmt="%d"--> <!--#echo var="DATE_LOCAL"--> |
01 | 現地時間 (日付・1桁の場合0付き) |
<!--#config timefmt="%D"--> <!--#echo var="DATE_LOCAL"--> |
05/01/25 | 現地時間 (月/日/年) |
<!--#config timefmt="%e"--> <!--#echo var="DATE_LOCAL"--> |
1 | 現地時間 (日付・1桁の場合0なし) |
<!--#config timefmt="%H"--> <!--#echo var="DATE_LOCAL"--> |
15 | 現地時間 (時・24時間制・1桁の場合0付き) |
<!--#config timefmt="%I"--> <!--#echo var="DATE_LOCAL"--> |
03 | 現地時間 (時・12時間制・1桁の場合0付き) |
<!--#config timefmt="%k"--> <!--#echo var="DATE_LOCAL"--> |
15 | 現地時間 (時・24時間制・1桁の場合0なし) |
<!--#config timefmt="%l"--> <!--#echo var="DATE_LOCAL"--> |
3 | 現地時間 (時・12時間制・1桁の場合0なし) |
<!--#config timefmt="%m"--> <!--#echo var="DATE_LOCAL"--> |
05 | 現地時間 (月・1桁の場合0付き) |
<!--#config timefmt="%M"--> <!--#echo var="DATE_LOCAL"--> |
46 | 現地時間 (分) |
<!--#config timefmt="%p"--> <!--#echo var="DATE_LOCAL"--> |
PM | 現地時間 (AM/PM) |
<!--#config timefmt="%r"--> <!--#echo var="DATE_LOCAL"--> |
03:46:08 PM | 現地時間 (時:分:秒・12時間制) |
<!--#config timefmt="%R"--> <!--#echo var="DATE_LOCAL"--> |
15:46 | 現地時間 (時:分・24時間制) |
<!--#config timefmt="%S"--> <!--#echo var="DATE_LOCAL"--> |
08 | 現地時間 (秒) |
<!--#config timefmt="%T"--> <!--#echo var="DATE_LOCAL"--> |
15:46:08 | 現地時間 (時:分:秒・24時間制) |
<!--#config timefmt="%y"--> <!--#echo var="DATE_LOCAL"--> |
25 | 現地時間 (年の下2桁) |
<!--#config timefmt="%Y"--> <!--#echo var="DATE_LOCAL"--> |
2025 | 現地時間 (年) |
【注意】こちらで指定した書式は、サーバーによっては使えないものもございます。 |
コマンド:#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> | ||
【注意】セキュリティ上の理由から、#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コマンドが使える場合は、
★拡張子「.shtml」でSSIコマンドを使う場合は、
AddType text/x-server-parsed-html .html
AddType text/x-server-parsed-html .htm
AddType text/x-server-parsed-html .shtml
と、記述した「.htaccessファイル」を設置して下さい。