2013-03-06 10 views
8

Czy można usunąć plik cookie, który został ustawiony z przodu za pomocą JS z PHP?PHP nie może usunąć pliku cookie, który został ustawiony przez JavaScript

Robię to:

* przedni (JS):

if ($.cookie('myCookie')) 
{ 
    console.log('Cookie.. :( '); 
} 
else 
{ 
    console.log('Yaay! No cookie!'); 
    $.cookie('myCookie', '123'); 
} 

BACK (PHP):

if (isset($_REQUEST['removeCookie'])) 
{ 
    setcookie("myCookie", "", time()-3600); 
    unset($_COOKIE['myCookie']); 
} 

Wynik:

enter image description here

Wydaje się, że to tajemnica

+0

Co to pokazać pod 'ciasteczka 'karta debuggera? – hjpotter92

+1

Jaki kod jest uruchamiany jako pierwszy? czy robisz zapytanie php po uruchomieniu js? – datasage

+0

Jeśli tworzysz plik var_dump ($ _ COOKIE); w twoim PHP, co jest dołączone? – JoDev

Odpowiedz

0

ktoś może uruchomić się ten kod na maszynie testowej jestem odrobinę mylić, dlaczego cookies może być „wyłączony”, ale nie może być wartość zmienione lub wygasł etc w php wygląda na to, że setcookie() w ogóle nie działa.

<script type="text/javascript" src="jquery.js"></script> 
<script src="jquery.cookie.js"></script> 
<script> 
    $.cookie('myCookie', '123' ,'/'); 
    console.log("Created myCookie"); 
</script> 
<?php 
    echo $_COOKIE['myCookie']; 
    //Comment/uncomment below as required 
    //setcookie("myCookie", "BLAH", time()-430000); 
    //$_COOKIE['myCookie'] = "BLAH"; 
    setcookie('myCookie', '', 1, '/'); 
    echo "<br />unset myCookie"; 
    echo "<br />".$_COOKIE['myCookie']; 
?> 
<script> 
console.log($.cookie('myCookie').length); 
if ($.cookie('myCookie').length>0) 
{ 
    console.log('Cookie exists '); 
    console.log($.cookie('myCookie')); 
} 
else 
{ 
    console.log('Yaay! No cookie!'); 
} 
</script> 

Wydajesz się być w stanie stworzyć php <> JS cookies niedopasowanie tj: 2 ciastka zwane dokładnie takie same, ale przechowywania różnych danych.

+0

No cóż, to nie :( – rinchik

+0

Oczywiście nie było to wymagane, ale było to – Dave

+0

Ten fragment kodu nie będzie działa, jeśli chce wygasić plik cookie, jego kontrola jest w javascript, a nie PHP, więc wyzerowanie zmiennej w PHP nic nie da. –

2

Zależy od komputera użytkownika, który usunie plik cookie po przekroczeniu limitu czasu. Osobiście nie ufałbym temu. Ustawiłem ciasteczko na pustą wartość lub ustawiłem na DELETED następnie w kodzie testowym sprawdzam, czy jest ustawione, a następnie sprawdzam, czy wartość nie jest pusta, czy nie. DELETED

8

Nie można zmusić przeglądarki do usuń plik cookie. Możesz jednak usunąć zawartość pliku cookie i wygasić go. Dokładnie to, co robisz z powyższym kodem. Prawdopodobnie nieco go poprawię:

setcookie('myCookie', '', 1, '/'); // no need to calculate one hour ago. 
+0

Tutaj jest rzecz. może trzymać się przeglądarki, ale ze względu na strukturę aplikacji byłoby łatwiej, gdybym nie był o wiele łatwiejszy, gdybym mógł to zrobić przy pomocy PHP – rinchik

+0

'setcookie ('myCookie', '', 1, '/');' this będzie działać –

+0

przeczytaj cookie_spec: http://curl.haxx.se/rfc/cookie_spec.html –

4

Jeśli czas klienta jest błędny, ustawienie pliku cookie wygasa z funkcją time() może nie działać zgodnie z oczekiwaniami.

na wyłączony ciasteczka próbie,

setcookie('myCookie', 'blah blah', 1);

Źródło: A Comment in php setcookie docs

+1

nie. nie działało. Nie mam pojęcia, dlaczego w tym momencie. – rinchik

0

Aby całkowicie usunąć pliki cookie z przeglądarki na PHP, spróbuj tego kodu

$name = 'exists_cookie'; 
unset($_COOKIE[$name]); 
    // Set empty value 
$blank = setcookie($name, '', time() - 3600); 
Powiązane problemy