PHP Cookies
What is a Cookie?
A cookie is a small text file that the server stores in the user's web browser. The cookie is then sent along with each HTTP request to the server.
Cookies are ideal for storing information that can be retrieved later. Here are some examples:
- Username
- Maintain login status
- Shopping cart contents
- Language preferences
- Track user activity
Create Cookies With PHP
A cookie is created with the
setcookie() function.
Syntax
setcookie(name, value, expire, path, domain, secure, httponly);
Only the name parameter is required. All other parameters are optional.
- name - Required. Specifies the name of the cookie
- value - Optional. Specifies the value of the cookie
- expire - Optional. Specifies when the cookie expires
- path - Optional. Specifies the server path of the cookie
- domain - Optional. Specifies the domain name of the cookie
- secure - Optional. Specifies whether or not the cookie should only be transmitted over a secure HTTPS connection
- httponly - Optional. If set to TRUE the cookie will be accessible only through the HTTP protocol
Note: The
setcookie() function must appear BEFORE the <html> tag,
since cookies are a part of the HTTP header.
To retrieve the value of a cookie, use the superglobal variable
$_COOKIE.
PHP Create and Retrieve a Cookie
The following example creates a cookie named "username" with the value "John Doe".
We set the expiration time to 30 days (86400 = 1 day).
We set the path to "/", which means that the cookie is available in entire website (otherwise, select the directory you prefer).
To retrieve the value of the cookie "username", use the superglobal variable $_COOKIE.
We also use the
isset() function to check if the cookie
exists before trying to access it:
Example
<?php
$cookie_name = "username";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>
<?php
if(isset($_COOKIE[$cookie_name])) {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
} else {
echo "Cookie named '" . $cookie_name . "' is not set!";
}
?>
</body>
</html>
Note: The
setcookie() function must appear BEFORE the <html> tag.
Note: The value of the cookie is automatically URLencoded when
sending the cookie, and automatically decoded when received (to prevent
URLencoding, use
setrawcookie() instead).
Modify a Cookie Value
To modify a cookie, just set (again) the cookie using the
setcookie() function:
Example
<?php
$cookie_name = "username";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>
<?php
if(isset($_COOKIE[$cookie_name])) {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
} else {
echo "Cookie named '" . $cookie_name . "' is not set!";
}
?>
</body>
</html>
Delete a Cookie
To delete a cookie, use the
setcookie() function with an expiration
time in
the past:
Example
<?php
// set the expiration date to one hour ago
setcookie("username", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'username' is deleted.";
?>
</body>
</html>
Check if Cookies are Enabled
The following example creates a small script that checks whether cookies are
enabled. First, try to create a test cookie with the
setcookie() function, then
count the $_COOKIE array variable:
Example
<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>
<?php
if(count($_COOKIE) > 0) {
echo "Cookies are enabled.";
} else {
echo "Cookies are disabled.";
}
?>
</body>
</html>
Complete PHP Network Reference
For a complete reference of Network functions, go to our complete PHP Network Reference.