Verwijder een cookie

Wanneer ik een cookie wil verwijderen, probeer ik

unset($_COOKIE['hello']);

Ik zie in mijn koekerbrowser van Firefox waar het cookie nog steeds bestaat. Hoe kan ik het cookie echt verwijderen?


Antwoord 1, Autoriteit 100%

U kunt dit proberen

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

Antwoord 2, Autoriteit 91%

Stel de waarde in op “” en de vervaldatum tot gisteren (of elke datum in het verleden)

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

Dan vervalt de cookie de volgende keer dat de pagina wordt geladen.


Antwoord 3, Autoriteit 74%

Een schone manier om een ​​cookie te verwijderen, is om beide $_COOKIEwaarde en browser cookie-bestand te wissen:

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

Antwoord 4, Autoriteit 9%

Om een ​​cookie betrouwbaar te verwijderen, is het niet genoeg om het in het verleden op te lossen, zoals berekend door uw PHP-server. Dit komt omdat clientcomputers en vaak tijden hebben die verschillen van dat van uw server.

De beste praktijk is om de huidige cookie te overschrijven met een blanco cookie die één seconde verloopt in de toekomst na het tijdperk (1 januari 1970 00:00:00 UTC), zoals SO:

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

Antwoord 5, Autoriteit 6%

Hierdoor wordt de cookie in uw code uitgeschakeld, maar aangezien de variabele $_COOKIE bij elk verzoek wordt vernieuwd, komt het gewoon terug op het volgende paginaverzoek.

Om de cookie daadwerkelijk te verwijderen, stelt u de vervaldatum in het verleden in:

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

Antwoord 6, autoriteit 4%

Ik had hetzelfde probleem met mijn code en ontdekte dat het een probleem met het cookiepad was. Bekijk deze stack overflow post: Kan php set cookie niet verwijderen

Ik had de cookie ingesteld met een padwaarde van “/”, maar had geen padwaarde toen ik het probeerde te wissen, dus het werd niet gewist. Dus hier is een voorbeeld van wat werkte:

De cookie instellen:

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

De cookie wissen:

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

Hopelijk helpt dat.


Antwoord 7, autoriteit 2%

Als u de cookie in het verleden instelt om te verlopen, zal de browser deze verwijderen. Zie setcookie() delete-voorbeeld op php.net


Antwoord 8, autoriteit 2%

Zie het monster met het label “voorbeeld # 2 setcookie () DELETE voorbeeld “Van de PHP-documenten. Om een ​​cookie uit de browser te wissen, moet u de browser vertellen dat de cookie is verlopen … De browser zal het dan verwijderen. unsetZoals je hebt gebruikt, verwijdert het gewoon de ‘Hallo’-cookie van de cookie-array.


Antwoord 9, Autoriteit 2%

Dit is hoe PHP V7 Setcookie () Code werkt wanneer u het doet:

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

Vanaf de uitvoer van TCPDUMP tijdens het snuiven op de poort 80, verzendt de server naar de client (browser) de volgende HTTP-headers:

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

Nabele pakketten in de volgende verzoeken stuurt de browser deze cookies niet langer in de koppen


Antwoord 10, Autoriteit 2%

Stel gewoon de waarde van cookie in op falseom het te verwijderen,

setcookie('cookiename', false);

PS: – Dat is de eenvoudigste manier om het te doen.


Antwoord 11

Om cookie te verwijderen, moet u alleen de waarde instellen op null:

“Als u een cookie hebt ingesteld met NONDEFULT-waarden voor een vervaltijd, pad of domein, moet u diezelfde waarden opnieuw verstrekken wanneer u de cookie verwijdert voor de cookie die correct moet worden verwijderd.”
Citaat van “PHP5” -boek.

Dus deze code zou moeten werken (werkt voor mij):

Instellen van de cookie:
setcookie('foo', 'bar', time() + 60 * 5);

het verwijderen van de cookie:
setcookie('foo', '', time() + 60 * 5);

Maar ik heb gemerkt dat iedereen de vervaldatum op het verleden zet, is dat nodig en waarom?


Antwoord 12

Als u alle cookies wilt verwijderen, kunt u schrijven:

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

Antwoord 13

Als je de cookie volledig van al je huidige domeinen wilt verwijderen, dan zal de volgende code je zeker helpen.

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

Deze code verwijdert de cookievariabele volledig van al uw domein, d.w.z.; ” / ” – het geeft aan dat de waarde van de cookievariabele is ingesteld voor alle domeinen, niet alleen voor het huidige domein of pad. time() – 300 geeft aan dat het op een eerdere tijd is ingesteld, zodat het vervalt.

Zo is het perfect verwijderd.


Antwoord 14

Stel de vervaldatum in op een uur geleden, als u de cookie als volgt wilt “verwijderen”:

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

of

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

Bron: http://www.php.net/manual/en/ function.setcookie.php

U moet de functie filter_input()gebruiken voor alle globals die een bezoeker als volgt kan invoeren/manipuleren:

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

Je kunt er hier meer over lezen: http://www. php.net/manual/en/function.filter-input.phpen hier: http ://www.w3schools.com/php/func_filter_input.asp


Antwoord 15

Ik weet dat het lang geleden is dat dit onderwerp is gemaakt, maar ik zag een klein foutje in deze oplossing (ik kan het zo noemen, omdat het een detail is).
Ik ben het ermee eens dat de betere oplossing waarschijnlijk deze oplossing is:

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

Maar in het onderhavige geval verwijdert u de cookies in elk geval waarin de uitschakelfunctie werkt en maakt u onmiddellijk nieuwe verlopen cookies voor het geval de uitschakelfunctie niet werkt.

Dat betekent dat zelfs als de uitschakelfunctie werkt, er nog steeds 2 cookies op de computer staan.
Het gevraagde doel, logisch gezien, is om de cookies te verwijderen als dat mogelijk is en als dat echt niet het geval is, ze te laten verlopen; om “het schoonste” resultaat te krijgen.

Dus ik denk dat we beter het volgende kunnen doen:

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

Bedankt en een fijne dag verder 🙂


Antwoord 16

$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.

Antwoord 17

Wanneer u 0voor de tijd invoert, bedoelt u “nu” (+ 0s van nu nu nu) voor de browser en het verwijdert de cookie.

setcookie("key", NULL, 0, "/");

Ik heb het in Chrome-browser gecontroleerd die me geeft:

Name: key
Content: Deleted
Created: Sunday, November 18, 2018 at 2:33:14 PM
Expires: Sunday, November 18, 2018 at 2:33:14 PM

Antwoord 18

U kunt een sessievariabele instellen op basis van cookie-waarden

session_start();
if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}
echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");

Antwoord 19

U kunt eenvoudig deze aanpassingsfunctie gebruiken:

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

Als u $_COOKIE[‘user_account’] wilt verwijderen.
Gebruik gewoon:

unset_cookie('user_account');

Antwoord 20

Het is eenvoudig!

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

Antwoord 21

Je moet cookies verwijderen met php in je server en ook met js voor je browser.. (Ze hebben gemaakt met php, maar cookiebestanden staan ook in de browserclient):

Een voorbeeld:

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']);

Antwoord 22

De meesten van jullie vergeten dat dit alleen werkt op een lokale computer.
Op een domein heb je een patroon zoals dit voorbeeld nodig.

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

Other episodes