【问题标题】:Persist PHP Session after closing browser关闭浏览器后保持 PHP 会话
【发布时间】:2012-04-11 07:38:48
【问题描述】:

这个故事有点背景......

我的站点上有一个 ASP.NET 登录应用程序,登录后,我可以导航到 WordPress(PHP) 端(仍然在同一个域中),同时保持会话。请参阅下面的我的粘贴链接以了解其工作原理。

但是,如果我关闭浏览器,就会出现问题,尽管保留了 ASP.NET 会话,但我会丢失 PHP“会话”。所以我在 PHP 端“退出”,但在 .NET 端仍然“登录”。

-- 有没有办法使用我现有的代码为会话/cookie 设置生命周期,以避免在我关闭浏览器时会话/cookie 消失?--

我已经从模板的 <head> 中粘贴了我当前的 PHP 代码:http://pastie.org/private/ndcqgbog34uqld1etozda,它检查并保持会话。

我确实看过this example on PHP.net,但对如何在我的解决方案中使用它感到困惑。

非常感谢您对此的任何指示。

【问题讨论】:

    标签: php asp.net session cookies session-timeout


    【解决方案1】:

    认为您应该使用具有到期时间的setcookie()(请参阅here)。你只是在会话中设置东西(从 cookie 复制,看起来像,但我不确定它们的生命周期是什么)。

    代替这一行:

    $_SESSION[DOT_NET_SESSION][ $tuple['SessionName'] ] =
        $tuple['SessionValue'];
    

    试试这个:

    $cookie = array($tuple['SessionName'] => $tuple['SessionValue']);
    setcookie(DOT_NET_SESSION, $cookie, time() + 60 * 60 * 24);
    

    我认为这应该设置一天的 cookie。

    【讨论】:

    • 好电话。目前我只是将值存储在数据库中并使用我的 PHP 来检查这些值是否存在。你能告诉我如何使用我现有的代码最好地做到这一点吗?
    • 我已经添加了一个例子,但你必须忍受我 - 我做了很多 symfony,所以我已经有一段时间没有接触到底层的 cookie/session 实现了! :)。所以,你必须玩一下它。诀窍是在您的浏览器(例如 Firefox)中查看您的 cookie 数据,看看您是否正确。
    • 嘿,不用担心,先生。非常感谢您发布示例。我会在几秒钟内试一试并报告。
    • 恐怕这不起作用,halfer :( 我仍然需要你替换的行来检查我数据库中的表。
    • 好吧,正如我所说,您可能需要修改它。由于我不确定您需要从 .net cookie 中获取哪些内容,因此只需使用您通常的调试方法来查看每个函数是否在每个关键时刻都能满足您的期望。试试我的 addition 到你现有的代码,也许?
    【解决方案2】:

    你需要做两件事。

    1. Set the cookie lifetime(默认为 0,PHP 将其解释为“直到浏览器关闭”)
    2. Configure the session garbage collection lifetime。这决定了服务器端会话数据被销毁之前的时间。

    不过,我建议您不要这样做。从安全角度来看,持续超过浏览器会话生命周期(在浏览器关闭时结束)的会话是有问题的

    【讨论】:

    • 嗨戈登M。非常感谢您的指示和安全建议。你能告诉我如何使用我的 php 代码在馅饼中实现前 2 点吗?我明白该怎么做,但真的很困惑怎么做。非常感谢这里的任何帮助。
    • 您在 PHP 配置 (php.ini) 中执行此操作
    • 啊啊太棒了。我会尽快尝试设置它们并及时通知您。
    • 嗯,这似乎不起作用。我在脚本顶部添加了ini_set('session.cookie_lifetime',86400); ini_set('session.gc_maxlifetime',1440);,但是当我重新启动浏览器时它并没有让我保持登录状态。
    【解决方案3】:

    您必须在用户浏览器的 cookie 中存储一些数据。然后,如果用户回到您的包,您将执行代码的验证块。

    查看完整解决方案How to do auto login, store the session in the browser

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2011-02-23
      • 2014-08-15
      相关资源
      最近更新 更多