Удалить куки



когда я хочу удалить куки я стараюсь



unset($_COOKIE['hello']);


Я вижу в своем браузере файлов cookie из firefox, что файл cookie все еще существует. Как я могу действительно удалить куки?

502   20  

20 ответов:

вы можете попробовать этот

if (isset($_COOKIE['remember_user'])) {
    unset($_COOKIE['Hello']);
    unset($_COOKIE['HelloTest1']);
    setcookie('Hello', null, -1, '/');
    setcookie('HelloTest1', null, -1, '/');
    return true;
} else {
    return false;
}

установите значение "" и срок годности вчера (или любой даты в прошлом)

setcookie("hello", "", time()-3600);

тогда срок действия файла cookie истечет при следующей загрузке страницы.

чистый способ удалить cookie-это очистить оба $_COOKIE значение и файл cookie браузера:

if (isset($_COOKIE['key'])) {
    unset($_COOKIE['key']);
    setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}

это приведет к отключению cookie в вашем коде, но поскольку переменная $_COOKIE обновляется при каждом запросе, она просто вернется на следующий запрос страницы.

чтобы фактически избавиться от куки, установите дату истечения срока действия в прошлом:

// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);

чтобы надежно удалить файл cookie, недостаточно установить его срок действия в любое время в прошлом, как это было вычислено вашим PHP-сервером. Это связано с тем, что клиентские компьютеры могут и часто имеют время, которое отличается от времени вашего сервера.

рекомендуется перезаписать текущий файл cookie пустым файлом cookie, срок действия которого истекает через одну секунду в будущем после эпохи (1 января 1970 00:00: 00 UTC), как так:

setcookie("hello", "", 1);

у меня была такая же проблема в моем коде и обнаружил, что это была проблема пути cookie. Проверьте это сообщение переполнения стека:не удается удалить PHP set cookie

Я установил файл cookie, используя значение пути"/", но не имел никакого значения пути, когда я пытался его очистить, поэтому он не очистился. Так вот пример того, что получилось:

настройки файлов cookie:

$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);

Очистка файлов cookie:

setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);

надеюсь, что это поможет.

Если вы установили срок действия cookie в прошлом, браузер удалит его. Смотрите setcookie () удалить пример на php.net

смотрите образец с надписью" Пример #2 setcookie () удалить пример " из документов PHP. Чтобы удалить файл cookie из браузера, необходимо сообщить браузеру, что срок действия файла cookie истек... затем браузер удалит его. unset Как вы использовали его просто удаляет "привет" cookie из массива COOKIE.

вот как PHP V7 setcookie() код работает, когда вы делаете:

<?php
    setcookie('user_id','');
    setcookie('session','');
?>

С выхода tcpdump при обнюхивании порта 80 сервер отправляет клиенту (браузеру) следующие заголовки HTTP:

Set-Cookie: user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Set-Cookie: session=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0

наблюдая пакеты в следующих запросах браузер больше не отправляет эти куки в заголовках

чтобы удалить cookie вам просто нужно установить значение NULL:

" Если вы задали файл cookie со значениями по умолчанию для времени истечения срока действия, пути или домена, вы должны снова указать те же значения при удалении файла cookie, чтобы файл cookie был удален правильно." Цитата из книги" Learning PHP5".

Так что этот код должен работать(работает для меня):

настройки файлов cookie: setcookie('foo', 'bar', time() + 60 * 5);

удаление файла cookie: setcookie('foo', '', time() + 60 * 5);

но я заметил то, что все устанавливают дату истечения срока действия в прошлое, это необходимо, и почему?

чтобы удалить все куки, вы можете написать:

foreach ($_COOKIE as $key => $value) {
    unset($value);
    setcookie($key, '', time() - 3600);
}

просто установите срок годности на один час назад, если вы хотите "удалить" cookie, например:

setcookie ("TestCookie", "", time() - 3600);

или

setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);

Источник:http://www.php.net/manual/en/function.setcookie.php

