我正在使用一个登录系统来设置下面的会话变量/ cookie。 Chrome非常棒,让您可以毫不费力地查看您的Cookie,显然将其标记为“当我关闭我的浏览器时”到期的PHPSESSID。果然,当我登录时,关闭浏览器,然后打开一个新的浏览器会话,我不再登录。
我怎样才能让用户保持登录状态,无论浏览器是否关闭?我想这样做,以便用户保持登录状态(如果可能的话,永久保存),除非故意注销。
提前致谢,
约翰
$_SESSION['loginid'] = $row['loginid'];
$_SESSION['username'] = $u;
答案 0 :(得分:8)
看看session_set_cookie_params()
...
第一个参数是$lifetime
。将其设置为非0数字,这是他们将在几秒钟内保持登录的时间。如果为0,则在浏览器关闭后将被删除。请注意,您需要自己存储会话数据,或者同时设置ini_set("session.gc_maxlifetime", $Lifetime);
(以防止服务器删除旧会话)。但请注意,这可能会占用大量磁盘空间(并打开拒绝服务攻击,攻击者通过不断产生新会话来占用所有磁盘空间)...
1年〜= 3156000(秒)
我老实说建议实现一个“记住我”功能,而不是试图无限期地持续会话......记住我也会使用cookie,但它不会为非活动用户占用服务器空间...
答案 1 :(得分:0)
您只需要在会话cookie上设置将来的到期日期。
答案 2 :(得分:0)
您可以使用session_set_cookie_params
设置与PHPSESSID Cookie相关的设置。
//set cookie for 60 seconds:
session_set_cookie_params(60);
因此,您只需将值60替换为任意高的秒值。