【问题标题】:How to set persistent cookie如何设置持久cookie
【发布时间】:2021-01-14 15:54:26
【问题描述】:

我正在使用 php 代码并尝试设置 cookie,如下所示:

 setcookie("_GuestID",$userID,time() + (20 * 365 * 24 * 60 * 60));

我发现cookies在浏览器关闭后就过期了。我想让它坚持很长时间。我该怎么做。请提出您的建议。

谢谢

【问题讨论】:

  • 您是否从浏览器中检查过 cookie 是否已实际设置?有效期是什么时候?
  • 您将到期时间设置为未来的某个时间点。没有“永久”cookie 这样的东西。只是“不会过期很长时间的cookies”。
  • Cookie 的有效期只要您愿意(有一个最大值 - google it),或者直到客户端删除它们。客户甚至可能一起拒绝它们。会话可能值得一看(尽管它们也使用 cookie)

标签: php cookies


【解决方案1】:

如前所述,请检查您的浏览器中是否确实设置了 cookie(您的语法似乎正确)。

Cookies 只会在您设置它们的时间内持续存在。除非有特定的到期要求(通常要短得多),否则我一直使用一年作为一个周期。

使用 strtotime 函数使它们更易于阅读:

setcookie( "cookieName1", $value1, strtotime( '+1 year' ) );
setcookie( "cookieName2", $value2, strtotime( '+30 days' ) );

setcookie manual page 上有很多如何使用它们的示例,值得花时间阅读。

【讨论】:

    【解决方案2】:

    没有设置持久性 cookie 的特殊方法。 它与您设置普通 cookie 的方式相同。 具有过期日期的 Cookie 称为持久性。

    【讨论】:

      【解决方案3】:

      让我们更好地理解 cookie...

      有两种不同类型的 cookie - 会话 cookie 和持久 cookie。

      • 如果 cookie 不包含过期日期,则将其视为会话 cookie。会话 cookie 存储在内存中,从不写入磁盘。当浏览器关闭时,cookie 将从此时永久丢失。
      • 如果 cookie 包含过期日期,则将其视为 永久性 cookie。在到期日指定的日期, cookie 将从磁盘中删除
      $cookie_name = "Name";
      $cookie_value = "Amitesh";
      setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
      

      【讨论】:

        【解决方案4】:

        使用 strtotime 函数使它们更易于阅读:

        setcookie("cookieName1",123545,time()+(strtotime('+1年')));

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多