相关疑难解决方法(0)

设置cookie永不过期

查看关于设置cookiephp文档,我看到我可以设置cookie的过期日期.您可以将cookie设置为在浏览器会话结束时或将来的某个时间到期,但我没有看到将cookie设置为永不过期的方法.这是否可能,这是如何实现的?

php cookies

177
推荐指数
7
解决办法
23万
查看次数

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

我从这里听到了答案,但它对我不起作用:
即使在浏览器关闭后仍可以保持会话吗?

这是我试过的代码:

$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);
Run Code Online (Sandbox Code Playgroud)

这个问题是,每次浏览器关闭时,我仍然会得到一个新的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);
Run Code Online (Sandbox Code Playgroud)

php mysql cookies session

5
推荐指数
1
解决办法
2903
查看次数

如何正确管理PHP会话cookie过期?

PHP 网站使用 cookie 在浏览器端存储会话 ID。目标是在最近的用户与站点交互后的特定时间段内,PHP 会话将被视为有效。

PHP 会话有两个不同的超时:

  • cookie 过期 - 当浏览器忘记包含会话 ID 的 cookie 时
  • 会话过期 - 当服务器忘记会话数据时

PHP 内置逻辑仅在第一次session_start()调用时发送 cookie ,即生成会话 ID。cookie 不会在进一步请求时发送,因此 cookie 过期时间永远不会延长。

与此相反,每次请求都会延长 PHP 会话到期时间。

因此,如果用户持续与站点交互,PHP 会话过期时间会延长,但 cookie 过期时间保持其原始值。

例子:

  • PHP 会话和 cookie 寿命设置为 5 个时间点
  • 用户在时间点 1、2 和 4 与站点交互

时间点/PHP 会话过期/cookie 过期

1 / 6 / 6

2 / 7 / 6

4 / 9 / 6

  • 如果确定在时间点 7 与站点交互,则 cookie 已经过期,因此不会将其发送到服务器。因此,即使 PHP 会话在技术上有效,请求也会像 PHP 会话已过期一样。

如何强制 PHP 在每个(或几乎每个)请求上更新 cookie 的过期时间?最佳做法是什么? …

php cookies session session-cookies

5
推荐指数
0
解决办法
1334
查看次数

标签 统计

cookies ×3

php ×3

session ×2

mysql ×1

session-cookies ×1