Les réponses fournies n'ont pas résolu mon problème,
Il n'a pas:
- Supprimer les cookies du domaine parent (de abc; supprimer bc; cookies),
- Supprimez les cookies d'un chemin supérieur autre que root.
Mon script le fait, vous voyez.
<?php function unset_cookie($name)
{
$host = $_SERVER['HTTP_HOST'];
$domain = explode(':', $host)[0];
$uri = $_SERVER['REQUEST_URI'];
$uri = rtrim(explode('?', $uri)[0], '/');
if ($uri && !filter_var('file://' . $uri, FILTER_VALIDATE_URL)) {
throw new Exception('invalid uri: ' . $uri);
}
$parts = explode('/', $uri);
$cookiePath = '';
foreach ($parts as $part) {
$cookiePath = '/'.ltrim($cookiePath.'/'.$part, '//');
setcookie($name, '', 1, $cookiePath);
$_domain = $domain;
do {
setcookie($name, '', 1, $cookiePath, $_domain);
} while (strpos($_domain, '.') !== false && $_domain = substr($_domain, 1 + strpos($_domain, '.')));
}
}
Ce n'est pas la solution la plus jolie / la plus sûre / la plus optimale, alors utilisez-la uniquement si vous ne connaissez pas le chemin du cookie et / ou le domaine du cookie. Ou utilisez l'idée pour créer votre version.