情報システム科
Sponsored Link
[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
    Sponsored Link
    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は、お嫌いですか?



    ホームへ