PHP filter_input возвращает удаленный куки

насколько я мог понять (например, Удалить куки) типичная процедура удаления cookie в PHP:

  • используйте «setcookie», чтобы установить срок действия в прошлом, чтобы браузер удалял куки при перезагрузке следующей страницы.
  • вызовите «unset», чтобы удалить куки из суперглобального «$ _COOKIE».

Но когда я сейчас пытаюсь получить доступ к 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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]