PHP会话更长的时间

时间:2019-04-08 12:26:42

标签: php session cookies session-cookies

尝试将PHP会话保持12小时。

<?php

#required files

ini_set('session.cookie_lifetime', 60 * 60 * 12);
ini_set('session.gc-maxlifetime', 60 * 60 * 12 );
session_start();
$_SESSION['site_type'] = "2";

#more codes
?>

但是会议只持续了几分钟。


记住:即使该会话仍应处于活动状态

  • 该标签页已关闭
  • 浏览器已关闭
  • 从最近使用的标签页中清除浏览器(在移动浏览器中打开时)

3 个答案:

答案 0 :(得分:0)

您可以使用Cookies来实现此目的,方法是将会话数组保存在cookie中,并在页面加载时进行检索,或者将会话数据保存在服务器上的数据库中,并为其分配键并在Cookie中使用该键。

答案 1 :(得分:0)

session.gc-maxlifetime is always higher then to cookie_lifetime:

After using like:

ini_set('session.cookie_lifetime', 43200); // 43200 == 12 hours
ini_set('session.gc-maxlifetime', 100000);

After changing this, you can check the values by using:

echo phpinfo(); // search both values

Side Note:

Changing the configuration value by using script always problematical, i suggest you to change values from PHP.ini file as:

; 12 hour session cookie
session.cookie_lifetime = 43200
session.gc_maxlifetime = 100000 

in PHP.ini,

session.cookie_lifetime always set as 0 which means, session destroyed on browser close.

session.gc_maxlifetime is the lifetime in seconds which default value: 1440 = 24 minutes

答案 2 :(得分:0)

如果您不能使用ini_set更改会话持续时间,那么您可能会考虑另一个想法,如果您可以运行PHP 7或更高版本,则可以使用以下approach

  if (session_status() == PHP_SESSION_NONE) {
    if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
      session_start(['cookie_lifetime' => 43200,]);
    } else {
      session_start();
    }
  }

通过这种方式,会话仅在12小时后过期。希望这会有所帮助。