Skip to content

Commit 0c4725d

Browse files
authored
Merge pull request #2709 from Instrye/patch-1
fix. delete_cookite can't delete alreday set Cookie
2 parents 7115d64 + 2e9adfa commit 0c4725d

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

system/HTTP/Response.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -986,6 +986,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
986986

987987
$name = $prefix . $name;
988988

989+
$cookieHasFlag = false;
989990
foreach ($this->cookies as &$cookie)
990991
{
991992
if ($cookie['name'] === $name)
@@ -1000,11 +1001,16 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
10001001
}
10011002
$cookie['value'] = '';
10021003
$cookie['expires'] = '';
1003-
1004+
$cookieHasFlag = true;
10041005
break;
10051006
}
10061007
}
10071008

1009+
if (! $cookieHasFlag)
1010+
{
1011+
$this->setCookie($name, '', '', $domain, $path, $prefix);
1012+
}
1013+
10081014
return $this;
10091015
}
10101016

tests/system/Helpers/CookieHelperTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,13 @@ public function testGetCookie()
104104
$this->assertEquals(5, get_cookie('TEST'));
105105
}
106106

107+
public function testDeleteCookieAfterLastSet()
108+
{
109+
delete_cookie($this->name);
110+
111+
$cookie = $this->response->getCookie($this->name);
112+
// The cookie is set to be cleared when the request is sent....
113+
$this->assertEquals('', $cookie['value']);
114+
}
115+
107116
}

0 commit comments

Comments
 (0)