我有这个功能来设置一个cookie:
private function setCookie($key, $value){
if(setcookie(
$key,
$this->encrypt($value),
time() + 2592000,
adminpath,
database::getDomain(),
database::getHTTPS(),
true
)){ // set cookie for a month
return true;
}
else{ // cookie could not be created, write to errorlog
$error = array(
"type" => "other",
"argument" => 1,
"class" => __CLASS__,
"function" => __FUNCTION__,
"errorMsg" => "Could not create cookie ".$key." with value ".$value,
"file" => __FILE__,
"line" => __LINE__
);
$this->errorlog->log($error);
return false;
}
}
然后我使用此代码取消设置cookie:
private function destroyCookie($key){
if(setcookie(
$key,
" ",
time() - (time() + 2592000),
adminpath,
database::getDomain(),
database::getHTTPS(),
true
)){
return true;
}
else{
$error = array(
"type" => "other",
"argument" => 1,
"class" => __CLASS__,
"function" => __FUNCTION__,
"errorMsg" => "Could not destroy cookie ".$key,
"file" => __FILE__,
"line" => __LINE__
);
$this->errorlog->log($error);
return false;
}
}
我可能遗漏了一些非常简单的东西,但我无法弄清楚为什么我的cookie没有被删除。 两个函数都在同一个类中,函数database :: getDomain()导致“www.creetab.com”,函数database :: getHTTPS()导致“false”。 adminpath是“/ admin /”。 有人可以帮我解决这个问题吗? 设置cookie工作正常,只是删除不起作用的cookie。
答案 0 :(得分:0)
$key,
" ",
time() - (time() + 2592000),
应该是:
$key,
"",
time() - 2592000,
否则你只是给它一个空的值,它仍然是一个值。你想通过把它变为空来给它没有任何价值。同时如上所述设置到期时间。