使会话/ cookie无限期

时间:2010-07-21 17:55:09

标签: php

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

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

提前致谢,

约翰

$_SESSION['loginid'] = $row['loginid'];

$_SESSION['username'] = $u;    

3 个答案:

答案 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替换为任意高的秒值。