Php 使用自动恢复计数器使$\会话保持活动状态

Php 使用自动恢复计数器使$\会话保持活动状态,php,session,Php,Session,我想让会话保持三天的活动状态,每当他们访问该页面时,该页面会再次更新到三天。基本上,如果他们三天不访问该站点,他们的会话就会减少 ini_set('session.cookie_lifetime',60*60*24*3); //saw on a similar SO question session_start(); 上面的代码位于top.php的顶部,每个页面上都有一个include()ed文件 $_SESSION["username"] = $username; $_SESSION["pa

我想让会话保持三天的活动状态,每当他们访问该页面时,该页面会再次更新到三天。基本上,如果他们三天不访问该站点,他们的会话就会减少

ini_set('session.cookie_lifetime',60*60*24*3); //saw on a similar SO question
session_start();
上面的代码位于top.php的顶部,每个页面上都有一个
include()
ed文件

$_SESSION["username"] = $username;
$_SESSION["password"] = $hashedpass;
$_SESSION["authtoken"] = $authkey; //authentication key
上面是login.php,它根据SQL中存在的验证设置
$\u会话
数据

也许这是WAMP的一个函数,但每当我关闭浏览器时,会话都会终止,尽管php.ini参数被更改。我是否在top.php的第1行中使用了错误的位?

使用,我怀疑您能否控制会话生命周期

您需要做的基本上是将所需的会话变量存储在cookie中,当用户进入站点时,如果未设置会话变量,请检查是否存在带有这些变量的cookie,并将cookie中的数据加载到会话中。或者你可以直接从cookies中访问它们

如果您有不想存储在cookie中的敏感数据。您可以在服务器上以某种形式的持久性存储(数据库或文件,最好是数据库)存储此数据,并将此数据的ID存储在用户端的cookie中。当用户访问您的站点时,从cookie中获取ID并加载数据。

我刚刚发现:

ini_set('session.cookie_lifetime', 60*60*24*3);
ini_set('session.gc_maxlifetime', 60*60*24*3);
session_start();

…很好。即使浏览器关闭,也会使会话保持活动状态。

您确定会话在服务器端而不是客户端终止吗?许多浏览器在关闭时都会清除会话。使用
$\u SESSION
对我来说相对较新,所以我不完全确定。我的浏览器不会终止我经常访问的其他站点的会话,因此我几乎不相信它会有选择地从我的站点上删除会话。我并不特别想将敏感数据存储到cookie中(或者更糟糕的是,让用户自己制作cookie用于恶意目的)。“我希望完全通过会话来实现这一点。”约书亚·基松,我应该选择DB选项。只有cookie中的
uid
和DBYes中的
expiration date
+一些更多需要的信息,DB比文件有很多优势。。。我猜你的应用程序已经使用了数据库,但是想想Joshua给出的修复。在数据库中保存“会话”是很常见的。。。