Podstawy PHP i MySQL
Temat 11 - Przekazywanie zmiennych przez cookie, sesje i link
Powrót do spisu tematów


W tym rozdziale:

  1. Tworzenie plików cookie.
  2. Identyfikowanie numeru sesji.
  3. Wykorzystanie sesji i plików cookie do identyfikacji użytkownika
  4. Przekazywanie wartości zmiennych przez link metodą GET
Kilka słów o cookie

Cookie to małe pliki tekstowe zapisywane na dysku użytkownika (pod warunkiem, że użytkownik nie wyłączył tej możliwości w przeglądarce). Pliki te mogą być wykorzystane do identyfikacji użytkownika na podstronach witryny.

Kilka słów o sesjach

Każde połączenie użytkownika ze stroną internetową obsługiwaną przez skrypty PHP otrzymuje etykietę w postaci niepowtarzalnego ciągu znaków. Po tej etykiecie użytkownik może być identyfikowany w podróży po witrynie. System sesji może być wykorzystany również celem dopuszczenia użytkownika do pewnych zasobów witryny pod warunkiem, że odwiedził on np. stronę główną witryny.
Jeżeli jest to możliwe, numer sesji jest zapisywany na dysku użytkownika w postaci cookie. Jeżeli opcja ta jest wyłączona w przeglądarce, odpowiednie informacje zapisywane są po stronie serwera.

Zapisywanie cookie

Do tworzenia plików cookie służy funkcja setcookie(). Funkcja ta może mieć trzy parametry:
- nazwa tworzonego pliku,
- wartość przechowywana przez ten plik,
- czas żywotności pliku (parametr opcjonalny).

Jeżeli nie zostanie określony czas żywotności pliku cookie, będzie on aktywny tylko do czasu aktywności sesji połączenia. Czyli po zamknięciu przeglądarki plik straci swoją żywotność.
Przy określaniu czasu żywotności pliku cookie możemy skorzystać z funkcji czasu UNIX-a time(), która podobnie jak poznana wcześniej funkcja mktime() zwraca aktualny czas Unixa.
W poniższym przykładzie zostaje utworzony plik cookie o nazwie pliczek, o treści Zosia ma rower i o czasie żywotności pół godziny (obecny czas plus 1800 sekund).

<?php
setcookie("pliczek","Zosia ma rower",time()+1800);
?>

Uwaga - można tworzyć pliki cookie tylko wtedy, gdy skrypt nie wysłał jeszcze żadnej wartości do przeglądarki, czyli nie było użyte polecenie echo.

Odczyt wartości przechowywanych w plikach cookie

W każdym momencie (w każdym miejscu witryny) możemy sprawdzić, jaka jest wartość przechowywana po stronie użytkownika.
Odebranie zmiennej cookie wygląda następująco:
$zmienna=$_COOKIE['nazwa_cookie'];

ćwiczenie 11_01 - Zapis i odczyt pliku cookie

  1. Należy umieścić na swoim koncie WWW pliki 11_01.php i 11_01a.php (do pobrania tutaj 11_01.zip)
  2. Należy uruchomić plik 11_01.php (przez http).
  3. Należy zamknąć okno przeglądarki i uruchomić bezpośrednio plik 11_01a.php (przez http).
  4. Należy przeanalizować kod obu plików zwracając uwagę na zamieszczone w nich komentarze.

Zadanie 13 - Sonda z jednokrotnym głosowaniem

  1. Należy umieścić na swoim koncie WWW plik zadanie13.php
  2. W ćwiczeniu 10_05 została przygotowana sonda. Sonda ta nie miała zabezpieczeñ wielokrotnego udziału, to znaczy użytkownik mógł oddać wielokrotnie głos.
    Należy w pliku zadanie13.php przygotować taką samą sondę, lecz zabezpieczoną w taki sposób, aby użytkownik w przeciągu 1 minuty mógł oddać tylko jeden raz głos.
    Przykład wykonania ćwiczenia znajduje się tutaj (wymagane połączenie z Internetem).

Rozpoczęcie pracy z sesją

Podobnie jak w cookie, możemy przekazać wartość zmiennej poprzez sesję. Zanim jednak zapiszemy lub odczytamy zmienne przechowywane w sesji, każdy skrypt korzystający z sesji musi ją uruchomić. Uruchomienie sesji, podobnie jak zapis do cookie, może odbyć się tylko wtedy, gdy żadne wartości nie zostały wysłane do przeglądarki. Rozpoczęcie sesji odbywa się przez wywołanie funkcji session_start() (bez parametrów).

Przykład rozpoczęcia sesji:
<?php
session_start();
?>

Zapisanie wartości zmiennych do sesji

Aby wpisać do sesji wartość zmiennej o nazwie "zosia", należy posłużyć się następującym zapisem:
$_SESSION['zosia']=$zosia;

Odczyt wartości zmiennej przekazywanej przez sesję

Aby przeczytać wartość zmiennej przechowywanej w sesji, należy posłużyć się następującym zapisem (podobnie, jak odczyt zmiennych przekazanych metodą POST lub GET).
$zosia=$_SESSION['zosia'];

Przekazanie wartości zmiennych przez link

Wiemy już jak przekazać zmienne za pomocą formularza, za pomocą plików cookie i sesji.
Istnieje kolejna metoda pozwalająca na przesłanie wartości zmiennych - przez link. Często wykorzystywana jest ona w organizacji witryny. Domyślnie zmienne przekazywane przez link wykorzystują metodę GET.
Aby przekazać do pliku o nazwie "plik.php" zmienną o nazwie "ala" i wartości "1" należy skonstruować następujący link:

<a href="plik.php?ala=1">

ćwiczenie 11_02 - Przysłanie wartości zmiennych przez sesję i przez link

  1. Należy umieścić na swoim koncie WWW pliki 11_03.php(do pobrania tutaj 11_02.zip)
  2. Należy uruchomić plik 11_02.php (przez http).
  3. Należy przeanalizować kod dostarczonego pliku zwracając uwagę na treść komentarzy.

W powyższym przykładzie zostaje zapisana do sesji wartość zmiennej kolor. W każdym miejscu witryny jest odczytywana wartość zmiennej kolor i wykorzystywana przy określeniu koloru tła strony.

 

Do zapamiętania

  1. Tworzyć pliki cookie można tylko wtedy, gdy nie została wysłana żadna informacja do przeglądarki.
  2. Aby rozpocząć obsługę sesji, należy uruchomić ją przed wysłaniem jakiejkolwiek informacji do przeglądarki.

 


Powrót do spisu tematów