Szukaj…


Wprowadzenie

Plik cookie HTTP to niewielka część danych wysyłana ze strony internetowej i przechowywana na komputerze użytkownika przez przeglądarkę internetową użytkownika podczas przeglądania.

Składnia

  • bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

Parametry

parametr Szczegół
Nazwa Nazwa ciasteczka. Jest to również klucz, którego możesz użyć do odzyskania wartości z super globalnej $_COOKIE . Jest to jedyny wymagany parametr
wartość Wartość do zapisania w pliku cookie. Te dane są dostępne dla przeglądarki, więc nie przechowuj tutaj niczego wrażliwego.
wygasać Uniksowy znacznik czasu wskazujący, kiedy plik cookie powinien wygasnąć. Jeśli ustawiony na zero, ciasteczko wygaśnie pod koniec sesji. Jeśli zostanie ustawiony na wartość mniejszą niż bieżący znacznik czasu Unixa, plik cookie wygasa natychmiast.
ścieżka Zakres pliku cookie. Jeśli ustawione na / plik cookie będzie dostępny w całej domenie. Jeśli ustawione na /some-path/ ciasteczko będzie dostępne tylko na tej ścieżce i potomkach tej ścieżki. Domyślnie bieżąca ścieżka do pliku, w którym zapisywany jest plik cookie.
domena Domena lub subdomena, na której plik cookie jest dostępny. Jeśli ustawisz gołą domenę stackoverflow.com plik cookie będzie dostępny dla tej domeny i wszystkich subdomen. Jeśli zostanie ustawiona subdomena meta.stackoverflow.com plik cookie będzie dostępny tylko w tej subdomenie i we wszystkich subdomenach.
bezpieczne Po ustawieniu na TRUE plik cookie zostanie ustawiony tylko wtedy, gdy istnieje bezpieczne połączenie HTTPS między klientem a serwerem.
httponly Określa, że plik cookie powinien być udostępniany tylko za pośrednictwem protokołu HTTP / S i nie powinien być dostępny dla języków skryptowych po stronie klienta, takich jak JavaScript. Dostępne tylko w PHP 5.2 lub nowszym.

Uwagi

Warto zauważyć, że samo wywołanie setcookie nie tylko umieszcza dane w superglobalnej tablicy $_COOKIE .

Na przykład nie ma sensu robić:

setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value

Wartość jeszcze nie istnieje, dopiero po załadowaniu następnej strony. Funkcja setcookie mówi tylko „ przy następnym połączeniu http powiedz klientowi (przeglądarce), aby ustawił ten plik cookie ”. Następnie, gdy nagłówki są wysyłane do przeglądarki, zawierają ten nagłówek pliku cookie. Przeglądarka sprawdza następnie, czy plik cookie jeszcze nie wygasł, a jeśli nie, to w żądaniu HTTP wysyła plik cookie do serwera i wtedy PHP je otrzymuje i umieszcza zawartość w tablicy $_COOKIE .

Ciasteczko jest ustawiane za pomocą setcookie() . Ponieważ pliki cookie są częścią nagłówka HTTP, należy ustawić pliki cookie przed wysłaniem danych wyjściowych do przeglądarki.

Przykład:

setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params

Opis:

  • Tworzy ciasteczko z nazwą user
  • (Opcjonalnie) Wartość pliku cookie to Tom
  • (Opcjonalnie) Plik cookie wygasa za 1 dzień (86400 sekund)
  • (Opcjonalnie) Pliki cookie są dostępne w całej witrynie /
  • (Opcjonalnie) Pliki cookie są wysyłane tylko przez HTTPS
  • (Opcjonalnie) Pliki cookie nie są dostępne dla języków skryptowych, takich jak JavaScript

Do utworzonego lub zmodyfikowanego pliku cookie można uzyskać dostęp tylko przy kolejnych żądaniach (w których path i domain zgodne), ponieważ superglobalna $_COOKIE nie jest natychmiast zapełniana nowymi danymi.

Pobierz i wyślij user nazwie Cookie

Wartość pliku cookie można odzyskać za pomocą zmiennej globalnej $_COOKIE . przykład, jeśli mamy plik cookie o nazwie user możemy go pobrać w ten sposób

echo $_COOKIE['user'];

Wartość pliku cookie można zmodyfikować, resetując plik cookie

setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already

Pliki cookie są częścią nagłówka HTTP, więc setcookie() musi zostać wywołane przed wysłaniem danych wyjściowych do przeglądarki.

Podczas modyfikowania pliku cookie upewnij się, że path i parametry domain setcookie() odpowiadają istniejącemu plikowi cookie, w przeciwnym razie zostanie utworzony nowy plik cookie.

Część wartościowa pliku cookie zostanie automatycznie zakodowana podczas wysyłania pliku cookie, a po jego otrzymaniu jest automatycznie dekodowana i przypisywana do zmiennej o tej samej nazwie co nazwa pliku cookie

Użyj funkcji isset() w superglobalnej zmiennej $_COOKIE , aby sprawdzić, czy plik cookie jest ustawiony.

Przykład:

// PHP <7.0
if (isset($_COOKIE['user'])) {
    // true, cookie is set
    echo 'User is ' . $_COOKIE['user'];
else {
    // false, cookie is not set
    echo 'User is not logged in';
}

// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in'; 

Aby usunąć plik cookie, ustaw znacznik czasu wygaśnięcia na czas z przeszłości. To uruchamia mechanizm usuwania przeglądarki:

setcookie('user', '', time() - 3600, '/');

Podczas usuwania pliku cookie upewnij się, że path i parametry domain setcookie() odpowiadają setcookie() cookie, który próbujesz usunąć, lub zostanie utworzony nowy plik cookie, który wygasa natychmiast.

Dobrym pomysłem jest również $_COOKIE wartości $_COOKIE na wypadek, gdyby bieżąca strona jej używała:

unset($_COOKIE['user']);


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow