mpdc
mpdc

Reputation: 3560

No method of un-setting cookies is working

I'm trying to unset/delete/expire cookies on a logout page. However, it doesn't seem to be working. My logout script reads as follows:

require_once("database.php"); // contains session_start()
$_SESSION = array();
session_destroy();

// attempts to unset cookies go here (see below)

var_dump($_SERVER['HTTP_COOKIE']);
header("Location: ./login.php");
exit();

My three attempts to remove a specific cookie login (or all of them), are as follows:

Attempt 1:

setcookie("login", "", time() -3600, "/");

Attempt 2:

$cookies = explode(";", $_SERVER['HTTP_COOKIE']);
foreach ($cookies as $cookie) {
    $parts = explode("=", $cookie);
    $name = trim($parts[0]);
    setcookie($name, "", time() -3600);
    setcookie($name, "", time() -3600, "/");
}

Attempt 3:

unset($_COOKIE);

However my var_dump() still contains the cookies!

Also, the page you're then redirected to, login.php contains the following code:

if (isset($_COOKIE['login'])) {
    echo "Still set."
}

and low-and-behold, the page displays Still set.

Upvotes: 1

Views: 64

Answers (1)

Nouman Arshad
Nouman Arshad

Reputation: 593

First of all remove all cookies from any available Cookie tools or your browser's developer tool.

Always write COOKIES as '/' with respect to entire domain of site. Path play an important role when we set/unset cookies. Use setcookie($cookie_name, "$cookie_value", time() +3600, "/") to set and setcookie($cookie_name, "$cookie_value", time() -360000, "/") to unset COOKIES.

Further read here for about COOKIES path: http://www.w3schools.com/php/func_http_setcookie.asp

Hope it helps you

Upvotes: 1

Related Questions