revUp - Updates and news for the LiveCode community
Issue 118 | September 20th 2011 Contact the Editor | How to Contribute

How to use Cookies on LiveCode Server
Follow this step by step lesson to learn how to record visitor actions on your sites.

by Hanson Schmidt-Cornelius

The LiveCode Server product brings our English like language to the server environment. The server engine is a separate build of the LiveCode engine with specific syntax and functionality that makes it suitable for use in command-line contexts and, in particular, as a CGI processor.

This lesson describes how to process cookies in your LiveCode Server scripts. Code samples are provided

Introduction

Cookies provide a convenient way to store session specific information client side.
The information stored in cookies varies and often covers user names, encrypted passwords or shopping trolley content.

Cookies are widely used, and their management is largely down to the configuration of a user's web browser and cookie clean-up policy. The user can enable and disable the support for cookies and remove stored cookies from their machine at any time.

Specifying the Cookie Duration

As we discussed in the Introduction, the user can control if cookies are supported and when cookies are to be removed from their system. As a webmaster, this is not a means on which to rely when considering the time a cookie should be available.

Cookies can be configured to have a lifespan that is set when the cookie is created by the web page. The following examples demonstrate the creation of two cookies, called "yearcookie" and "sessioncookie":

<?lc
// Cookie lasts 1 year
put cookie "yearcookie" for "/" with "This cookie will stay on your system for a year" until (the seconds + 60 * 60 * 24 * 365)

// Cookie lasts until browser closes
// The default expiry time of a cookie is set to when the user's browser closes.
put cookie "sessioncookie" for "/" with "This cookie will be cleared when you close your browser closes"
?>

Reading Cookies

Cookies can be read from the user's computer using the $_COOKIE keyword. The following code prints the contents of the cookies that were created in the previous examples to the screen:

<?lc
// Output cookies
put "PRINTING COOKIES:" & "<br /><br />"

put $_COOKIE into tCookiesArray

if tCookiesArray is an array then
    printArray "$_COOKIE", tCookiesArray
else
    put "no cookies found"
end if

put "<br /><br />" & "FINISHED"
?>

Supporting Code

The code shown so far provides the basic mechanism to save and read cookie content. The array printing command that formats the output of the cookie content is provided here. This code is provided separately in this lesson, as it only serves to present the content in a readable form for this lesson. Normally you would write LiveCode commands to process the cookie content and extract the login information, shopping cart data or other content stored.

<?lc
// Commands to display an array in readable form
command printArray pArrayName, pArray
    if pArray is an array then
        put pArrayname & " = {" & "<br />"
        dumpArray pArray, " ", " "
        put "}"
    end if
end printArray

command dumpArray pArray, pIndent, pIndentString
    local tKeys
    if pArray is an array then
        put the keys of pArray into tKeys
        sort lines of tKeys
        repeat for each line tKey in tKeys
        if pArray[tKey] is an array then
            put pIndent & tKey & " = {" & "<br />" & return
            dumpArray pArray[tKey], (pIndent & pIndentString), pIndentString
            put pIndent & "}" & "<br />" & return
        else
            put pIndent & tKey & " = " & pArray[tKey] & "<br />" & return
            end if
        end repeat
    end if
end dumpArray
?>

Output - No Cookies

The first time you run the code listed in this lesson, you may get the following output:

    PRINTING COOKIES:

    no cookies found

    FINISHED

This may be because the printing code is executed before you have saved the cookies or because of a latency that exists when writing a cookie to a file system.
If no cookie data is displayed, then refresh your web browser screen. You should then receive the output that is shown in the next step.

Output - Cookies Found

If your code was successful, then you should see the following output in your web browser window:

    PRINTING COOKIES:

    $_COOKIE = {
    sessioncookie = This cookie will be cleared when you close your browser closes
    yearcookie = This cookie will stay on your system for a year
    }

    FINISHED

Both cookie examples are listed and the content of the two cookies is also displayed.

Jan Schenkel

About the Author

Hanson Schmidt-Cornelius is an experienced software developer with an interest in artificial intelligence.

 

 

Main Menu

What's New

Sign up for the September Academy