【问题标题】:Quick question about sessions in PHP关于 PHP 会话的快速问题
【发布时间】:2009-08-19 16:07:02
【问题描述】:

会话是通过session_start() 启动的,我意识到这一点,但是要使会话持久,它们需要一个 ID。

现在,php.ini 文件有一个设置:

session.use_cookies = 1

所以我不必传递 ID。但是还有另一个设置:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

我是否明白,如果我实现这个并访问我的网站,登录,做我想做的事,关闭浏览器并在一段时间后重新启动它,我去的时候就不会再登录了回到我的网站?

编辑:所以要保持登录状态,我必须将它与客户端 cookie 结合起来。

我猜我需要 2 个数据库字段。 1 代表会话 ID,1 代表我给 cookie 的 ID。

【问题讨论】:

    标签: php session persistence


    【解决方案1】:

    不,您将不再登录。

    在此处查看我的答案:How do I Keep a user logged in for 2 weeks?(如果您希望人们在一段时间后退出,请参阅http://www.drupal.org/node/31506 了解有关计划任务的更多信息)。它可能会对你有所帮助。

    检查用户代理字符串(只是为了安全。如果黑客以某种方式发现了一个密钥......他可以发送一个虚假的 cookie 并自动登录。对于一次切换浏览器的人,他们可以复制 cookie 后重新登录一次。但是,对于不停地更改或更新浏览器的人来说,这将是一场灾难。

    【讨论】:

    • 谢谢。你说的计划任务。以前没用过,我得查一下。
    • IP 检查?不是每个人(包括我)都有静态 IP。
    • 您的外部 IP 是静态的吗?我不知道这是可能的。还是您制作一个在一个网络上运行的 Intranet 站点?
    • 为了开发,它应该在我的家庭网络中运行。在这个网络中,我总是有一个私有的静态 IP。然而,外部网络会不时改变。这是我们路由器上的设置。有些网站会在您登录时显示您的 IP。我的 IP 在 48 小时内保持不变,然后会更改。
    【解决方案2】:

    我认为你理解正确,PHP 手册说:

    session.cookie_lifetime 指定 cookie 的生命周期(以秒为单位) 发送到浏览器。这 值 0 表示“直到浏览器 关闭。" 默认为 0。

    http://php.net/session.configuration#ini.session.cookie-lifetime

    【讨论】:

      【解决方案3】:

      我会说是的。你有其他看法吗?

      【讨论】:

      【解决方案4】:

      是的,这就是会话 cookie 的用途。

      【讨论】:

        猜你喜欢
        • 2010-12-12
        • 2012-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        • 2021-08-06
        • 2020-02-11
        相关资源
        最近更新 更多