PHP DevCenter

oreilly.comSafari Books Online.Conferences.

We've expanded our LAMP news coverage and improved our search! Search for all things LAMP across O'Reilly!

Search
Search Tips

advertisement

Listen Print Subscribe to PHP Subscribe to Newsletters

Session Tracking: Part I
Pages: 1, 2, 3

Cookie usage

Of course, this is likely to be the preferred method to track users because it is the easiest way to create a state of persistence between user sessions. However, keep in mind that some users might have cookie support disabled in the browser, or might be using a browser that is not capable of implementing cookies.



There are a few configuration directives found within the php.ini file that should be examined before attempting to use sessions and cookies. I'll present each here:

session.use_cookies (0 | 1)

This directive specifies whether or not cookies are to be used to store SIDs. A 0 disables cookie usage, while a 1 enables cookie usage.

session.name (Default: PHPSESSID)

This directive specifies the name of the cookie that stores the SID. The default is PHPSESSID.

session.cookie_lifetime (Default: 0)

This directive refers to the number of seconds that the cookie will "live" after it is first created. The default is 0, which results in the cookie expiring at the end of the session.

session.cookie_path (Default: /)

This directive specifies the domain path for which the cookie is valid. The default is /.

session.cookie_domain (Default: null)

This directive specifies the domain for which the cookie is valid. By default, this directive is simply set to null, which in this case means whitespace.

Keep in mind that if session.use_cookies is enabled, there is no need for you to explicitly call a cookie-setting function (set_cookie(), for example). PHP's session-handling functionality automatically does this for you.

Rewriting URLs

Rewriting a URL to include an SID is a bit uglier than using cookies, however it is also somewhat more foolproof, as it may not always be possible to use cookies.

The SID can be appended to a URL either manually or automatically. To manually append the SID, all you have to do is include the SID global reference within the URL, like so:

<a href="configure.php?<?=SID?>">Go to the configuration page</a>

Of course, manually attaching the SID is not always the most convenient way to do things. Therefore, you can also ensure that it is automatically appended by compiling PHP with -enable-trans-id. In doing so, you will not have to include the <?=SID?> within the URL, as it will be automatically placed there.

Let's get to session-tracking already!

By now I'm sure you're just itching to begin creating user sessions. Have no fear! In this section I'll introduce several examples that should provide you with a basis for building your own session-oriented applications using this cool feature.

A simple example

In the first example, I'll demonstrate how an SID is created and how a session variable is stored for later use. Consider a scenario where you would like to grant the user the possibility to choose their own background color. This background color will then be stored and used throughout the various other pages found on the web site. For sake of simplicity, I'll just hard-code the value of the $bgcolor variable ("#8080ff") into the script. Furthermore, I'll assume that cookie support is enabled and is supported by the client browser.

Listing 1: Script creating new session and registering session variable.

<?
// create a new session
session_start();

// register a session-variable
session_register("bgcolor");

// Assign a value to the session-variable
$bgcolor = "#8080ff";
?>
<html>
<head>
<title>Session Example #1</title>
</head>

<body bgcolor="<?=$bgcolor?>" text="#000000" link="#000000" vlink="#000000" alink="#000000">

Welcome to a session-enabled page! The background color on the next page will be set to a stylish blue.<p>
<a href = "1-2.php">Go to another session-enabled page</a>.
</body>
</html>

Clicking upon the link provided in Listing 1 takes the user to Listing 2 (1-2.php), shown below. The purpose of Listing 2 is to demonstrate that the cookie has been set and the SID can be retrieved from it. Also, this script retrieves the value of the session variable $bgcolor, displaying it both as the page background color, and within a string.

Listing 2: Script demonstrating passage of session variables. ('1-2.php')

<?
// Resume session created in Listing 1-2
session_start();
?>
<html>
<head>
<title>Session Example #1</title>
</head>

<body bgcolor="<?=$bgcolor?>" text="#000000" link="#808040" vlink="#606060" alink="#808000">

<?
// Retrieve SID from cookie.
print "Your SID is $PHPSESSID <br>";

// Display the value of the $bgcolor variable.
print "The persistent background color is: $bgcolor.";
?>

</body>
</html>

Note that if the session.cookie_lifetime had been set to 3,600 seconds for example, both the background color and the SID would persist for one hour after the initial arrival at Listing 1, regardless of how many times the user leaves and returns to the site during that timeframe.

Pages: 1, 2, 3

Next Pagearrow




Tagged Articles

Be the first to post this article to del.icio.us

Sponsored Resources

  • Inside Lightroom
Advertisement

Sponsored by:

O'Reilly Media

©2009, O'Reilly Media, Inc.
(707) 827-7000 / (800) 998-9938
All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.
About O'Reilly
Academic Solutions
Authors
Contacts
Customer Service
Jobs
Newsletters
O'Reilly Labs
Press Room
Privacy Policy
RSS Feeds
Terms of Service
User Groups
Writing for O'Reilly
Content Archive
Business Technology
Computer Technology
Google
Microsoft
Mobile
Network
Operating System
Digital Photography
Programming
Software
Web
Web Design
More O'Reilly Sites
O'Reilly Radar
Ignite
Tools of Change for Publishing
Digital Media
Inside iPhone
O'Reilly FYI
makezine.com
craftzine.com
hackszine.com
perl.com
xml.com

Partner Sites
InsideRIA
java.net
O'Reilly Insights on Forbes.com