情報システム科
[an error occurred while processing this directive]
ssi
目次
ssiとは
例
exec cmd , exec cgi コマンドやCGIの実行
include file ファイルの実行
include virtual ファイルの実行
config errmsg エラーメッセージ
config timefmt と flastmod 最終更新日時
config sizefmt と fsize ファイルサイズの出力
echo var 変数の値を表示
set var 変数名に値を代入
if expr 条件判断
ssiとは
SSI(Server Side Includes)とは、HTMLファイルの中に組み込みコマンドを書くことによって、ブラウザがそのファイルを要求したときにサーバがあらかじめ組み込まれたコマンドを実行する仕組み
SSIの記述方法は、通常のHTMLファイルの中に、
<!-- と -->で囲まれた部分に、コメント文を書く(但し、-->の前にスペースを1つ置く。)
コメント文は #command option="…"
HTMLでは <!-- から --> に、かこまれた部分は、「単なるメモ書きだ」と判断をして、処理を実行しません。
SSIに対応しているブラウザは、<!-- から --> に、かこまれた部分は「これは単なるコメントではなく、SSIの命令だ」と判断して、実行してくれる
例
日本の標準時刻を表示するには、HTMLソースファイルに
<!--#echo var="DATE_LOCAL" -->ですよ!
表示結果
Friday, 09-Jan-2009 10:42:47 JSTですよ!
exec
コマンドやCGIの実行
cmd は、MSDOSプロンプトから直接 cgi を実行したと同様。
cgi は、ブラウザから実行させたと同様。
<!--#exec cmd="実行命令" -->
<!--#exec cgi="ファイル名" -->
例1
<!--#exec cmd="cat ../cgi-bin/test.txt" -->
表示結果1−−>動かない
[an error occurred while processing this directive]
例2
<!--#exec cgi="***.cgi" -->
表示結果2
今日の運勢は==>
本日はラッキーです
例3
<!--#exec cmd="date" -->
表示結果3
[an error occurred while processing this directive]
include file
ファイルの実行
SSIを記述したディレクトリと同じディレクトリか、その下のディレクトリのファイル。
例
<!--#include file="test.txt" -->
表示結果
「ファイルのテスト中−−「から」まで、test.txtに書かれた内容です。」
上の階層にあるファイルを表示。
例
<!--#include virtual="/ybb/test.txt" -->
フィルの実行もできるよ
例1−−今日の運勢
<!--#include virtual="/cgi-bin/***.cgi" -->
表示結果
今日の運勢は==>
超大吉です
cgiの内容
#!/usr/local/bin/perl
print ("Content-type: text/html\n\n");
print ("今日の運勢は==>\n");
$a = int(rand(3));
if ($a == 1){print ("大吉です\n");}
if ($a == 2){print ("超大吉です\n");}
if ($a == 0){print ("本日はラッキーです\n");}
exit;
例2−−POST
表示結果−−選んで送信を押してください
表示内容1
<!--#include virtual="***.cgi" -->
表示結果1
REQUEST_METHOD: GET
query_string:
CONTENT_LENGTH:
表示内容2
<!--#include virtual="s_ssisok.shtml" -->
表示結果2
[an error occurred while processing this directive]
cgiの内容
#!/usr/local/bin/perl
print ("Content-type: text/html\n\n");
print "REQUEST_METHOD: ".$ENV{'REQUEST_METHOD'}."<br>\n"; #getかpostか
print "query_string: ".$ENV{'QUERY_STRING'}."<br>\n"; #getデータ
read (STDIN, $a, $ENV{"CONTENT_LENGTH"}); #postデータ
print "CONTENT_LENGTH: $a<br>\n"; #postデータ
送信を押すと
REQUEST_METHOD: POST
query_string:
CONTENT_LENGTH: ba=nagoya&bb=bali
書式
<FORM METHOD="post" ACTION="/***.cgi">
<INPUT TYPE="radio" NAME="ba" VALUE="takyo">東京
<INPUT TYPE="radio" NAME="ba" VALUE="nagoya" CHECKED>名古屋
<BR>
<INPUT TYPE="radio" NAME="bb" VALUE="hawaii">ハワイ
<INPUT TYPE="radio" NAME="bb" VALUE="bali" CHECKED>バリ島
<BR>
<INPUT TYPE="submit" VALUE="送信">
</FORM>
config errmsg
エラーメッセージの出力
実行中にエラーが起こった場合にここで指定した文字列が出力
例
<!--#config errmsg="ssiのエラーです">
config timefmt
config timefmt と flastmod 最終更新日時
timefmt
%c…日付と時刻(標準) Sat Jan 03 18:15:58 1997
%x…日付(省略形) 04/26/95
%X…時刻(省略形) 18:15:58
%b…月(省略形) Jan
%B…月(フルスペル) January
%m…月(数字) 01
%a…曜日(省略形) Sat
%A…曜日(フルスペル) Saturday
%d…日(数字) 03
%y…西暦(2桁) 97
%Y…西暦(4桁) 1997
%H…時(24時制) 18
%I…時(12時制) 6
%M…分 15
%S…秒 58
%p…a.m.またはp.m. p.m.
%Z…タイムゾーン JST
flastmod 最終更新日時
例
<!--#config timefmt="%Y年%m月%d日 %A %p%I時%M分%S秒" -->
<!--#flastmod virtual="ssi.shtml" -->
表示結果
2003年02月14日 Friday AM11時23分06秒
config sizefmt
ファイルサイズの出力
"bytes"…バイト単位で正確に出力
"abbrev"…KBまたはMB単位で出力。この設定がデフォルト。
例
<!--#config sizefmt="bytes" -->
<!--#fsize virtual="ssi.shtml" -->
<br>
<!--#config sizefmt="abbrev" -->
<!--#fsize virtual="ssi.shtml" -->
表示結果
8,548
8k
echo var
変数の値を表示
環境変数
例
現在のローカルタイムは <!--#echo var="DATE_LOCAL" --> です。
現在のグリニッジ標準時は <!--#echo var="DATE_GMT" --> です。
あなたが使用しているIPアドレスは <!--#echo var="REMOTE_ADDR" --> で、
HTTP_HOSTは <!--#echo var="HTTP_HOST" --> です。
あなたのブラウザは <!--#echo var="HTTP_USER_AGENT" --> ですね。
このページには <!--#echo var="HTTP_REFERER" --> からですね。
それでは、環境変数を全部表示しましょう
<!--#printenv -->
表示結果
現在のローカルタイムは Friday, 09-Jan-2009 10:42:47 JST です。
現在のグリニッジ標準時は Friday, 09-Jan-2009 01:42:47 GMT です。
あなたが使用しているIPアドレスは 38.103.63.58 で、
HTTP_HOSTは tanoshiina.s27.xrea.com です。
あなたのブラウザは CCBot/1.0 (+http://www.commoncrawl.org/bot.html) ですね。
このページには (none) からですね。
それでは、環境変数を全部表示しましょう
DOCUMENT_ROOT=/virtual/tanoshiina/public_html
HTTP_ACCEPT=Accept: application/xhtml+xml,text/html;q=0.9,text/plain;
HTTP_ACCEPT_CHARSET=ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING=gzip
HTTP_ACCEPT_LANGUAGE=en-us,en;q=0.5
HTTP_CACHE_CONTROL=no-cache
HTTP_CONNECTION=close
HTTP_HOST=tanoshiina.s27.xrea.com
HTTP_PRAGMA=no-cache
HTTP_USER_AGENT=CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
PATH=/usr/local/bin:/usr/bin:/bin
REDIRECT_SCRIPT_URI=http://tanoshiina.s27.xrea.com/tanoshii/s_ssi/s_ssisok.shtml
REDIRECT_SCRIPT_URL=/tanoshii/s_ssi/s_ssisok.shtml
REDIRECT_STATUS=200
REMOTE_ADDR=38.103.63.58
REMOTE_PORT=59381
SCRIPT_FILENAME=/virtual/tanoshiina/public_html/tanoshii/s_ssi/s_ssisok.shtml
SCRIPT_URI=http://tanoshiina.s27.xrea.com/tanoshii/s_ssi/s_ssisok.shtml
SCRIPT_URL=/tanoshii/s_ssi/s_ssisok.shtml
SERVER_ADDR=192.168.1.116
SERVER_ADMIN=admin@xrea.com
SERVER_NAME=tanoshiina.s27.xrea.com
SERVER_PORT=80
SERVER_SIGNATURE=
SERVER_SOFTWARE=Apache
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=INCLUDED
REQUEST_METHOD=GET
QUERY_STRING=
REQUEST_URI=/tanoshii/s_ssi/s_ssisok.shtml
SCRIPT_NAME=/tanoshii/s_ssi/s_ssisok.shtml
DATE_LOCAL=Friday, 09-Jan-2009 10:42:47 JST
DATE_GMT=Friday, 09-Jan-2009 01:42:47 GMT
LAST_MODIFIED=Sunday, 02-Mar-2003 10:43:38 JST
DOCUMENT_URI=/tanoshii/s_ssi/s_ssisok.shtml
DOCUMENT_PATH_INFO=
USER_NAME=tanoshiina
DOCUMENT_NAME=s_ssisok.shtml
set var
変数名に値を代入
例
<!--#set var="abc" value="abcは、変数でーす" -->
<!--#echo var="abc" -->
表示結果
abcは、変数でーす
if expr
条件判断
<!--#if expr="条件" -->
<!--#elif expr="条件" -->
<!--#else -->
<!--#endif -->
例
<!--#if expr="$HTTP_USER_AGENT = /compatible; MSIE/" -->
Internet Explorer を使っていますね。
<!--#else -->
Internet Explorerは、お嫌いですか?
<!--#endif -->
動作結果
Internet Explorerは、お嫌いですか?
ホームへ