yitzih
yitzih

Reputation: 3118

Performing an action on cookie expiration

What I want to do it cause an action when a cookie expires. For example i have a cookie:

setcookie('loggedIn', true, time()+ 3600);

When the cookie expires I would like to be able to redirect them to a different web page automatically and call a php script that would log the user out.

Upvotes: 1

Views: 1337

Answers (2)

Sithu
Sithu

Reputation: 4862

You can check it via $_COOKIE.

if(!isset($_COOKIE['loggedIn'])){
  header('Location: /path/to/another/page');
  exit;
}

You can code it in a separate file and include it in every page OR you can implement it in XHR.

Upvotes: 3

user149341
user149341

Reputation:

It sounds as though what you're trying to do is automatically log users out after some amount of time. Cookie expiration is not an appropriate way to do this — the expiration date of a cookie can be changed by the user, and cookies can be deleted without reaching their expiration date. (For instance, if a user clears cookies in their browser, or uses a private browsing session.)

An appropriate way to log a user out automatically would be to store the expiration date in the session, e.g.

// during login
$_SESSION["valid_until"] = time() + 3600 * 3; // stay logged in for three hours

// then, during page startup
if ($_SESSION["valid_until"] < time()) {
    session_destroy(); // or store data in the session to indicate it's inactive
    header("Location: error.php?err=session-timeout");
    exit();
}

Upvotes: 2

Related Questions