我有一个应用程序,我想让用户选择在相当长的时间内保持登录状态,比如 3 天,类似于 google mail、facebook 或linkedin。(这意味着主要通过电话访问,数据远不如电话上的其他东西敏感。)现在我在登录时设置了大约四个会话变量,例如用户 ID、名称等,以避免大量的重新编码和丢失的功能,我希望所有这些变量都可以访问。
设置会话变量时,有没有办法将会话长度增加到 72 小时?
或者,如果您需要设置 cookie,当设置了许多会话变量时,实现长时间登录的最佳实践是什么。
谢谢。
我有一个应用程序,我想让用户选择在相当长的时间内保持登录状态,比如 3 天,类似于 google mail、facebook 或linkedin。(这意味着主要通过电话访问,数据远不如电话上的其他东西敏感。)现在我在登录时设置了大约四个会话变量,例如用户 ID、名称等,以避免大量的重新编码和丢失的功能,我希望所有这些变量都可以访问。
设置会话变量时,有没有办法将会话长度增加到 72 小时?
或者,如果您需要设置 cookie,当设置了许多会话变量时,实现长时间登录的最佳实践是什么。
谢谢。
您可以通过各种方式设置会话。一种方法是在 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 中。
也许您可以使用HTML 5session storage的功能?local storage
我知道这与 cookie 不完全一样,但我只是想提出这个建议。也许它可以帮助:)
手机上旧版本的浏览器可能存在一点版本问题。您可以通过以下方式检查它们:http ://caniuse.com/namevalue-storage
还有一件事。您可以使用“记住我”cookie 来长期存储重要信息。据我所知,延长 cookie 的生命周期并不是一个“好习惯”。
我想只有将会话写入数据库才有可能
您可以在多天后根据用户请求设置一个长期有效的 cookie 并检查相同的值。
使用 cookie 值作为表中的键来验证用户身份。
然后从数据库重新加载该用户的会话。
您可以通过每 5 分钟向 php 函数发送一个帖子来做到这一点,该函数将会话 ID 存储在一个变量中,然后销毁会话,再次创建它并再次提供会话 ID:
<?php
function restart_session(){
$user_session = $_SESSION['id'];
session_destroy();
session_start();
$_SESSION['id'] = $user_session;
}
?>