Server-Side Includes (SSI)
Server-Side Includes (SSIs) can be a very powerful tool on your web pages. They allow you to not only use template pages across your site but can process and show variables, allow function-like statements and even connect to databases. This comprehensive guide is designed both for beginners and as a reference for advanced users.
FORMAT
The format variable is used to provide a template
for the format of data that is returned from and odbc query. Use this variable
to set up the appearance of data that will be returned from subsequent
statement tag operations that return data from a database (i.e. the SQL
statement 'SELECT').
The format of the format variable is 'format="'<cprintfstatement>'"'where;
<cprintfstatement> is a standard C language
printf format string with the restriction of only allowing string (%s)
insertions. The user is referred to any C language text for a description
of this format. The number of instances of %s must be equal to the number
of fields selected in a the subsequent SQL SELECT statement token.
Example:
Suppose one wanted to query the 'CUSTOMERS' table
from the above connected 'odbcsht' database to display the columns 'name',
'age', and 'viscosity' with each row on a separate line. One may use the
following sequence of statements: Connect to the database with a connect
token as described above.
Setup the output format:
<!--#obdc format="<P>Thecustomer's
name is %s, and he is %s years old, he prefers a motor oil with SPF %s
viscosity" -->.
Execute the query with a statement token as described
above.
Each row of the database will the be inserted
into the HTML page per the format statement. For example if the database
has 3 rows the HTML output would look something like this:
Customer's name is Conan, and he is 29 years
old, he prefers a motor oil with SPF 15 viscosity
Customer's name is Kevin, and he is 45 years
old, he prefers a motor oil with SPF 30 viscosity
Customer's name is Alan, and he is 43 years old,
he prefers a motor oil with SPF 50 viscosity
Exec Tag
The exec tag provides for executing an external
executable system command.
cmd The cmd variable is used to specify the name
and command line parameters of any shell executable command. The format
is: 'cmd="'<exename> <argument list>'"' where <exename> is the
path and/or name of the executable command and <argument list> is the
list of command line arguments to send to the executable command. If a
full path is not specified then the 'PATH' environment variable of the
server will be searched for the executable. A shell executable is any executable
that may be executed on the console, this allows web administrators and
authors to use executables that accept command line arguments as an alternative
to CGI executables (that accept only environment variables). The output
of shell executables may be echoed into the HTML document, see the 'config
..cmdecho' tag for details.
cgi The cgi variable is used to specify the name
a CGI executable(script) relative to the base directory of the HTTP server.
The format is: 'cgi="'<exename>"' where <exename>is
the path and name of the CGI executable relative to the base directory
of the web space. The CGI will be executed and any cgi output will be inserted
into the current HTML document at the location of the cgi token.
Echo Tag
The echo tag provides for inserting the data
of certain variables into an HTML page. The only variable under the echo
tag is 'var'. The data in an echo token is translated into a string that
depends on the value in the variable and that string is inserted into the
HTML page at the location of the echo token in the HTML page. Example;
The following string in an HTML page :
The Greenwich Mean Time is <!--#echo var="DATE_GMT"-->
and I am so happy to be here.
would resolve at runtime into something like:
The Greenwich Mean Time is Fri Jul 21 21:24:48
1995 and I am so happy to be here.
The values allowed as variable data are available
form two sources: Form fields and environment variables.
Form Fields are those datum which are available
when a POST operation is performed on a SSI enabled HTML document from
an HTML form. Each form field may be referenced by name.
Example:
Suppose one has an HTML form with several fields
defined, one of which is named 'First Name'. When an HTTP client POSTs
the form to an SSI enabled HTML document with an echo token: <--#echo
var="First Name" -->, the HTML document will then have the contents of
the supplied 'First Name' field inserted upon transmission to the client.
Environment variables are a set of datum defined by the local server and
remote client and are defined below.
DOCUMENT_NAME This variable is the complete
local directory path of the current document.
DOCUMENT_URI This variable is the local
path of the current document referenced to the base directory of the webspace.
QUERY_STRING_UNESCAPED This variable is
the unescaped query string sent by the client browser, all shell-special
characters escaped with \.
DATE_LOCAL This variable is current local
date and time.
DATE_GMT This variable is the current
Greenwich Mean date and time.
LAST_MODIFIED This variable is the date
and time of the last modification of the current document.
REMOTE_ADDR This variable is the IP address
of the remote client browser.
QUERY_STRING This variable is the raw
query string sent from the remote browser.
SERVER_SOFTWARE This variable is the name
of the HTTP server software.
SERVER_NAME This variable is the local
computer name of the HTTP server.
GATEWAY_INTERFACE This variable is the
name/version of the Common Gateway Interface served on this HTTP server.
SERVER_PROTOCOL This variable is the name/version
of HTTP served on this HTTP server
SERVER_PORT This variable is the IP port
the HTTP server is answering on.
REQUEST_METHOD This variable is the method
by which the current document was requested.
PATH_INFO This variable is the extra path info
that is sent. This information is regarded as virtual (the path is relative
to the base directory of the HTTP server).
PATH_TRANSLATED This variable is the 'PATH_INFO'
variable translated from virtual to local (physical) disk location.
SCRIPT_NAME This variable is the virtual
path of the script being executed.
REMOTE_HOST This variable is the host
name of the remote client.
AUTH_TYPE This variable is the authentication
method used to validate the remote client.
REMOTE_USER This variable is the user
name used to validate authentication from the remote client.
REMOTE_IDENT This variable is the remote
user name if supporting RFC931 identification.
CONTENT_TYPE This variable is the content
type of the attached information in the case of a POST or PUT.
CONTENT_LENGTH This variable is the length
of the attached information in the case of a POST or PUT.
HTTP_ACCEPT This variable is a comma separated
list of mime types that are accepted by the remote browser.
HTTP_USER_AGENT This variable is
the name of the remote client browser software.
REFERER This variable is the ULR of the
HTML document which referred the remote client to this document.
FROM This variable is the name (most likely
the-mail address) of the remote client user.
FORWARDED This variable is the name of
the proxy server through which this document is being processed.
ACCEPT_LANGUGE This variable lists the
human languages that are acceptable to the remote client.
HTTP_COOKIE This variable contains the
cookie sent by the remote client, and is explained in detail below.
Include Tag
The include tag provides for inserting the contents
of a file into the HTML page at the location of the include token. The
SSI+ include tag is fully recursive, each document inserted may itself
contain further SSI+ insert tokens or any other SSI+ tokens.
virtual - The virtual variable is used to specify
a file path/name relative to the base directory of the HTTP server. The
format is: 'virtual="'<filename>'"' where <filename>a file path/name
relative to the base directory of the HTTP server.
file - The file variable is used to specify
a file path/name relative to the directory of the current document. The
format is: 'file="'<filename>'"' where <filename>a file path/name
relative to the directory of the current document.
Example:
The following token on an HTML document inserts
all text and SSI+ tokens from the file <html base directory>'SSI\INSERT.SHT'into
the current document before transmission back to the client browser:
<!--#include virtual="SSI\INSERT.SHT"
-->
FSize Tag
The fsize tag provides for inserting the size
of the given file into the HTML page at the location of the fsize token.
virtual The virtual variable is used to
specify a file path/name relative to the base directory of the HTTP server.
The format is: 'virtual="'<filename>'"' where <filename>a file path/name
relative to the base directory of the HTTP server.
file The file variable is used to specify
a file path/name relative to the directory of the current document. The
format is: 'file="'<filename>'"' where <filename>a file path/name
relative to the directory of the current document.
Example:
The following token on an HTML document inserts
the size of file 'SSI\INSERT.SHT' into the current document before transmission
back to the client browser:
<!--#fsize virtual="SSI\INSERT.SHT" -->
FLastMod Tag
The flastmod tag provides for inserting the size
of the given file into the HTML page at the location of the flastmod token.
virtual - The virtual variable is used to
specify a file path/name relative to the base directory of the HTTP server.
The format is: 'virtual="'<filename>'"' where <filename>a file path/name
relative to the base directory of the HTTP server.
file - The file variable is used to specify
a file path/name relative to the directory of the current document. The
format is: 'file="'<filename>'"' where <filename>a file path/name
relative to the directory of the current document.
Example:
The following token on an HTML document inserts
the size of file 'SSI\INSERT.SHT' into the current document before transmission
back to the client browser:
<!--#fsize virtual="SSI\INSERT.SHT" -->
Config Tag
The config tag provides for setting certain HTML
output options.
errmsg The errmsg variable is used to
set the error message that gets printed when the SSI+ engine encounters
a parsing error or unavailable required data. This variable is retained
for compatability with standard SSI, you may wish to use the onerr variable
instead.
timefmt The timefmt variable is used to
set the format of echo..time SSI+ token output.
sizefmt The sizefmt variable is used to
set the format of echo..size SSI+ token output.
cmdecho The cmdecho variable is used to
set the output option of subsequent exec..cmd tokens. The format is 'cmdecho'='"<onoroff>"'where
< onoroff> is either 'ON' or 'OFF'. When the SSI+ parsing engine encounters
an exec ..cmd token it executes the command. If the command returns output
then that output may be echoed into the HTML document or it may be ignored.
The format of the data echoed is dependent on the presence or absence of
config..cmdprefix and config..cmdpostfix tokens in the document. In the
absence of config..cmdprefix and config..cmdpostfix tokens the output will
be echoed exactly as returned with no formatting and no special character
interpretation. In the presence of config..cmdprefix and/or config..cmdpostfix
tokens the output will be formatted and interpreted. To activate echoing
set cmdecho to 'ON' otherwise set it to 'OFF'. The default is ' OFF'.
cmdprefix The cmdprefix variable is used
to set the string prefixed to each line out output from subsequent exec
..cmd tokens. The format is 'cmdprefix="'<string>"'where <string>
is any character string and/or HTML format tags. When the SSI+ parsing
engine encounters an exec..cmdtoken it executes the command. If the command
returns output then that output may be echoed into the HTML document or
it maybe ignored. If the output is echoed (see 'cmdecho' above),then each
line output from the executable will be prefixed with the string supplied
before being echoed into the HTML document.
cmdpostfix
The cmdpostfix variable is used to set the string appended to the end of
each line out output from subsequent exec..cmd tokens. The format is 'cmdpostfix="'<string>"'where
<string> is any character string and/or HTML format tags. When the SSI+
parsing engine encounters an exec..cmdtoken it executes the command. If
the command returns output then that output may be echoed into the HTML
document or it maybe ignored. If the output is echoed (see 'cmdecho' above),then
each line output from the executable will be appended with the string supplied
before being echoed into the HTML document.
onerr The onerr variable is used to set
the action to be taken when the SSI+ engine encounters an error. The format
is 'onerr="'<action>"'where <action> is one of the following tags.
'
goto ' causes a jump to a label token (see below).
The format of the goto tag is: 'goto ' <label > where <label > is
the name of a label defined in a subsequent label tag (see below).
'print' causes text to be printed. The format
of the print tag is:
'print "'<text>"' where <text> is any HTML
text or tag.
'error' causes the current config..error message
to be printed.
'break ' causes termination of the HTML document
transmission to the client.
'errorbreak' causes the current config..error
message to be printed, and then causes termination of the HTML document
transmission to the client.
'printbreak' causes text to be printed, and then
causes termination of the HTML document transmission to the client. The
format of the printbreak tag is the same as the format of the print tag.
Example:
The following token on an HTML document sets the
SSI+ error message to '*** ERROR ***'. From this point on down when an
error occurs in the SSI+ parsing engine the message '*** ERROR ***'will
be inserted into the HTML document at the location of the offending SSI+
statement.
<!--#config errmsg="*** ERROR ***" -->
Example:
The following token on an HTML document sets the
SSI+ error action to print a message and terminate the document. From this
point on down when an error occurs in the SSI+ parsing engine the message
will be inserted into the HTML document at the location of the offending
SSI+ statement, and the document will be terminated
<!--#config onerr="printbreak "Sorry,
we encountered an error while processing your document."" -->
Example:
Suppose you wish to create an HTML document that
performs a 'PING' operation on address '204.96.64.171' and then echo the
results back to the client browser, with each line echoed as an element
in an unnumbered list. Insert the following lines into your HTML document:
<UL>
<!--#config cmdecho="ON" -->
<!--#config cmdprefix="
" -->
<!--#exec cmd="ping 204.96.64.171 -w 20000"
-->
</UL>
When the document is accessed
by a remote browser the output would look something like this: Pinging
204.96.64.171 with 32 bytes of data: Reply from 204.96.64.171: bytes=32
time<10ms TTL=32 Reply from 204.96.64.171: bytes=32 time<10ms TTL=32
Reply from 204.96.64.171: bytes=32 time<10ms TTL=32 Reply from 204.96.64.171:
bytes=32 time<10ms TTL=32
Goto Tag
The goto tag provides for jumping to a label
token without executing any SSI code or printing any HTML text between
the goto token and the label token. The format of the goto tag is: 'goto
="'<label >'"' where <label > is the name of a label defined in a
subsequent label tag (see below).
Example. The following document fragment demonstrates
a goto to a label.
<!--#goto ="testlabel" --> <P>This
line will not print. <!--#label ="testlabel" --> <P>This line will
print.
Label Tag
The label tag provides a place for a goto or
if..goto token to jump. The format of the label tag is: 'label ="'<label>'"'
where <label> is any string less than 51 characters long without space('
') characters. When the SSI+ engine encounters a label token nothing happens,
it is simply a place holder for a previous goto to jump to.
Break Tag
The break tag provides for termination of the
HTML document at any point. When the SSI+ engine encounters a break token,
the HTML document is immediately truncated and transmission to the client
is ended.
Example. The following document fragment demonstrates
a break token.
<P>This line will print. <!--#break
--> <P>This line will not print because the document has been truncated
and transmission to the client is terminated.
Return to Server-Side Includes
|