PHP cookie不更新

3
我需要更新一个cookie。我通过ajax调用一个名为php文件来完成此操作。以下是代码:
```php setcookie("cookie_name", "new_value", time() + 3600, "/"); ```
其中,"cookie_name" 是要更新的cookie名称,"new_value" 是新值,time()+3600表示cookie到期时间为当前时间加上3600秒,"/" 表示cookie在整个域名下可用。
setcookie('items['.$_POST['id'].']');

Cookie没有更新,事实上,如果我在setcookie函数调用后写入print_r($_COOKIE['items']),我会发现$_COOKIE['items']和调用setcookie函数之前相同。我该怎么办?


要在页面上获取一个cookie,需要刷新一次该页面。 - Rafee
1
我希望你在将$_POST['id']插入cookie之前进行了清理?使用intval($_POST['id'])会很有用。 - Geert
可能是在setcookie()之后立即访问$_COOKIE的重复问题。 - outis
5个回答

5

同一个实例/页面中,无法设置并访问 cookie。您必须在 设置 它后进行重定向或刷新。

此外,您应该这样做:

setcookie("id","items['.{$_POST['id']}.']");

2

当您使用setcookie时,它不会将cookie添加到超全局变量$_COOKIE中。您需要自己完成这个步骤或重新加载页面。此外,由于您正在使用空值设置cookie,因此不会设置任何内容。


1

你必须为键设置值才能使用$_COOKIE访问:

setcookie('items['.$_POST['id'].']', 'some_value');

链接到手册


1

这是设置 cookie 的语法

setcookie(name, value, expire, path, domain);

当您使用setcookie函数创建一个cookie时,您必须指定三个参数。这些参数是setcookie(name, value, expiration):

  1. name:您的cookie名称。您将使用此名称稍后检索您的cookie,因此不要忘记它!
  2. value:存储在您的cookie中的值。常见的值是用户名(字符串)和上次访问时间(日期)。
  3. expiration:cookie过期并被删除的日期。如果您没有设置此过期日期,则它将被视为会话cookie,并在浏览器重新启动时被删除。

注意:- 这将重写您的cookie而不是更新。


0

来自php.net/manual/function.setcookie.php

Cookie 只有在下一次加载应该显示 Cookie 的页面时才会变得可见。要测试 Cookie 是否已成功设置,请在 Cookie 过期之前的下一个加载页面上检查 Cookie。过期时间是通过 expire 参数设置的。调试 Cookie 存在的一种好方法是简单地调用 print_r($_COOKIE);。

因此,Cookie 将在 PHP 脚本请求时通过 $_COOKIE 访问。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接