php保持会话活多天

时间:2013-05-21 10:53:43

标签: php cookies session-variables

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

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

或者,如果您需要设置Cookie,那么在设置了多个会话变量时,实现长时间登录的最佳做法是什么。

感谢。

4 个答案:

答案 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;

}
?>