- $_SESSION['uid'] = $r[0]['uid'];
- $_SESSION['theme'] = $r[0]['theme'];
- $_SESSION['authenticated'] = 1;
- $_SESSION['page_flags'] = $r[0]['page-flags'];
- $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
-
- notice( t("Welcome back ") . $r[0]['username'] . EOL);
- $a->user = $r[0];
- if(strlen($a->user['timezone']))
- date_default_timezone_set($a->user['timezone']);
-
- $r = q("SELECT * FROM `contact` WHERE `uid` = %s AND `self` = 1 LIMIT 1",
- intval($_SESSION['uid']));
- if(count($r)) {
- $a->contact = $r[0];
- $a->cid = $r[0]['id'];
- $_SESSION['cid'] = $a->cid;
+
+ // If the user specified to remember the authentication, then change the cookie
+ // to expire after one year (the default is when the browser is closed).
+ // If the user did not specify to remember, change the cookie to expire when the
+ // browser is closed. The reason this is necessary is because if the user
+ // specifies to remember, then logs out and logs back in without specifying to
+ // remember, the old "remember" cookie may remain and prevent the session from
+ // expiring when the browser is closed.
+ //
+ // It seems like I should be able to test for the old cookie, but for some reason when
+ // I read the lifetime value from session_get_cookie_params(), I always get '0'
+ // (i.e. expire when the browser is closed), even when there's a time expiration
+ // on the cookie
+ if($_POST['remember']) {
+ new_cookie(31449600); // one year
+ }
+ else {
+ new_cookie(0); // 0 means delete on browser exit