вы должны использовать filter_input() функция для всех глобалов, которые посетитель может ввести / манипулировать, например:

$visitors_ip = filter_input(INPUT_COOKIE, 'id');

вы можете прочитать больше об этом здесь:http://www.php.net/manual/en/function.filter-input.php и вот: http://www.w3schools.com/php/func_filter_input.asp

Я знаю, что прошло много времени с тех пор, как эта тема была создана, но я увидел небольшую ошибку в этом решении (я могу назвать это так, потому что это деталь). Я согласен, что лучшее решение, вероятно, это решение:

if (isset($_COOKIE['remember_user'])) {
            unset($_COOKIE['Hello']);
            unset($_COOKIE['HelloTest1']);
            setcookie('Hello', null, -1, '/');
            setcookie('HelloTest1', null, -1, '/');
            return true;
        } else {
            return false;
        }

но в данном случае вы удаляете файлы cookie в каждом случае, когда функция unset работает, и сразу же создаете новые устаревшие файлы cookie в случае, если функция unset не работает.

это означает, что даже если функция unset работает, она по-прежнему будет иметь 2 куки на компьютере. Заданная цель, с логической точки зрения, состоит в том, чтобы удалить куки, если это возможно, и если это действительно не так, сделать его истекающим; чтобы получить "самый чистый" результат.

Так что, я думаю, нам лучше сделать:

if (isset($_COOKIE['remember_user'])) {
            setcookie('Hello', null, -1, '/');
            setcookie('HelloTest1', null, -1, '/');
            unset($_COOKIE['Hello']);
            unset($_COOKIE['HelloTest1']);
            return true;
        } else {
            return false;
        }

спасибо и хорошего дня:)

$cookie_name = "my cookie";
$cookie_value = "my value";
$cookie_new_value = "my new value";

// Create a cookie,
setcookie($cookie_name, $cookie_value , time() + (86400 * 30), "/"); //86400 = 24 hours in seconds

// Get value in a cookie,
$cookie_value = $_COOKIE[$cookie_name];

// Update a cookie,
setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), "/");

// Delete a cookie,
setcookie($cookie_name, '' , time() - 3600, "/"); //  time() - 3600 means, set the cookie expiration date to the past hour.

Это просто!

setcookie("cookiename", "cookievalue", 1);

вы можете установить переменную сеанса на основе значений cookie

session_start();

if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}

echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");

Вы можете просто использовать эту настройку функции:

function unset_cookie($cookie_name) {
    if (isset($_COOKIE[$cookie_name])) {
        unset($_COOKIE[$cookie_name]);
        setcookie($cookie_name, null, -1);
    } else { return false; }
}

Если вы хотите удалить $_COOKIE ['user_account'].
Просто используйте:

unset_cookie('user_account');

Если вы хотите удалить куки полностью из всего вашего текущего домена, то следующий код, безусловно, поможет вам.

unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");

этот код полностью удалит переменную cookie из всего вашего домена, т. е.; " / " - это означает, что значение переменной cookie установлено для всего домена, а не только для текущего домена или пути. time () - 300 обозначает, что он установлен в предыдущее время, поэтому он истечет.

вот как это прекрасно удаляется.

вы должны удалить куки с php на вашем сервере, а также с js для Вашего браузера.. (Они сделали с php, но файлы cookie тоже находятся в клиенте браузера):

пример:

if ($_GET['action'] == 'exit'){
            // delete cookies with js and then in server with php:
            echo '
            <script type="text/javascript">
                var delete_cookie = function(name) {
                     document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
                };
                delete_cookie("madw");
                delete_cookie("usdw");
            </script>
            ';
unset($_COOKIE['cookie_name']);
unset($_COOKIE['cookie_time']);

большинство из вас забывают, что это будет работать только на локальной машине. В домене вам понадобится шаблон, подобный этому примеру.

setcookie("example_cookie", 'password', time()-3600, "/", $_SERVER['SERVER_NAME']);

Comments

    Ничего не найдено.