>----> Go Menu Merchant >---->

FAQ - Server Side Includes

  1. What are Server-Side Includes?
  2. How do I use SSI?
  3. What directives are available?
  4. What extended SSI elements are available?
  5. What SSI environment variables available?
  6. What CGI environment variables can I use with SSI?
  7. Where can I get more information about Server-Side Includes?

1. What are server side includes?

Server-side includes (SSIs) are simple, HTML-embedded directives that instruct the web server to include data in the HTML document. As a shorthand alternative to CGI, server-side includes can be handy.

2. How do I use SSI?

First you must create a page with a .shtm or .shtml extention! Then SSI is easily implemented into your web page by using the following syntax or directives:

<!--#directive parameter="value"-->

Directives can have more than one parameter, and multiple parameters are separated by white space.

3. What directives are available?

The valid SSI directives are as follows:

echo

  • Syntax: echo var="environment-variable"

    Echo inserts the value of one or more
    SSI environment variables.

    include

    Syntax: include file|virtual="path"

    The include directive inserts the text of another document, specified either as a file or a virtual file. Path must be relative to the current document in the case of a file, or it can be a virtual path.
    For example:

  • <!--#include file="sample.html"-->
    <!--#include virtual="/virtual/sample.html"-->

    fsize

    Syntax: fsize file="path"

    The fsize directive inserts
    the size of the file specified
    by path, in bytes. For example:

    This file is
    <!--#fsize file="example.ps"--> bytes.

    flastmod

    Syntax: flastmod file="path"

    Similar to fsize, flastmod inserts
    the modification date for the file
    specified by path. For example:

    This file was last modified on <!--#flastmod file="example.html"-->.

    config

    Syntax: config errmsg|sizefmt|timefmt="string"

    You can use the config directive to modify the default SSI behavior. The parameters are as follows:

    errmsg: Sets the default error message.
    For example:

    <!--#config errmsg="Error: Try again."-->

    sizefmt: Sets the format for file size
    data returned by the fsize directive.
    The string for this parameter is either
    "bytes" for file sizes in bytes, or
    "abbrev" for file sizes rounded
    to the nearest kilobyte. For example:

    <!--#config sizefmt="abbrev"-->

    timefmt: Sets the format for dates and times returned by the flastmod directive and the DATE_LOCAL and DATE_GMT variables.

    The possible values for this parameter are as follows:

  • Format Code

    Description

    %a Abbreviated day of the week, such as "Sun" for Sunday
    %A Unabbreviated day of the week
    %b Abbreviated month, such as "Jan" for January
    %B Unabbreviated month
    %d Two-digit, numerical day of the month, such as "01" .
    %D Numerical month, day, and year, such as "01/24/97"
    %e Numerical day, such as "1"
    %H 24-hour clock hour, such as "17"
    %I 12-hour clock hour, such as "11"
    %j Numerical day of the year, such as "278"
    %m Numerical month, such as "11"
    %M Minutes, such as "08"
    %p am or pm
    %r Time, such as "08:23:17 am"
    %S Seconds, such as "56"
    %T 24-hour time, such as "23:54:56"
    %U Week of the year, such as "47"
    %w Numerical day of the week, such as "0" for Sunday and "7" for Saturday
    %y Year of the current century, such as "97"
    %z Abbreviated time zone, such as "PST"
    skip=n Skips the next n rules in a sequence if the current rule matches
    S=n Same as "skip"
    env=VARIABLE:VALUE Sets the environment variable VARIABLE to the value VALUE
    E=VARIABLE:VALUE Same as "env"

    printenv

  • Syntax: printenv

    This directive prints a complete list
    of all existing SSI variables and
    their values. It has no attributes.
    For example:

    <!--#printenv-->

    set

    Syntax: set var="variable" value="value"

    This directive sets the value of an environment variable. For example:

    <!--#set var="country" value="United States"-->

  • 4. What extended SSI elements are available?

    Our server implements Extended SSI, which includes flow control elements much like the ones used in
    programming languages. With flow control, you can create more sophisticated SSI scripts.

    There are four flow control elements:

    <!--#if expr="test-condition"-->
    <!--#elif expr="test-condition"-->
    <!--#else-->
    <!--#endif-->

    The test-condition is one of the following:

    Test Condition

    Description

    string True if the string is not empty
    sring1=string2 True if string1 matches string2
    string1!=string2 True if string1 does not match string2
    (test-condition) True if test-condition is true
    !test-condition True if test-condition is false
    test-condition1 && test-condition2 True if both test-condition1 and test-condition2 are true
    test-condition1 || test-condition2 True if either test-condition1 or test-condition2 is true

    5. What SSI environment variables available?

    DOCUMENT_NAME

    The filename of the current HTML
    document. For example:

  • This file is called
    <!--#echo var="DOCUMENT_NAME"-->.

    DOCUMENT_URL

    The URL of the current file. For example:

    This document is located at
    <!--#echo var="DOCUMENT_URL"-->.

    QUERY_STRING_UNESCAPED

    An unencoded query string whose metacharacters are escaped with a backslash (\).

    DATE_LOCAL

    The local date and time. For example:

    Here in San Diego, it is now <!--#echo var="DATE_LOCAL"-->.

    DATE_GMT

    The current Greenwich Mean Time. For example:

    The current time is <!--#echo var="DATE_GMT"--> GMT.

    LAST_MODIFIED

    The date and time when the current
    file was last modified. For example:

    I last modified this page on
    <!--#echo var="LAST_MODIFIED"-->.

  • 6. What CGI environment variables can I use with SSI?

    SERVER_SOFTWARE=Stronghold/2.0

  • The name and version number of the server software

    SERVER_NAME=host

    The host being addressed in this request, which may be the main host or a virtual host, either as a fully-qualified domain name or an IP address

    HTTP_HOST=host

    The same as SERVER_NAME

    HTTP_ACCEPT=MIME-type[, MIME-type, MIME-type . . .]

    One or more MIME types that the client can accept

    HTTP_USER_AGENT=name/version (platform)

    The name, version number, and platform of the client software

    REMOTE_HOST=host

    The hostname or IP number of the client host or proxy server that originated the request

    REMOTE_PORT=port

    The client-side port number that originated the request

    REMOTE_ADDR=IP

    The IP number of the client host

    REMOTE_USER=username

    The remote username, if the script is subject to basic authentication

    REMOTE_IDENT=ident

    The remote username as supplied by identd, if available

    SERVER_PROTOCOL=protocol/version

    The protocol and version number used to send the request, which Stronghold also uses in its response in order to ensure compatibility with the client

    REQUEST_METHOD=method

    The method used in this request, such as GET or POST

    AUTH_TYPE=method

    The authentication method used in this request, if any

    CONTENT_TYPE=MIME-type

    The MIME type of any data attached to the request header

    CONTENT_LENGTH=n

    The size, in bytes, of any data attached to the request header

    SCRIPT_NAME=path/to/script

    The URI of the requested script

    SCRIPT_FILENAME=absolute/path/to/script

    The absolute path to the requested script

    SCRIPT_URI=method://host/path/to/script

    The URI of the requested script

    SCRIPT_URL=path/to/script

    The URL of the requested script

    QUERY_STRING=string

    The query-string for this transaction,
    embedded in the requested URL

  • 7. Where can I get more information about Server-Side Includes?

    More information on Server-Side Includes can be found at http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html