require_once('include/security.php');
+require_once('include/datetime.php');
function nuke_session() {
+ new_cookie(0); // make sure cookie is deleted on browser close, as a security measure
+
unset($_SESSION['authenticated']);
unset($_SESSION['uid']);
unset($_SESSION['visitor_id']);
goaway(z_root());
}
- authenticate_success($r[0]);
+ // Make sure to refresh the last login time for the user if the user
+ // stays logged in for a long time, e.g. with "Remember Me"
+ $login_refresh = false;
+ if(! x($_SESSION['last_login_date'])) {
+ $_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
+ }
+ if( strcmp(datetime_convert('UTC','UTC','now - 12 hours'), $_SESSION['last_login_date']) > 0 ) {
+
+ $_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
+ $login_refresh = true;
+ }
+ authenticate_success($r[0], false, false, $login_refresh);
}
}
else {
// (i.e. expire when the browser is closed), even when there's a time expiration
// on the cookie
if($_POST['remember']) {
- $old_sid = session_id();
- session_set_cookie_params('31449600'); // one year
- session_regenerate_id(false);
-
- q("UPDATE session SET sid = '%s' WHERE sid = '%s'", dbesc(session_id()), dbesc($old_sid));
+ new_cookie(31449600); // one year
}
else {
- $old_sid = session_id();
- session_set_cookie_params('0');
- session_regenerate_id(false);
-
- q("UPDATE session SET sid = '%s' WHERE sid = '%s'", dbesc(session_id()), dbesc($old_sid));
+ new_cookie(0); // 0 means delete on browser exit
}
// if we haven't failed up this point, log them in.
+ $_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
authenticate_success($record, true, true);
}
}
+function new_cookie($time) {
+ $old_sid = session_id();
+ session_set_cookie_params("$time");
+ session_regenerate_id(false);
+ q("UPDATE session SET sid = '%s' WHERE sid = '%s'", dbesc(session_id()), dbesc($old_sid));
+}