我有一个应用程序,我想让用户选择保持登录相当长的一段时间,说3天类似于谷歌邮件,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中设置。
我想这是可能的只有通过写入会话数据库
你可以设置一个长寿的cookie &多天后用户请求检查相同的值
使用cookie值作为表中的键来验证用户身份。
也许你可以使用HTML 5的session storage
或local storage
的特性?
我知道它和饼干不完全一样,但我只是想提出这个。也许它会有帮助:)
手机上旧版本的浏览器可能有一点版本问题。您可以通过以下命令查看:http://caniuse.com/namevalue-storage
还有一件事。您可以使用"记住我"cookie来长期存储重要信息。据我所知,延长cookie的生命周期并不是一个"好的做法"。
你可以通过每5分钟发送一个帖子到一个php函数来实现这一点,该函数将会话id存储在一个变量中,然后销毁会话,重新创建会话并再次给出会话id:
<?php
function restart_session(){
$user_session = $_SESSION['id'];
session_destroy();
session_start();
$_SESSION['id'] = $user_session;
}
?>