Celestial Enterprises
How To use SSI Your Business Home Web Page(s)
[Celestial Enterprises is not just another Internet Service Provider]
![[Colour Bar]](../icons/bar00001.gif)
What does SSI stand for?
SSI is the acroymn for Server-Side Includes.
What is SSI?
Normally, a Web server simply justs sends your HTML document to the requesting client without trying to interpret any of the HTML codes.
While on the other hand, a Web server with SSI capabilities gives the HTML (Web page) designers a bit more flexibility to their creative thought.
This is achieved by allowing the Web server to examine your HTML Web page document, by looking for special commands embedded as SGML comments (SSI tags).
When the Web server locates an embedded SGML comment, it will interpret and parse the SSI tag.
What files will get interpreted by the Web server?
Any file that has the extentsion .shtml. These files still must be located in your .public_html directory(s).
Why don't they work?
They do, really! It's just that you need to place your modified documents back under your .public_html directory(s) and then you must view them via the Celestial Enterprises Web server.
e.g. Say you have just created the following sample HTML document name SSI.shtml
<HTML>
<HEAD>
<TITLE>Server-Side Includes Sample Document</TITLE>
</HEAD>
<BODY BGCOLOR="BBBBBB" BACKGROUND="/icons/bar00000.gif">
<CENTER>
<FONT SIZE=+7><B>Server-Side Includes Sample Document</B><BR></FONT>
</CENTER>
<CENTER>
<!--#config timefmt="%A %B %d, %Y" -->
<!--#echo var="DATE_LOCAL" --> -
<!--#config timefmt="%I:%M:%S %p" -->
<!--#echo var="DATE_LOCAL" --> AEDT
</CENTER>
<P>
<!--#if expr="($REMOTE_IDENT = unknown) || (!$REMOTE_IDENT)" -->
Greeting's Internet commuter from <I><!--#echo var="REMOTE_HOST" --> (<!--#echo var="REMOTE_ADDR" -->)</I>
<!--#else -->
Greeting's <I><!--#echo var="REMOTE_IDENT" --> from <!--#echo var="REMOTE_HOST" --> (<!--#echo var="REMOTE_ADDR" -->)</I>
<!--#endif -->
</P>
</BODY>
</HTML>
You would upload your newly created master piece onto the server under your .public_html directory.
In order to view your .shtml document you would need to use your Web browser and surf to the following URL;
http://www.celestial.com.au/~username/SSI.shtml
Basic Elements
The document is parsed as an HTML document, with special commands embedded
as SGML comments. A command has the syntax:
<!--#element attribute=value attribute=value ... -->
The value will often be enclosed in double quotes; many commands only allow
a single attribute-value pair.
The allowed elements are:
- config
-
This command controls various aspects of the parsing. The valid attributes
are:
- errmsg
- The value is a message that is sent back to the client if an error occurs
whilst parsing the document.
e.g. <!--#config errmsg="Oops, did I make a mistake. -->
- sizefmt
- The value sets the format to be used which displaying the size of a file.
Valid values are
bytes for a count in bytes, or
abbrev for a count in Kb or Mb as appropriate.
e.g. <!--#config sizefmt="Kb" -->
- timefmt
- The value is a string to be used by the
strftime(3) library
routine when printing dates.
e.g.
<!--#config timefmt="%A %B %d, %Y" -->
<!--#echo var="DATE_LOCAL" -->
Ordinary characters placed in the format string are copied without conversion. Conversion specifiers are introduced by a `%' character, and are replaced as follows:
- %a
- The abbreviated weekday name according to the current locale.
- %A
- The full weekday name according to the current locale.
- %b
- The abbreviated month name according to the current locale.
- %B
- The full month name according to the current locale.
- %c
- The preferred date and time representation for the current locale.
- %d
- The day of the month as a decimal number (range 0 to 31).
- %H
- The hour as a decimal number using a 24-hour clock (range 00 to 23).
- %I
- The hour as a decimal number using a 12-hour clock (range 01 to 12).
- %j
- The day of the year as a decimal number (range 001 to 366).
- %m
- The month as a decimal number (range 10 to 12).
- %M
- The minute as a decimal number.
- %p
- Either `am' or `pm' according to the given time value, or the corresponding strings for the current locale.
- %S
- The second as a decimal number.
- %U
- The week number of the current year as a decimal number, starting with the first Sunday as the first day of the first week.
- %W
- The week number of the current year as a decimal number, starting with the first Monday as the first day of the first week.
- %w
- The day of the week as a decimal, Sunday being 0.
- %x
- The preferred date representation for the current locale without the time.
- %X
- The preferred time representation for the current locale without the date.
- %y
- The year as a decimal number without a century (range 00 to 99).
- %Y
- The year as a decimal number including the century.
- %Z
- The time zone or name or abbreviation.
- %%
- A literal `%' character.
- echo
-
This command prints one of the include variables, defined below.
If the variable is unset, it is printed as
(none).
Any dates printed are subject to the currently configured timefmt.
Attributes:
- var
- The value is the name of the variable to print.
e.g. <!--#echo var="DATE_LOCAL" -->
- fsize
-
This command prints the size of the specified file, subject to the
sizefmt format specification. Attributes:
- file
- The value is a path relative to the directory containing the current
document being parsed.
- virtual
- The value is a (%-encoded) URL-path relative to the current document being
parsed. If it does not begin with a slash (/) then it is taken to be relative
to the current document.
- flastmod
-
This command prints the last modification date of the specified file,
subject to the
timefmt format specification. The attributes are
the same as for the fsize command.
- include
-
This command inserts the text of another document or file into the parsed
file. Any included file is subject to the usual access control.
An attribute defines the location of the document; the inclusion is done for
each attribute given to the include command. The valid attributes are:
- file
- The value is a path relative to the directory containing the current
document being parsed. It cannot contain
../, nor can it be an
absolute path. The virtual attribute should always be used
in preference to this one.
- virtual
- The value is a (%-encoded) URL relative to the current document being
parsed. The URL cannot contain a scheme or hostname, only a path and
an optional query string. If it does not begin with a slash (/) then it
is taken to be relative to the current document.
A URL is constructed from the attribute, and the output the server
would return if the URL were accessed by the client is included in the parsed
output. Thus included files can be nested.
- set
- This sets the value of a variable. Attributes:
- var
- The name of the variable to set.
- value
- The value to give a variable.
For example:
<!--#set var="category" value="help"-->
Include variables
In addition to the variables in the standard CGI environment, these are available for the echo command, for if and elif, and to any program invoked by the document.
- HTTP_USER_AGENT
- The remote client's Web browser.
- REMOTE_HOST
- The remote client's host name.
- REMOTE_ADDR
- The remote client's host name's address.
- REMOTE_IDENT
- The remote client's user name (only if the have a Unix account).
- DATE_GMT
- The current date in Greenwich Mean Time.
- DATE_LOCAL
- The current date in the local time zone.
- DOCUMENT_NAME
- The filename (excluding directories) of the document requested by the user.
- DOCUMENT_URI
- The (%-decoded) URL path of the document requested by the user. Note that in the case of nested include files, this is not then URL for the current document.
- LAST_MODIFIED
- The last modification date of the document requested by the user.
Flow Control Elements
The basic flow control
elements are:
<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->
The if element works like an
if statement in a programming language. The test condition
is evaluated and if the result is true, then the text until
the next elif, else.
or endif element is included in the
output stream.
The elif or else
statements are be used the put text into the output stream
if the original test_condition was false. These elements
are optional.
The endif element ends the
if element and is required.
test_condition is one of the following:
- string
- true if string is not empty
- string1 = string2
string1 != string2
- Compare string1 with string 2. If string2 has the form /string/
than it is compared as a regular expression.
Regular expressions have the same syntax as those found in the
Unix egrep command.
- ( 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
"=" and "!=" bind more tightly than "&&" and "||".
"!" binds most tightly. Thus, the following are equivalent:
<!--#if expr="$a = test1 && $b = test2" -->
<!--#if expr="($a = test1) && ($b = test2)" -->
Anything that's not recognized as a variable or an operator is
treated as a string. Strings can also be quoted: 'string'.
Unquoted strings can't contain whitespace (blanks and tabs)
because it is used to separate tokens such as variables. If
multiple strings are found in a row, they are concatenated using
blanks. So,
string1 string2 results in string1 string2
'string1 string2' results in string1 string2
Variable substitution is done within quoted strings. You can put
a dollar sign into the string using backslash quoting:
<!--#if expr="$a = \$test" -->
![[Colour Bar]](../icons/bar00001.gif)
For problems relating to our web pages please feel free to contact
Celestial Enterprises Webmaster