2016-12-09 96 views
-1

我有这个问题与饼干:PHP的Cookie仍然存在删除后

setcookie('NAME', '', time() - 3600); 
session_unset(); 
session_destroy(); 

饼干仍然在浏览器中存在的,我能看到的值与print_r($_COOKIE); 但我不能访问到文件内容(这是正确的因为会话在服务器端删除)。 但是为什么cookie在浏览器中仍然可见,直到关闭它为止?

+2

要设置cookie的到期,所以在接下来的页面加载它会被浏览器中移除。 – cmorrissey

+0

哪个cookie?如果你打算取消设置会话cookie,使用'setcookie(session_name(),time() - 3600);'(除非会话名作为session_name()的参数,否则不要使用会话名的文字) – symcbean

+0

是的会话cookie,我不会在会话开始时设置它,它会自动出现 – Klapsius

回答

0

您正在设置cookie过期,所以在下一页加载时它将被浏览器删除。 - cmorrissey

cmorrisey是正确的。在你的代码示例中,我看到你在一个小时前设置了过期。如果这是首选,您也可以使用0来让cookie在会话结束时过期。

PHP的cookie:http://www.w3schools.com/php/func_http_setcookie.asp

到期字段是可选的。指定cookie何时到期。值:time()+ 86400 * 30将设置cookie在30天内过期。如果省略此参数或将其设置为0,则Cookie将在会话结束时过期(浏览器关闭时)。默认值为0

会话名称()/ session.name - http://php.net/manual/en/function.session-name.php

+0

正如我上面所说的,我根本没有启动这个cookie。他在我开始会议时自动出现。但我不想保留此数据 – Klapsius

+0

会话名称引用会话的名称,该名称用于Cookie和URL(例如PHPSESSID)中。它应该只包含字母数字字符;它应该是简短的和描述性的(即对于具有启用cookie警告的用户)。如果指定了名称,则当前会话的名称将更改为其值。 – mrvnmchm

+0

string session_name([string $ name]) session_name()返回当前会话的名称。如果给出$ name,session_name()将更新会话名称并返回旧的会话名称。 – mrvnmchm