Autor: 24.01.2024
PHP - cookies oraz sesje
Aplikacje webowe muszą przechowywać jakieś informacje. Nieraz musimy np. zapisać nazwę zalogowanego użytkownika, czas od jego ostatniej wizyty czy jakieś inne dodatkowe informacje. W aplikacjach PHP do przechowywania takich niewielkich, krótkich informacji służą dwa mechanizmy: ciasteczka oraz sesje. W tym artykule użyjemy prostych przykładów aby te dwa mechanizmy zademonstrować. Zakładamy, że masz podstawową wiedzę na temat języka PHP.
Zacznijmy od ciasteczek
Ciasteczka (eng: cookies) są to niewielkie fragmenty informacji, które mogą zostać zapisane na komputerze użytkownika. Do czego możemy wykorzystywać ciasteczka? Ciasteczka mogą być wykorzystywane np. do zapisywania zalogowanego użytkownika. Oraz do wielu innych rzeczy.
Spójrz w jaki sposób możemy ustawić ciasteczko:
<?php
setcookie('username', 'Json', time() + 3600);
?>
Ciasteczka możemy ustawiać przy pomocy funkcji setcookie(). W naszym przykładzie przekazujemy 3 parametry do funkcji. Funkcja ma możliwość przyjęcia większej liczby parametrów, ale my się skupimy na 3. Rozłóżmy naszą funkcję na czynniki pierwsze.
1 parametr:
Jest to nazwa ciasteczka, czyli w naszym przypadku to username.
2 parametr:
Jest to wartość ciasteczka, czyli w naszym przypadku to Json.
3 parametr:
Jest to czas życia ciasteczka. W naszym przypadku czas życia to 1h. Pewnie zastanawiasz się dlaczego akurat 1h? Funkcja time() zwraca czas w sekundach od 1 stycznia 1970 roku. Aby ustawić czas życia ciasteczka na 1h musimy dodać 3600s (3600s = 1h) do wartości jaką zwraca funkcja time().
Odczytywanie wartości z ciasteczka
Podczas pracy z ciasteczkami będziemy potrzebowali sprawdzić ich wartość. Spójrz w jaki sposób możemy to zrobić:
<php
setcookie('username', 'Json', time() + 3600);
echo $_COOKIE['username'];
?>
Do wartości ciasteczka odwołujemy się za pomocą tablicy asocjacyjnej o nazwie $_COOKIE. Nazwa naszego ciasteczka to klucz takiej tablicy.
Po wywołaniu skryptu otrzymamy następującą odpowiedź:
Json
Sesje - przechowywanie informacji
Podobnie jak ciasteczka, mechanizm sesji potrafi zapisywać informację o użytkowniku. Ciasteczka zapisywane są na urządzeniu użytkownika, a sesja zapisywana jest na serwerze.
Przygotowaliśmy prosty licznik wizyt na stronie. Na podstawie poniższego kodu postaramy się wytłumaczyć użyte mechanizmy.
<?php
session_start();
if(isset($_SESSION['views'])) {
$_SESSION['views'] = $_SESSION['views'] + 1;
}
else {
$_SESSION['views'] = 1;
}
echo "VIEWS:". $_SESSION['views'];
if($_SESSION['views'] == 5) {
session_destroy();
}
?>
Funkcja session_start() inicjuje sesję.
$_SESSION[‘views’] jest to tablica asocjacyjna, która będzie przechowywała zmienne sesyjne.
Funkcja isset() weryfikuje czy dana zmienna sesyjna jest ustawiona bądź nie. Jeżeli nasza zmienna sesyjna views jest ustawiona wówczas zwiększamy nasz licznik odwiedzin o 1. W przeciwnym wypadku ustawiamy naszą zmienną sesyjną na 1.
Poniżej instrukcji else wyświetlamy zawartość naszej zmiennej sesyjnej korzystając z tablicy asocjacyjnej $_SESSION.
Ostatnia linijka weryfikuje czy mieliśmy do czynienia z 5 odsłonami strony. Po przekroczeniu 5 odsłon, sesja jest resetowana przy pomocy funkcji session_destroy().
Podsumowanie
Jeśli chcesz przechować proste, podstawowe informacje w programie napisanym w PHP, to właśnie ciasteczka oraz sesje są tu podstawowym wyborem. Mamy nadzieję, że po lekturze tego artykułu poradzisz sobie z samodzielnym zaimplementowaniem tych dwóch mechanizmów.