2

我有一个应用程序,我想让用户选择在相当长的时间内保持登录状态,比如 3 天,类似于 google mail、facebook 或linkedin。(这意味着主要通过电话访问,数据远不如电话上的其他东西敏感。)现在我在登录时设置了大约四个会话变量,例如用户 ID、名称等,以避免大量的重新编码和丢失的功能,我希望所有这些变量都可以访问。

设置会话变量时,有没有办法将会话长度增加到 72 小时?

或者,如果您需要设置 cookie,当设置了许多会话变量时,实现长时间登录的最佳实践是什么。

谢谢。

4

4 回答 4

4

您可以通过各种方式设置会话。一种方法是在 php.ini 中设置

session.gc_maxlifetime = 360*72

用php你可以做到

ini_set(’session.gc_maxlifetime’, 360*72);

你也可以使用

session_set_cookie_params(360*72,"/");

http://pl1.php.net/session_set_cookie_params

它设置会话cookie。您还可以序列化$_SESSION并将其设置在 cookie 中。

于 2013-05-21T10:57:06.100 回答
0

也许您可以使用HTML 5session storage的功能?local storage

我知道这与 cookie 不完全一样,但我只是想提出这个建议。也许它可以帮助:)

手机上旧版本的浏览器可能存在一点版本问题。您可以通过以下方式检查它们:http ://caniuse.com/namevalue-storage

还有一件事。您可以使用“记住我”cookie 来长期存储重要信息。据我所知,延长 cookie 的生命周期并不是一个“好习惯”。

于 2013-05-21T11:36:26.193 回答
0

我想只有将会话写入数据库才有可能

您可以在多天后根据用户请求设置一个长期有效的 cookie 并检查相同的值。

使用 cookie 值作为表中的键来验证用户身份。

然后从数据库重新加载该用户的会话。

于 2013-05-21T10:58:58.427 回答
0

您可以通过每 5 分钟向 php 函数发送一个帖子来做到这一点,该函数将会话 ID 存储在一个变量中,然后销毁会话,再次创建它并再次提供会话 ID:

<?php

function restart_session(){

    $user_session = $_SESSION['id'];

    session_destroy();
    session_start();

    $_SESSION['id'] = $user_session;

}
?>
于 2020-01-13T00:26:25.233 回答