2012-03-13 19 views
8

Z jednej strony mam coś takiegoPHP setcookie() nie działa

setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk'); 

Na kolejnej stronie mam

var_dump($_COOKIE); 

mogę zobaczyć wszystkie automatycznie generowane z nich, jak PHPSESSID ale nie widzę user.

Jeśli wykonam echo setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk');, to zwróci ona true. Więc nie jestem pewien, dlaczego nie mogę tego zobaczyć.

Próbowałem wielu różnych pomysłów, ale nic nie zadziałało. Ponadto używam .htaccess do przekierowania wszystkich żądań za pomocą jednej strony index.php nie wiem, czy to coś robi.

+0

Może się okazać, że ["nowe ciasteczko ($ name)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L51) jest pomocne, jak można znaleźć w [ta samodzielna biblioteka] (https://github.com/delight-im/PHP-Cookie). – caw

Odpowiedz

17

Spróbuj tego:

setcookie('user', 'value' ,time() + 6000, '/', 'mydomain.co.uk'); 

Expires parametr musi być datownik. 6000 jako znacznik czasu jest w przeszłości i dlatego usuwa plik cookie.

+0

Ah ha tak! Doskonale, dziękuję! – Alex

+1

Dodano notatkę: parametr expires może być ustawiony na 0, co zasadniczo powoduje wygaśnięcie ciasteczka pod koniec sesji. http://php.net/manual/en/function.setcookie.php – diggersworld

1

Jak o:

setcookie('user', 'value' ,6000, '/', '.mydomain.co.uk'); 

Sprawdź cookie Brower użytkownika. Niektóre przeglądarki (firefox i chrome) mają dodatki, które pozwalają zobaczyć pliki cookie w momencie ich wejścia, abyś mógł debugować.

EDYCJA: Problem dotyczy 6000. To źle. użyj: time() + 6000

+0

Tak, użyłem dodatku do Chrome, ale uciekłem się do var_dumping $ _COOKIE, gdy tam też się nie pojawił. Próbowałem używać ".mydomain.co.uk", ale nadal nie działa :( – Alex

+0

Ach tak, dzięki! – Alex