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