【问题标题】:session timeout time - set by server?会话超时时间 - 由服务器设置?
【发布时间】:2012-11-04 01:15:14
【问题描述】:

我正在玩 zen-cart,我想拥有它,以便客户会话不会在 24 分钟后过期,这似乎是默认设置。

在搜索和搜索 zen-cart 网站后,似乎没有人对此有答案(关于如何更改管理员注销会话时间的大量答案 - 我希望使用实际网站的人有更长的会话时间)。我想这可能是一个安全问题,但我现在已经研究过了,但无法弄清楚代码:

if (IS_ADMIN_FLAG === true) {
    if (!$SESS_LIFE = (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN)) {
      $SESS_LIFE = (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN);
    }
} else {
    if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
      $SESS_LIFE = 1440;
    }
}

我尝试将 1440 更改为 86400(一天),但这似乎不起作用。我不完全确定这条线是什么

if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {

这样做!只有一个=之后。我想这是问题所在?谁能赐教?

【问题讨论】:

  • 确保您没有与其他网站共享您的会话目录。否则,gc_maxlifetime 最短的站点可能会删除 所有 会话文件,甚至是您的。
  • @alvaro 谢谢,我认为现在更改代码更容易:)
  • 你误解了我的意思。如果您在共享主机上并且您的会话文件位于公共目录中,那么仅更改设置将毫无用处。只需检查phpinfo() 并在必要时更改session.save_path 配置指令。

标签: php session zen-cart


【解决方案1】:
if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
    $SESS_LIFE = 1440;
}

这会从运行时配置中获取 session.gc_maxlifetime 的值,并将其设置为 $SESS_LIFE

如果$SESS_LIFE的值为0,则执行$SESS_LIFE = 1440;


在内部更改此超时:php.ini 或使用

ini_set('session.gc_maxlifetime', 86400);

或者在您的 .htaccess 中,您可以添加以下行:

php_value session.gc_maxlifetime 86400

参考:get_cfg_var

【讨论】:

  • 啊,好吧,我可以删除 if 语句并设置变量 $SESS_LIFE = 86400;不使用 ini_set?我不确定我是否可以在我的实时服务器上更改 ini_set 中的内容,那么它肯定会影响其他网站吗?
  • @crazysarah session.gc_maxlifetime 可以在脚本内或通过.htaccess 设置;真的没必要改代码。
  • @crazysarah 正如杰克所说,您可以将其作为php_value session.gc_maxlifetime 86400 放在您的.htaccess 中。
  • 但是改代码没问题吧?如果没有真正的坏处,我会更舒服
  • @crazysarah 恕我直言,无论如何都应该没问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多