我从这里听到了答案,但它对我不起作用:
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);
答案 0 :(得分:3)
我必须对我写的网站做一个类似的事情(允许客户输入代码30分钟)
我没有使用cookie(因为您无法保证客户将在同一浏览器中返回该站点),而是根据用户的记录存储了代码的到期时间。这样,无论他们从哪个浏览器访问该页面(例如,从移动设备开始,在桌面上完成),它们总是会在同一时间到期。
当客户返回现场时,我将当前时间与到期时间进行比较并采取相应措施
由于您已经存储了客户的购物篮,我会在记录中添加到期时间,然后在客户退货时进行比较。这很容易做到:
update basket set expiryDateTime=date_add(now(),interval 7 day) where basketID=[xyz]
如果你愿意,你甚至可以通过在MySQL中使用更多的技巧将时间设置为标准值(20:00)