【问题标题】:How to set PHP session to last for four hours?如何将 PHP 会话设置为持续四个小时?
【发布时间】:2013-09-05 06:40:02
【问题描述】:

即使页面未访问,如何使会话持续 4 小时?我尝试使用 ini_set('session.gc_maxlifetime',14400);ini_set('session.cookie_lifetime', 14400); 像这样:

ini_set('session.cookie_lifetime',  14400);
session_start();

但两者都不起作用。我尝试阅读 PHP SESSION,但要获取的信息很多,而且我已经尝试了几个选项,但效果不佳。

编辑:现在我已经尝试过了:

$hours = 4; //How long sessions last
$sessionCookieExpireTime=$hours*60*60;

// php.ini setting required for session timeout.
session_save_path('http://www.samplesite.com/');
ini_set('session.gc_maxlifetime', $sessionCookieExpireTime);
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);

session_set_cookie_params($sessionCookieExpireTime); /*Set the session parameters and start session*/
session_start();

然后在验证后:

setcookie(session_name(), $_COOKIE[session_name()], time() + 14400, "/");

现在显示,如果我检查浏览器上的 cookie 数据(而不是“浏览会话结束时”),它将在 4 小时后过期,但如果我让页面处于非活动状态并在大约一个小时后返回它,那就是不工作,因为它让我退出。怎么回事?

【问题讨论】:

  • 4 小时?所以你想说入侵者,是的,我已经为你敞开大门,随意弄乱我的系统
  • 使用不同的会话处理程序 = 数据库。在 _gc(垃圾收集器)中将最大会话时间设置为您需要的任何内容。
  • 这是客户想要的,而 facebook 的会话可以持续这么长时间(或更长)对吧? @Mr.Alien
  • @SandaraKwon 我不喜欢 facebook,所以我不知道,教育你的客户,告诉他利弊,相信他会同意

标签: php session session-cookies


【解决方案1】:

您的会话文件存储在哪里?如果它与其他应用程序共享,其他应用程序的会话生命周期设置也适用于您。将 session.save_path 设置为只有您的应用程序才会使用的目录。

我会将 session.cookie_lifetime 保持为默认值:直到浏览器关闭。

【讨论】:

  • 我编辑了问题并按照您的指示设置了 session_save_path 但它仍然无法正常工作。
  • 请记住,您必须在每次 session_start 之前设置相同的 session.gc_* 设置。
  • 对。我这样做了,但它不起作用。假设会话的默认行为是只有在浏览器关闭时才会结束,对吧?怎么没关闭浏览器几分钟就取消设置了?
猜你喜欢
  • 1970-01-01
  • 2011-12-17
  • 2011-09-19
  • 2011-06-28
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 2023-03-27
相关资源
最近更新 更多