我从这里跟踪了答案,但对我来说没有用:
Is possible to keep session even after the browser is closed?
下面是我尝试过的代码:
$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天?
这是我最后得到的代码:
$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);发布于 2012-05-23 13:58:20
我曾经用我写的网站做过类似的事情(给客户30分钟的时间输入代码)
我没有使用cookie (因为您不能保证客户将在同一个浏览器中返回站点),而是根据用户的记录存储代码的过期时间。这样,无论他们从哪个浏览器访问页面(例如,从移动开始,在桌面上完成),它们总是同时过期。
当客户返回网站时,我将当前时间与到期时间进行比较,并采取相应的行动。
由于您已经在存储客户的篮子,我将根据记录添加一个到期时间,然后在客户返回时运行一个比较。这很容易做到:
update basket set expiryDateTime=date_add(now(),interval 7 day) where basketID=[xyz]如果您愿意,您甚至可以在MySQL中使用更多的技巧,将一天中的时间设置为一个标准值(20:00)。
https://stackoverflow.com/questions/10721370
复制相似问题