Submission Chamber Logo

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



Copyright © 2001-2006 Submission Chamber.
The Submission Chamber contains adult material and is intended for adults 18 years & over!
Duplication, publication or distribution of this site in part or in whole is strictly prohibited.