Sesja PHP i pliki cookie PHP z przykładem
Co to jest plik cookie?
Plik cookie to mały plik o maksymalnym rozmiarze 4 KB, który serwer WWW przechowuje na komputerze klienta.
Po ustawieniu pliku cookie wszystkie następujące żądania stron zwracają nazwę i wartość pliku cookie.
Plik cookie można odczytać wyłącznie z domeny, z której został wystawiony. Na przykład plik cookie ustawiony przy użyciu domeny www.guru99.com nie można odczytać z domeny kariera.guru99.com.
Większość witryn internetowych wyświetla elementy z innych domen, np. reklamy. Domeny obsługujące te elementy mogą również ustawiać własne pliki cookies. Są to tak zwane pliki cookie stron trzecich.
Plik cookie utworzony przez użytkownika może być widoczny tylko dla niego. Inni użytkownicy nie widzą jego wartości.
Większość przeglądarek internetowych ma opcje wyłączania plików cookie, plików cookie stron trzecich lub obu.
W takim przypadku PHP odpowiada, przekazując token cookie w adresie URL.
Poniższy diagram ilustruje działanie plików cookies.
Tutaj,
1) Użytkownik żąda strony przechowującej pliki cookie
2) Serwer umieszcza plik cookie na komputerze użytkownika
3) Inne żądania strony od użytkownika zwrócą nazwę i wartość pliku cookie
Dlaczego i kiedy należy używać plików cookie?
- Http jest protokołem bezstanowym; pliki cookie pozwalają nam śledzić stan aplikacji za pomocą małych plików przechowywanych na komputerze użytkownika. Ścieżka przechowywania plików cookie zależy od przeglądarki. Internet Explorer zazwyczaj przechowuje je w folderze Temporal Internet Files.
- Personalizacja doświadczeń użytkownika – odbywa się to poprzez umożliwienie użytkownikom wyboru ich preferencji. Strony, po których następuje przekierowanie, są personalizowane na podstawie preferencji ustawionych w plikach cookie.
- Śledzenie stron odwiedzanych przez użytkownika
Tworzenie plików cookie
Przyjrzyjmy się teraz podstawowej składni używanej do tworzenia pliku cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
TUTAJ,
- Php„setcookie” to plik Funkcja PHP użyte do utworzenia pliku cookie.
- „nazwa_ciasteczka” to nazwa pliku cookie, którego serwer będzie używać podczas pobierania jego wartości ze zmiennej tablicowej $_COOKIE. To jest obowiązkowe.
- „Wartość_pliku cookie” to wartość pliku cookie i jest ona obowiązkowa
- „[expiry_time]” jest opcjonalne; można za jego pomocą ustawić czas ważności pliku cookie, np. 1 godzinę. Czas ustawia się za pomocą funkcji PHP time() plus/minus liczba sekund większa od 0, tj. time() + 3600 na 1 godzinę.
- „[ścieżka_cookie]” jest opcjonalna; można go użyć do ustawienia ścieżki plików cookie na serwerze. Ukośnik „/” oznacza, że plik cookie zostanie udostępniony w całej domenie. Podkatalogi ograniczają dostęp plików cookie do subdomeny.
- „[domena]” jest opcjonalne, można za jego pomocą zdefiniować hierarchię dostępu do plików cookies, tj
www.cookiedomain.com
oznacza całą domenę whilewww.sub.cookiedomain.com
ogranicza dostęp do plików cookieswww.sub.cookiedomain.com
i jego subdomeny. Należy pamiętać, że możliwe jest posiadanie subdomeny z subdomeny, o ile całkowita liczba znaków nie przekracza 253 znaków. - „[bezpieczne]” jest opcjonalne, wartością domyślną jest fałsz. Służy do określenia, czy plik cookie jest wysyłany przez https, jeśli jest ustawiony na true, czy przez http, jeśli jest ustawiony na false.
- „[Httponly]” jest opcjonalne. Jeśli jest ustawiona na true, wówczas tylko języki skryptowe po stronie klienta, tj JAVASCRIPT nie można uzyskać do nich dostępu.
Uwaga: funkcja cookie ustawiająca php musi zostać wykonana przed tagiem otwierającym HTML.
Przyjrzyjmy się teraz przykładowi wykorzystującemu pliki cookies.
Stworzymy prosty program, który pozwoli nam zapisać nazwę użytkownika w pliku cookie, który wygasa po dziesięciu sekundach.
Poniższy kod przedstawia implementację powyższego przykładu „cookies.php”.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Wyjście:
the cookie has been set for 60 seconds
Pobieranie wartości pliku cookie
Utwórz kolejny plik o nazwie „cookies_read.php” z następującym kodem.
<?php print_r($_COOKIE); //output the contents of the cookie array variable ?>
Wyjście:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Uwaga: $_COOKIE to wbudowana w PHP super zmienna globalna.
Zawiera nazwy i wartości wszystkich ustawionych plików cookie.
Liczba wartości, które
Tablica $_COOKIE, którą może zawierać, zależy od rozmiaru pamięci ustawionego w php.ini.
Wartość domyślna to 1 GB.
Testowanie naszej aplikacji.
Załóżmy, że zapisałeś swoje pliki PHP w folderze phptus.
- Krok 1 – otwórz przeglądarkę internetową i wpisz adres URL http://localhost/phptuts/cookies_read.php
Uwaga: Wyświetlono tylko pustą tablicę
- Krok 2 – Przeglądarka do adresu URL http://localhost/phptuts/cookies.php
- Krok 3 – Wróć do pierwszej karty, a następnie kliknij przycisk odświeżania
Poczekaj minutę, a następnie ponownie kliknij przycisk odświeżania. Jakie wyniki uzyskałeś?
Usuń ciasteczka
- Jeśli chcesz zniszczyć plik cookie przed jego upływem, ustawiasz czas wygaśnięcia na czas, który już upłynął.
- Utwórz nowe pole o nazwie cookie_destroy.php z następującym kodem
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Powtórz kroki od 1 do 3 z powyższej sekcji dotyczącej pobierania wartości plików cookie.
- Otwórz adres URL http://localhost/phptuts/cookie_destroy.php
- Przełącz na adres URL http://localhost/phptuts/cookies_read.php jakie wyniki wyświetla?
Co to jest sesja?
- Sesja to zmienna globalna przechowywana na serwerze.
- Każdej sesji przypisany jest unikalny identyfikator, który służy do pobierania przechowywanych wartości.
- Za każdym razem, gdy tworzona jest sesja, plik cookie zawierający unikalny identyfikator sesji jest przechowywany na komputerze użytkownika i zwracany z każdym żądaniem do serwera. Jeśli przeglądarka klienta nie obsługuje plików cookie, unikalny identyfikator sesji php jest wyświetlany w adresie URL
- Sesje mogą przechowywać stosunkowo duże ilości danych w porównaniu z plikami cookie.
- Wartości sesji są automatycznie usuwane po zamknięciu przeglądarki. Jeśli chcesz przechowywać wartości na stałe, powinieneś zapisać je w bazie danych.
- Podobnie jak zmienna tablicowa $_COOKIE, zmienne sesji są przechowywane w zmiennej tablicowej $_SESSION. Podobnie jak w przypadku plików cookie, sesja musi zostać rozpoczęta przed jakimkolwiek znacznikiem HTML.
Dlaczego i kiedy używać sesji?
- Chcesz bezpieczniej przechowywać ważne informacje, takie jak identyfikator użytkownika, na serwerze, tak aby złośliwi użytkownicy nie mogli z nimi walczyć.
- Chcesz przekazywać wartości z jednej strony na drugą.
- Szukasz alternatywy dla plików cookie w przeglądarkach, które nie obsługują plików cookie.
- Chcesz przechowywać zmienne globalne w sposób wydajny i bezpieczniejszy niż przekazywanie ich w adresie URL
- Tworzysz aplikację taką jak koszyk, która musi tymczasowo przechowywać informacje o pojemności większej niż 4 KB.
Tworzenie sesji
Aby utworzyć sesję, musisz najpierw wywołać funkcję session_start w PHP, a następnie zapisać swoje wartości w zmiennej tablicowej $_SESSION.
Załóżmy, że chcemy wiedzieć, ile razy strona została załadowana. Możemy do tego użyć sesji.
Poniższy kod pokazuje, jak tworzyć i pobierać wartości z sesji
<?php session_start(); //start the PHP_session function if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
Wyjście:
You are visitor number 1
Niszczenie zmiennych sesji
Funkcja session_destroy() służy do niszczenia całych zmiennych sesji PHP.
Jeśli chcesz zniszczyć tylko pojedynczy element sesji, użyj funkcji unset().
Poniższy kod ilustruje sposób użycia obu metod.
<?php session_destroy(); //destroy entire session ?>
<?php unset($_SESSION['product']); //destroy product session item ?>
Session_destroy usuwa wszystkie dane sesji, w tym pliki cookie powiązane z sesją.
Opcja Unset zwalnia tylko indywidualne zmienne sesji.
Pozostałe dane pozostają nienaruszone.
Podsumowanie
- Cookies to małe pliki zapisywane na komputerze użytkownika
- Pliki cookie można odczytać wyłącznie z domeny wydającej
- Pliki cookie mogą mieć określony czas ważności, jeżeli nie jest on ustawiony, wówczas plik cookie wygasa po zamknięciu przeglądarki
- Sesje są jak zmienne globalne przechowywane na serwerze
- Każda sesja otrzymuje unikalny identyfikator identyfikacyjny, który służy do śledzenia zmiennych dla użytkownika.
- Zarówno pliki cookie, jak i sesje muszą zostać uruchomione przed wysłaniem jakichkolwiek znaczników HTML do przeglądarki.