PHP保持会话存活数天


php keep session alive for multiple days

我有一个应用程序,我想让用户选择保持登录相当长的一段时间,说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 storagelocal 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;
}
?>