PHP and Cookies; a Good Mix!

PHP and Cookies; a Good Mix!

by: Dennis Pallett

Introduction

Cookies have long been used in PHP scripts, and are a very useful function. But what exactly are cookies? Maybe you have used then, but you still don’t know exactly what they are. Or you are completely new to cookies? It doesn’t matter, because in this tutorial I will show you exactly what cookies are, and what they are used for.

Cookies in a nutshell

Cookies are small pieces of information that is stored on the computer of your visitors. Each browser handles it differently, but most simply store the information in a small text file. Internet Explorer has a special folder, which can be found in your C:\Windows or C:\Windows\System32 folder. You can delete all your cookies, by going to the Options and กClearing Cookiesก or deleting them by hand. I don’t recommend this though.

Almost every website uses cookies. If you go to Amazon.com, you will get several cookies. The same goes for CNN.com. Even Google uses cookies! They are extremely useful for (temporarily) storing information. For example, if you have a login system for your visitors, you could save their userid and password (very heavily encrypted!) so they are automatically logged in the next time they visit your website.

Or you could remember their last visit, and highlight everything that is new. And thatกs just the beginning.

Using Cookies

Using cookies in PHP is extremely easy. In fact, there is nothing to it, because of PHPกs inbuilt setcookie() function (http://php.net/setcookie). Have a look at the documentation, and then try the following example:

<?php

// Set a cookie

// Cookie name: name

// Cookie value: Dennis Pallett

// Cookie expire: in 24 hours

setcookie (กnameก, กDennis Pallettก, time() + (60*60*24));

?>

If you run the code above, then a cookie will be set. Thatกs all. The cookie name and value are pretty obvious. The cookie expire is when the cookie expires, or goes away. Simply use the time() function (http://php.net/time) and add the number of seconds you want to have the cookie available to it. In the example I added 60*60*24=86400 seconds, or 24 hours.

If you have looked at the documentation, you probably noticed there are additional arguments. As the documentation says, the path is to limit a cookie to a specific path on your web server. This is often used when you run multiple instances of the same script in separate directories. You can safely omit this argument when it doesn’t matter if the cookie is available sitewide.

There is also the domain argument. This can be used to limit the cookie to a specific subdomain, e.g. test.example.com. You can also safely ignore this argument, or set it to .example.com (note the beginning period, this is essential!).

Finally, there is also the secure argument. This argument is only used for cookies that are sent over a secure HTTPS connection (SSL). Just ignore this argument, unless you’re working with a secure connection.

One thing that should be mentioned is that cookies must be set, before you display any HTML/text. Itกs probably best if you turn on output buffering by putting ob_start() (http://php.net/ob_start) at the top of your page.

Now that you have set a cookie, you probably want to retrieve the value as well. After all, that is the whole point of using cookies. Thankfully, as PHP is ever so easy, you can retrieve the same way as you retrieve a GET value. See the following example to retrieve the value of the previous example:

<?php

echo กYour name is ก . $_COOKIE[กnameก];

?>

This should print "Your name is Dennis Pallett". Thereกs nothing more to it. Itกs just that easy!

Finally, one thing you probably want to do as well is remove cookies. This is as easy as setting them. Simply change the value of the cookie to FALSE, and change the expire date to 3000 seconds. See the following example:

<?php

setcookie (กnameก, FALSE, time()1000);

?>

Checking if cookies are enabled

Before you start using cookies, you must make sure your visitor has cookies enabled. This can be done with a simply PHP checking script. Unfortunately, the PHP page needs to reload to check for cookies. But this can be done very transparently, and your visitor should hardly notice anything.

The following example will first set a test cookie, then reload the page, and finally check whether cookies are enabled.

<?php

error_reporting (E_ALL ^ E_WARNING ^ E_NOTICE);

// Check if cookie has been set or not

if ($_GET[กsetก] != กyesก) {

// Set cookie

setcookie (‘testก, ‘testก, time() + 60);

// Reload page

header ("Location: checkcookies.php?set=yes");

} else {

// Check if cookie exists

if (!empty($_COOKIE[‘testก])) {

echo "Cookies are enabled on your browser";

} else {

echo "Cookies are <b>NOT</b> enabled on your browser";

}

}

?>

Run the code above, and see what the output is. Check if cookies are enabled in your browser. If they’re not enabled, then you can enable them by going to your browserกs options. Unfortunately, this is different from each browser, so I can’t give you exact instructions. But Google can.

Storing Arrays

One feature of cookies that is often missed in articles is the ability to story arrays. Cookies can be used to store multidimensional arrays, which can be extremely useful to store data.

Consider the following code;

<?php

setcookie ("name[first]", "Dennis", time() + (60*60*24));

setcookie ("name[last]", "Pallett", time() + (60*60*24));

?>

You can then display these two cookies using the following code:

<?php

echo "First Name: " . $_COOKIE[กnameก][กfirstก];

echo "<br />Last Name: " . $_COOKIE[กnameก][กlastก];

?>

The cookie กnameก is an array, and has multiple values. You can even go deeper and have multidimensional arrays, e.g. $_COOKIE[กnameก][‘testก][กsomethingก][กvalueก]. You could store whole arrays of data in cookies. But beware that you don’t store too much data, there are certain size limits to cookies.

In Conclusion…

Cookies are really versatile, and can be used for a lot of different purposes. Many websites use cookies, and cookies can really make your website more personalized. Using cookies in PHP isn’t hard at all, and you should be able to use them without any difficulty.

Before actively using cookies in your website, you must check whether the visitor has enabled them in their browser. If they don’t have cookies enabled, you must either redirect to a noncookies version of your website, or you can make sure your website also works without cookies.

You can download a sample script at http://www.phpit.net/demo/php%20and%20cookies/logger.zip, where cookies are used in a (somewhat) practical way. In this example, there is a logging module, called log.php and a display module, called history.php. Basically, you include the log.php in other PHP pages, and then you can view history.php to lookup all the pages you have viewed and how often. The example uses arrays, and stores them in cookies.

The examples in this article can be downloaded at http://www.phpit.net/demo/php%20and%20cookies/examples.zip.

If you have a really unique practical way of using cookies, please let me know at dennis [AT] nocertainty [DOT] com. Iกd really like to hear about interesting ways of using cookies.

About The Author

Dennis Pallett is a young tech writer, with much experience in ASP, PHP and other web technologies. He enjoys writing, and has written several articles and tutorials. To find more of his work, look at his websites at http://www.phpit.net, http://www.aspit.net and http://www.ezfaqs.com

This article was posted on December 06, 2004

by Dennis Pallett

Bluetooth Now Poised To Fulfill Its Promise

Bluetooth Now Poised To Fulfill Its Promise

by: Raymond Klesc

No question about it, Bluetooth is very handy thanks to its improved integration with computers, cell phones and automobiles.

When Bluetooth first appeared about five years ago, the hype far outstripped its usefulness. The ability to eliminate the tangles of cords and cables was very alluring. Unfortunately, cost and complexity almost brought the technology to its knees.

Now its back, alive and well, fulfilling its promise as a useful tool in a variety of settings.

Europe was its early adopter and it is standard on nearly all European cell phones. They have adopted Bluetooth enabled phones, laptops, wireless keyboards, mice and more.

Sexy Headsets:

Cingular and TMobile wireless carriers use the same technology as their European counterparts and thus offer Bluetooth enabled devices for their customers. Bluetooth is rarer from Sprint and Verizon Communications which are based on North American technologies.

One major boost for adoption of Bluetooth enabled mobile phones will come from State and local governments. Many new laws and ordinances have been adopted or are in various stages of implementation that will levy fines for driving and using a hand held cell phone. The push for handsfree calling will move Bluetooth forward in the marketplace.

Acura TL now offers Bluetooth integrated into the automobile allowing the driver to use the cars stereo system as a speakerphone and displays information on the dashboard. Bluetooth car kits are now available from Motorola, Nokia, Parrot and others for about $100.

Early teething problems included high cost and poor battery life and made it unattractive for handsets. But now Logitech’s Mobile Bluetooth handset can be had for about $50. The $140 Jabra BT800, which lets you control many cellphone functions on the headset, offers six hours of talk time and five days of standby. After that, you can recharge by running a USB cable from the headset into a laptop so you don’t need to take a charger with you. A headset on the way from Plantronics will come with adapters that allow charging from most phone adapters or from an AA battery.

Bluetooth Linking:

Beyond mobile phones, Bluetooth is beginning to make inroads into other aspects of wireless communication. Although Windows support is somewhat primitive by current standards, the technology is standard on Apple Macintoshes and optional on other products. Apple uses the latest, faster version of Bluetooth. If Mac detects a Bluetooth enabled keyboard and mouse during startup, it will link to them automatically.

PalmOne is also a big supporter of Bluetooth. PalmOneกs software overcomes most of the Windows difficulties and allows their handheld devices to sync and swap files with a Windows laptop over Bluetooth. Making sync work with a new Mac PowerBook is even easier. As for Microsoftกs primitive Bluetooth world, it is possible to get a Pocket PC to sync with Windows over Bluetooth, but is only for the technically savvy.

Bluetooth Worth Waiting For:

Bluetooth still falls short. Early promoters envisioned that you would be able to walk up to a printer with your laptop of PDA, click a button, and print. We’re still waiting for that one. Bluetooth printers are rare but we can assume that the advent of Bluetooth enabled digital camera phones will spur this technology further and make for easy printing of those treasured moments.

The technology savvy users are an impatient lot. If it doesn’t catch on right away they move on to something newer and different. If anything, Bluetooth has proven that acceptance can take a while. But isn’t it worth the wait?

We technology watchers are an impatient lot who tend to give up on anything that doesn’t catch on right away. Bluetooth has proved once again that acceptance can take a long time and that sometimes itกs worth the wait.

About The Author

Raymond Klesc Global Value Connect ( http://www.globalvalueconnect.com ) has been providing the best value in telecommunication products and services for the home or office since 1995. If you want to cut your telephone bill in half register today for our free eBook entitled ‘telephone Bill Saving Tips for Home and Officeก and is available at: http://www.globalvalueconnect.com/Saving_Tips.htm.

[email protected]

This article was posted on April 10

by Raymond Klesc