初始创建然后删除cookie有效,但之后无法重新创建它

时间:2015-06-06 04:53:45

标签: php cookies setcookie

我需要创建和删除Cookie。

问题是我可以创建,然后删除cookie,但在之前删除的cookie后,我无法创建新的cookie。为什么呢?

清除浏览器的缓存后,它再次工作。

创建cookie并重定向到测试页面:

Caused by: java.lang.ClassCastException: org.terracotta.ehcachedx.monitor.probe.ProbePeerListenerFactory cannot be cast to net.sf.ehcache.distribution.CacheManagerPeerListenerFactory
at net.sf.ehcache.config.ConfigurationHelper.createCachePeerListeners(ConfigurationHelper.java:163)
at net.sf.ehcache.CacheManager.configure(CacheManager.java:786)
at net.sf.ehcache.CacheManager.doInit(CacheManager.java:471)
at net.sf.ehcache.CacheManager.init(CacheManager.java:395)
... 79 more

删除cookie并重定向到测试页面:

<?php
    $cookie_name = 'name';
    $cookie_time = 2000000000;
    $cookie_path = '/';
    $cookie_value = uniqid();

    setcookie($cookie_name, $cookie_value, $cookie_time, $cookie_path);

    echo '<script> window.location.assign("test.php"); </script>';
?>

测试页面中只有<?php $cookie_name = 'name'; $cookie_path = '/'; setcookie($cookie_name, '', time() - 3600, $cookie_path); echo '<script> window.location.assign("test.php"); </script>'; ?>

我在这里做错了什么? Cookie的名称是一个问题吗?是浏览器限制吗?

我需要能够在需要时创建和删除cookie。

我尝试使用此代码来避免缓存:

print_r($_COOKIE);

1 个答案:

答案 0 :(得分:1)

问题可能是浏览器正在缓存页面请求,而与服务器告诉它的内容无关。

有一个简单的方法来解决这个问题。将更改变量添加到查询字符串将使页面请求每次都是唯一的。这也会强制浏览器重新加载页面,即使在缓存时也是如此。

例如,将以下内容添加到地址栏/页面请求中:

?abc=123

每次更改数值。或者,您甚至可以使用timestamp,如此:

?<timestamp>

这将强制符合标准的浏览器每次都获取页面。