Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么cookie会立即过期?_Php_Cookies - Fatal编程技术网

Php 为什么cookie会立即过期?

Php 为什么cookie会立即过期?,php,cookies,Php,Cookies,在我的代码(使用域localdev.xxx.com在我的本地计算机上测试)中,我使用以下代码在浏览器中设置cookie,该cookie将在6个月后过期: $cookieExpiresOn = time() + (60 * 60 * 24 * 184); setcookie("ref", "somevalue", $cookieExpiresOn); 但是,当我使用firebug检查http响应时,set cookie头的日期设置为1970年1月1日 Set-Cookie: ref=delete

在我的代码(使用域localdev.xxx.com在我的本地计算机上测试)中,我使用以下代码在浏览器中设置cookie,该cookie将在6个月后过期:

$cookieExpiresOn = time() + (60 * 60 * 24 * 184);
setcookie("ref", "somevalue", $cookieExpiresOn);
但是,当我使用firebug检查http响应时,set cookie头的日期设置为1970年1月1日

Set-Cookie: ref=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT;

time()
函数不是应该返回自Unix时代以来的当前日期和时间吗?为什么会发生这种情况?

找到了问题所在。在我的实际代码中,值是通过如下变量设置的:

setcookie("ref", $varx, $cookieExpiresOn);

显然,如果cookie值是空字符串,那么php会通过将cookie的过期日期设置为当前GMT时间之前来尝试删除cookie。

是否放置了“ref=deleted”?在示例代码中,它改为“somevalue”。也许稍后的一行代码会重新设置cookie?只是一个快速测试:将ref更改为_ref,看看它的设置是否总是有可能被覆盖。time()函数有时有点奇怪。有时做time()+任何事情并在变量中定义它都会起作用,有时它不会很快解决这个问题,比如将time()定义为它自己的变量,然后在下一行对它进行计算。。。另外,只需仔细检查一下你的cooieExpiresOn到底是什么,也许它是一个超出范围的数字,从而导致它失效,成为一个事实,但不起作用。