2

我正在使用一个登录系统来设置下面的会话变量/cookie。Chrome 可以让您轻松查看 cookie,显然将其标记为“当我关闭浏览器时”过期的 PHPSESSID。果然,当我登录时,关闭浏览器,然后打开一个新的浏览器会话,我就不再登录了。

无论浏览器是否关闭,我怎样才能使用户保持登录状态?我想让用户保持登录状态(如果可能的话,永久保持登录状态),除非故意注销。

$_SESSION['loginid'] = $row['loginid'];
    
$_SESSION['username'] = $u;    
4

3 回答 3

8

看看session_set_cookie_params()...

第一个参数是$lifetime。将其设置为非 0 数字,这就是他们将保持登录状态的时间(以秒为单位)。如果为 0,则浏览器关闭后将被删除。请注意,您需要自己存储会话数据,或者也需要设置ini_set("session.gc_maxlifetime", $Lifetime);(以防止服务器删除旧会话)。但请注意,这可能会占用大量磁盘空间(并打开拒绝服务攻击,攻击者通过不断产生新会话来耗尽您的所有磁盘空间)......

1 年 ~= 3156000(秒)

老实说,我建议实现“记住我”功能,而不是试图无限期地保持会话......记住我也会使用 cookie,但它不会占用非活动用户的服务器空间......

于 2010-07-21T18:01:24.660 回答
0

您只需要在会话 cookie 上设置未来的到期日期。

于 2010-07-21T17:58:52.520 回答
0

您可以使用session_set_cookie_params设置 PHPSESSID cookie 相关设置。

//set cookie for 60 seconds:
session_set_cookie_params(60);

因此,您只需将值 60 替换为任意高的第二个值。

于 2010-07-21T18:00:54.323 回答