PHP Cookies

This PHP tutorial will help you learn about PHP cookies and how to create, update, and delete cookies when you no longer need them. So, let us get started.


What is a Cookie?

It is a small piece of information that a web server stores as a file in the user's browser. After a cookie is created, it is sent as header information with every HTTP request to the web server.

A cookie can be used to save any data, but it should not exceed 1K(1024 bytes) in size.

Before we move on to creating, updating, and deleting cookies, let us learn a few real-world uses of cookies.

 

Realworld Use of Cookies

  • For storing user information such as when a person visited, what pages of a website were visited, etc., to provide users a better experience when they visit your website next time.
  • For storing basic website-specific information for knowing this is not the user's first visit.
  • The cookies can be used to store the number of visits or view the counter.

Hope you have an idea about how you can use cookies in your web application.

 

Types of Cookies

Cookies are of two types. These are:

  • Session Cookie: These are temporary cookies. These cookies expire either at the end of the session or when the browser is closed.
  • Persistent Cookie: You can make a cookie persistent by providing it with an expiration time. This way, the persistent cookies will only expire after the given expiration time; till then, they will be valid cookies.

 

Creating a Cookie in PHP

In PHP, the setcookie() function can be used to create/set a cookie.

The syntax for the function is below,

setcookie(name, value, expire, path, domain, secure)

 

The first argument, which defines the cookie's name, is mandatory; the rest are optional arguments. First, let's comprehend what are the available arguments that can be supplied to the setcookie() function for setting a cookie.

ArgumentWhat is it for?
nameIt is used for specifying the cookie name. 
It is a mandatory argument. Cookie Name must be a string.
valueIt is used for storing any value in the cookie. Generally, 
it is saved as a pair with a name. For instance, userid is the name, 
and 7007 is the value, the userid for any user.
expire

It is used for setting the expiration time for a cookie. 
If no value is provided, then, in that case, the cookie will be treated as a session 

cookie, and it will expire when the user closes the browser.

path

It is used for setting a web URL in the cookie. If it is set, then the cookie 

will be accessible only from that URL. 
For making a cookie accessible through a domain, you should set '/' as the cookie path.

domain

It refers to your web application's domain. You can use it to limit access of cookies for sub-domains. 

For instance, if the domain value is set as 
wwww.readytocode.net
then the cookie will be inaccessible from the subdomain editor.readytocode.net.

secureIf you set this value to 1, then the cookie will be available and is sent only over an HTTPS connection.

 

So, in case you want to create a cookie for storing the user's name who visited your website, also want to set an expiration time of a week, then you can do it as follows,

<?php

setcookie("username", "Jarvish", time()+60*60*24*7);

?>

 

You can use the $_COOKIE global variable to access a stored cookie, and the isset() methods can be used to check whether the cookie is set or not.

Let's take an example in which we will set a cookie and then retrieve the cookie for showing its value on the HTML page.

<?php
// set the cookie
setcookie("username", "Jarvish", time()+60*60*24*7);
?>
<html>
    <body>
    
    <?php
    // check if the cookie exists
    if(isset($_COOKIE["username"]))
    {
        echo "Cookie set with value: ".$_COOKIE["username"];
    }
    else
    {
        echo "cookie not set!";
    }
    ?>
    
    </body>
</html>

 

So, you can access the cookie by providing the cookie's name inside the square brackets with the global variable $_COOKIE[].

Note: You should place the setcookie() function before the starting HTML tag(<html>).

 

Updating Cookie in PHP

You can simply set the cookie again for updating/modifying a cookie. For example, updating the username stored in the cookie that was created above can be done by using setcookie() method again,

<?php
// updating the cookie
setcookie("username", "Justin", time()+60*60*24*7);
?>
<html>
    <body>
    
    <?php
    // check if the cookie exists
    if(isset($_COOKIE["username"]))
    {
        echo "Cookie set with value: ".$_COOKIE["username"];
    }
    else
    {
        echo "cookie not set!";
    }
    ?>
    
    </body>
</html>

 

We just updated the value of the username cookie from jarvish to Justin.

 

Delete a Cookie in PHP

You have to expire a cookie for deleting/removing a cookie. You can do it by updating the cookie utilizing the setcookie() function with the expiration date in the past.

<?php
// updating the cookie
setcookie("username", "jarvish", time() - 3600);
?>
<html>
    <body>
    
    <?php
    
    echo "cookie username is deleted!";

    ?>
    
    </body>
</html>