The setting of a cookie must happen
before
any content is sent from the Apache server. This is
because the cookie is included in the headers that precede the actual output of the requested document.
A special construct exists for this type of scenario, called the
initialization dock
, which is
defined with <dock type="init">. This tag must be the first LXP tag following the
<lxp> tag in your document. Within it, you may use the
<setcookie> tag. Here is the syntax for opening an initialization dock:
<lxp>
<dock type="init">
Once the dock is open, you may set cookies with the following syntax:
<setcookie name="
cookie_name
" value="
cookie_value
"
domain="
cookie_domain
" path="
cookie_path
"
expires="
cookie_expiration
" />
When the dock is closed with </dock>, the cookies will be set, and content
following the closing dock tag will be sent to the client.
Only the name and value attributes are required to
set a cookie. Supplying an empty value has the effect of deleting the cookie.
Setting an explicit domain is helpful in specifying the detail of a domain the cookie should be accepted for (e.g.,
www.thelinuxreview.com
, versus
.thelinuxreview.com
for all subdomains).
Similarly, the path attribute specifies a URI path to maintain the cookie for (e.g.,
path="/app/").
If the expires attribute is omitted, the cookie is set as a
session
cookie, and it will expire when the browser is closed. Otherwise, the value represents either
the number of hours in which the cookie should expire, or the complete
epoch
value (the number of
seconds since 1970 to the moment the cookie should expire). If the value is larger than one million, it is implied that it
is describing the latter.
Note that, unlike some web languages, LXP documents will be immediately aware of any cookies that you have set within
the same request that sets the cookie. This awareness is handled through logic internal to LXP, and included documents of
other types (such as PHP) will not be aware of a cookie that has been set until a request following the one which sets the
cookie is submitted. This is due to the client-side nature of cookies.
Note: An initialization dock is also a good region in which to perform any general initialization for a document, as no
comments or newlines in an initialization dock will be sent to the browser. You can include an external LXP file from
within the dock.