首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PHP中关闭浏览器后保持会话打开?

如何在PHP中关闭浏览器后保持会话打开?
EN

Stack Overflow用户
提问于 2012-05-23 13:50:01
回答 1查看 3.1K关注 0票数 5

我从这里跟踪了答案,但对我来说没有用:

Is possible to keep session even after the browser is closed?

下面是我尝试过的代码:

代码语言:javascript
复制
$session_life = 2592000; // 30 days
session_set_cookie_params($session_life);
session_name('my_cart');
session_start();
// update the session_life
setcookie(session_name(),session_id(),time()+$session_life);

的问题在于,每当浏览器关闭时,我仍然会得到一个新的session_id,而不是旧的.

我使用一个数据库将项目存储在'my_cart‘中,而session_id只是用来标识用户以显示他们自己的购物车。

什么是我最好的方式,让用户的购物车存活30天?

这是我最后得到的代码:

代码语言:javascript
复制
$cart_name = "my_cart";
$cart_life = 2592000; // 30 days
session_start();
if (isset($_COOKIE[$cart_name])) {
    session_id($_COOKIE[$cart_name]);
}
setcookie($cart_name, session_id(), time()+$cart_life);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-23 13:58:20

我曾经用我写的网站做过类似的事情(给客户30分钟的时间输入代码)

我没有使用cookie (因为您不能保证客户将在同一个浏览器中返回站点),而是根据用户的记录存储代码的过期时间。这样,无论他们从哪个浏览器访问页面(例如,从移动开始,在桌面上完成),它们总是同时过期。

当客户返回网站时,我将当前时间与到期时间进行比较,并采取相应的行动。

由于您已经在存储客户的篮子,我将根据记录添加一个到期时间,然后在客户返回时运行一个比较。这很容易做到:

代码语言:javascript
复制
update basket set expiryDateTime=date_add(now(),interval 7 day) where basketID=[xyz]

如果您愿意,您甚至可以在MySQL中使用更多的技巧,将一天中的时间设置为一个标准值(20:00)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10721370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档