simpleengine
simpleengine

Reputation: 2832

Cookie not being reset in PHP

I am new to cookies. I created a user login php class that uses a cookie to store a unique MD5 key to remember a user that has logged in. However, the cookie is not being reset when the user logs out. I created a function from code I found on stack overflow to clear the cookies on logout.

static public function clearCookies() 
{
    $past = time() - 3600;
    foreach ( $_COOKIE as $key => $value )
    {
            $value = '';
        setcookie( $key, $value, $past );
        setcookie( $key, $value, $past, '/' );
    }
}

However, the cookie is still not being cleared.

This is the line of code that sets the cookie

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7);

Thanks ahead of time

Upvotes: 1

Views: 2147

Answers (2)

simpleengine
simpleengine

Reputation: 2832

Here is the solution that worked.

I changed

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7);

to

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7, '/');

It seems that the cookie was not being reset because the url it was being reset from was different than the url it was set in. After adding '/' it could be reset from the new url.

Upvotes: 1

genesis
genesis

Reputation: 50976

Try to add

static public function clearCookies() 
{
    $past = time() - 3600;
    foreach ( $_COOKIE as $key => $value )
    {
            $value = '';
        setcookie( $key, $value, $past );
        setcookie( $key, $value, $past, '/' );
        unset($_COOKIE[$key]);
    }
}

You have to note that changed cookies are readable AFTER sending them to client (if you do not set them manually via $_COOKIE), so the next refresh.

Upvotes: 1

Related Questions