【问题标题】:How could I make PHP sessions / cookies indefinite我怎样才能使 PHP 会话/cookie 无限期
【发布时间】:2011-03-19 03:38:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: php session-cookies


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      因此,您只需将值 60 替换为任意高的秒值即可。

      【讨论】:

        【解决方案3】:

        看看session_set_cookie_params()...

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

        1 年 ~= 3156000(秒)

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 2014-01-03
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 2020-10-19
        • 1970-01-01
        相关资源
        最近更新 更多