PHP - cookies

wstęp

Pliki cookies są używane przez przeglądarki internetowe do przechowywania danych niezbędnych do świadczenia przez nie usług online takich jak możliwość logowania, działanie koszyków w sklepach internetowych ale także śledzenie zachowań użytkowników czy tworzenie statystyk odwiedzalności serwisów.

Gdy przeglądarka łączy się ze stroną, w pierwszej kolejności szuka lokalnych cookies, odpowiednich dla danej witryny.
Jeżeli znajdzie – zostaną one przekazane serwerowi.

cookies w PHP

W PHP możemy ustawić cookie za pomocą funkcji setcookie($nazwa, $wartosc, $koniec, $sciezka, $domena, $bezpieczne).
Zdefiniowanych jest tu 6 argumentów.
Jednak wymagane jest podanie tylko pierwszego, którym jest nazwa ciasteczka.
Znaczenie pozostałych jest następujące:

  • $wartość - wartość przypisana
  • $koniec - czas wygaśnięcia (wyznaczany zazwyczaj względem czasu aktualnego time()
    Jeśli nie został podany ciasteczko istnieje do momentu usunięcia przez użytkownika.
    Jeśli podamy czas w przeszłości, ciasteczko zostaje usunięte np.: time()-3600.
  • $sciezka i $domena - stosowane do określenia adresów, dla których cookie jest ważne
  • $bezpieczne - true oznacza, że cookie nie będzie wysyłane przez zwykłe połączenie HTTP
Przykład
 <?php
 setcookie('nazwa', 'Witam na stronie', time()+10);
 echo "ciasteczko: ".@$_COOKIE['nazwa'];
 ?>
Przy pierwszym uruchomieniu skryptu nie ma jeszcze klucza nazwa w tablicy $_COOKIE.
Po napisie ciasteczko: nic się nie pojawi.
Klucz ten jest dopiero tworzony, a jego widoczność ustalana jest na następne 10 sekund (time()+10).
Po upływie tego czasu klucz ten jest usuwany.

zastosowanie

W praktyce, najczęściej używamy trzech pierwszych argumentów.
Przykładowe ustawienia ciasteczka licznik z wartością 1 i czasem wygaśnięcia po godzinie time()+3600
Jest następujące:
setcookie('licznik', '1', time()+3600)

Efekt:
Ciasteczko o nazwie licznik i wartości 1 będzie istniło przez godzinę od momentu załadowania strony.
Każde odświeżenie strony powoduje ponowne utworzenie ciasteczka i rozpoczęcie odliczania czasu od aktualnego.

Funkcja setcookie() powoduje dodanie klucza o nazwie ciasteczka w tablicy superglobalnej $_COOKIES['nazwa'] z wartością podaną w wywołaniu funkcji.

Sprawdzenie istnienie ciasteczka sprowadza się do sprawdzenia istnienia lub wartości klucza
w tablicy $_COOKIE['klucz']

Przykład:
Zwiększenie wartości licznika następuje tylko w momencie gdy ciasteczko licznik nie istnieje:


// Zwiększenie licznika o 1 jeśli wartość ciasteczka "licznik" jest różna od 1
if($_COOKIE["licznik"] != 1 ) $count+=1;
lub

// Zwiększenie licznika o 1 jeśli nie ma ciasteczka "licznik"
if(!isset($_COOKIE["licznik"])) $count+=1;

ĆWICZENIE:
Kod licznika pokazany pod adresem: licznik należy zmodyfikować, tak aby wartość licznika zwiększała się dopiero po upływie 30 sekund.

WSKAZÓWKI:

  1. Na początku skryptu ustawiamy ciasteczko:
  2. Modyfikujemy wiersz zwiększający wartość licznika:

zadanie

Napisz skrypt PHP, który po połączeniu się ze stroną:

Jeśli strona jest odwiedzana po raz pierwszy poprosi o imię użytkownika i zapisze je w ciasteczku.

Jeśli strona jest odwiedzana po raz kolejny wyświetli komunikat powitalny:

Zadanie dodatkowe:
Poza imieniem wyświetlana jest liczba odwiedzin strony.
Przykład:

Zadanie dodatkowe 2:
Dodaj możliwość usuwania ciasteczek imię oraz stan licznika.

przykładowa strona

Projekt i wykonanie: Ryszard Rogacz© 1999−2024