Server-side includes (SSIs)

Miva Host, Miva Hosting, Miva Merchant Modules, Miva Modules, ecommerce design Miva Host, Miva Hosting, Miva Merchant Modules, Miva Modules, ecommerce design Server-side includes (SSIs) are simple, HTML-embedded directives that instruct Stronghold to execute a program or include data in the HTML document. As a shorthand alternative to CGI, server-side includes can be handy. However, like CGI, they should be used with caution and an eye for security risks.

Syntax and Directives

All SSI directives follow this format:

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

Directives can have more than one parameter, and multiple parameters are separated by white space. The valid SSI directives are as follows:

echo
Syntax: echo var="environment-variable"
Context: HTML
Echo inserts the value of one or more SSI environment variables.

include
Syntax: include file|virtual="path"
Context: HTML
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"
Context: HTML
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: flasmodfile="path
Context: HTML

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"
Context: HTML
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 in four-digit format, such as "01/24/1997"
%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"

printenv
Syntax: printenv
Context: HTML
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"
Context: HTML
This directive sets the value of an environment variable. For example:
<!--#set var="country" value="Liberia"-->
Flow Control Elements

Stronghold 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
string1=string2 True if string1 matches string2
string1!=string2 True if string1 does not match string2
string1>string2 True if string1 is greater than string2
string1>=string2 True if string1 is greater than or equal to string2
string1<string2 True if string1 is less than string2
string1<=string2 True if string1 is less than or equal to 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

SSI Environment Variables

In a server-side include string, you can use any environment variables available to the server. SSI also has its own environment variables, listed here.

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 Francisco, 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"-->.

Miva Host, Miva Hosting, Miva Merchant Modules, Miva Modules, ecommerce design