2011-06-26 10 views
17

Jeśli zadzwonię pod numer setcookie() dwa razy z tą samą nazwą pliku cookie, otrzymam dwa pliki cookie.Jak zaktualizować plik cookie w PHP?

Jak zaktualizować istniejący plik cookie?

+3

W jaki sposób potwierdziłeś, że otrzymujesz dwa pliki cookie? – deceze

+0

Klikam prawym przyciskiem myszy -> edytuję preferencje witryny -> ciasteczka (Opera), a tam widzę wiele ciasteczek o tej samej nazwie – Cookie

Odpowiedz

16

Nie można aktualizować pliku cookie jako takiego, można go jednak zastąpić. W przeciwnym razie to jest to, czego szukasz: http://php.net/manual/en/function.setcookie.php

Działa. Koniecznie przeczytaj "Pospolite pułapki" na tej stronie.

Możesz również używać super globalnej wersji $_COOKIE['cookie_name'] do odczytywania/zapisywania plików cookie.

+5

, ale to nie działa: (('set_cookie ('fuuuuu', rand (0, 3434543) , $ exp_date); ', po odświeżeniu otrzymuję inny plik cookie o tej samej nazwie, innej wartości: | – Cookie

+1

Czy pochodzą z tej samej domeny? www lub nie-www się liczy – Francisc

+0

hmm Nie ustawiłem argumentu domeny .. Ale ciasteczka są ustawiane ze stron jednej domeny – Cookie

4

Tak więc, podczas gdy PHP wyśle ​​dwa nagłówki Set-Cookie: jeśli zostanie to poinstruowane, tylko ostatni powinien pozostać w przeglądarkach.
Netscape Cookie Spec http://curl.haxx.se/rfc/cookie_spec.html mówi:

Przypadki samą ścieżką i nazwą zastąpi siebie, ostatni przykład biorąc pierwszeństwo. Instancje o tej samej ścieżce, ale o różnych nazwach, dodadzą dodatkowe odwzorowania.

Jednak może być wskazane unikanie takich warunków brzegowych. Zmodyfikuj swoją aplikację, aby nie musiała przesłonić już wysłanego pliku cookie.

16

Możesz zaktualizować wartość cookie za pomocą funkcji setcookie(), ale powinieneś dodać "/" w czwartym argumencie, który jest argumentem "ścieżka", aby zapobiec tworzeniu kolejnego cookie o tej samej nazwie.

tj setcookie('cookie_name', 'cookie_value', $exp_date, '/');

0

połączenia COOKIE i usuwanie wartości Username setCookie ("username" '', 0 "/");