насколько я мог понять (например, Удалить куки) типичная процедура удаления cookie в PHP:
Но когда я сейчас пытаюсь получить доступ к cookie с помощью «filter_input», он все еще установлен. Мне кажется, что «filter_input» не обращается к суперглобальному «$ _COOKIE», а использует какой-то другой внутренний буфер.
Есть ли способ, которым я могу удалить куки раз и навсегда, чтобы даже «filter_input» больше не возвращал его?
Спасибо за вашу помощь
Вот мой пример кода:
<?php
// assembles the current URL
function currentUrl() {
$https = filter_input(INPUT_SERVER, 'HTTPS', FILTER_VALIDATE_BOOLEAN);
$protocol = $https ? 'https://' : 'http://';
$serverName = filter_input(
INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING);
$port = isset($_SERVER['SERVER_PORT'])
? ':' . filter_input(
INPUT_SERVER, 'SERVER_PORT', FILTER_VALIDATE_INT)
: '';
$requestURI = filter_input(
INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_ENCODED);
$pageURL = $protocol . $serverName . $port . $requestURI;
return $pageURL;
}const COOKIE_NAME = 'foo';
const COOKIE_VALUE = 'bar';
// ensure that we have our cookie set
$cookie = filter_input(INPUT_COOKIE, COOKIE_NAME, FILTER_SANITIZE_ENCODED);
if (empty($cookie)) {
$expires = time() + 60*60;
setcookie(COOKIE_NAME, COOKIE_VALUE, $expires);
header('Location: ' . currentUrl());
die();
}
// remove the cookie from $_COOKIE
unset($_COOKIE[COOKIE_NAME]);
print_r($_COOKIE); // this won't list our cookie
echo '<br/>';
$cookie = filter_input(INPUT_COOKIE, COOKIE_NAME, FILTER_SANITIZE_ENCODED);
echo $cookie; // this will print the cookie content
Задача ещё не решена.
Других решений пока нет …