Pliki cookies
Technikum » PAI » Język PHP » Pliki cookies i sesje » Pliki cookies
Pliki cookies to niewielkie pliki tekstowe wysyłane przez serwer lub skrypt do przeglądarki i umieszczane przez nią na dysku użytkownika. Pliki te są częścią specyfikacji protokołu HTTP i są wysyłane do przeglądarki w postaci nagłówka o nazwie Set-Cookie. Służą głównie do identyfikacji użytkownika. Plik cookie zawiera między innymi nazwę serwera, datę wygaśnięcia pliku oraz informacje na temat domeny i ścieżki. Rozmiar pliku nie może przekroczyć 4 kB.
Zasada działania plików cookies jest następująca:
- Po nawiązaniu połączenia serwer wysyła do przeglądarki nagłówek set-cookie, który zawiera plik cookie.
- Przeglądarka zapisuje plik cookie na dysku użytkownika.
- Przy kolejnym połączeniu z serwerem przeglądarka wysyła do niego przechowywany na dysku plik cookie.
Pliki cookies są przechowywane na dysku do czasu wygaśnięcia. Jeżeli nie została podana data wygaśnięcia, to plik straci ważność po zamknięciu przeglądarki. Jeżeli zostały określone serwer i ścieżka, do której przeglądarka powinna wysłać informacje zawarte w cookie, to po otwarciu adresu pasującego do podanej domeny i ścieżki zawartość pliku cookie zostanie wysłana na serwer. Przeglądarka może zostać skonfigurowana tak, że przed pobraniem pliku cookie będzie pojawiał się odpowiedni komunikat lub będą odrzucane wszystkie pliki cookies.
Tworzenie pliku cookie
W skryptach PHP pliki cookies tworzone są za pomocą funkcji setcookie() , która ma postać:
Argumenty funkcji to:
- nazwa — nazwa pliku cookie.
- wartość — wartość, która będzie przechowana w pliku cookie.
- czas_trwania — czas, po jakim plik cookie zostanie usunięty przez przeglądarkę. Jest on podawany jako liczba sekund, które upłyną od 1 stycznia 1970 roku.
- ścieżka_dostępu — ścieżka dostępu na serwerze dla pliku cookie. Ustawienie tej wartości na / spowoduje, że plik cookie będzie dostępny w całej domenie. Ustawienie /www/skrypty spowoduje dostępność pliku w podanym katalogu oraz w katalogach podrzędnych.
- domena — domena, w której plik cookie będzie dostępny.
- bezpieczeństwo — może przyjmować wartość true lub false. Ustawienie true spowoduje, że plik cookie będzie mógł być przesyłany tylko przez bezpieczne połączenia HTTPS. Domyślnym ustawieniem jest false.
- tylko_http — może przyjmować wartość true lub false. Ustawienie true spowoduje, że plik cookie będzie dostępny tylko przez protokół HTTP i nie będzie dostępny z poziomu skryptów osadzonych na stronie.
Jedynym argumentem, który musi wystąpić w funkcji, jest nazwa, pozostałe są opcjonalne. Ponieważ pliki cookies są częścią nagłówka HTTP, funkcja setcookie() musi być wywołana, zanim jakiekolwiek dane zostaną wysłane do przeglądarki; powinna zatem zostać umieszczona w kodzie przed znacznikiem html.
Każdy wysłany plik cookie jest automatycznie umieszczany w superglobalnej tablicy $_COOKIE. Jej indeksami są nazwy plików cookies. Dostęp do pliku cookie jest możliwy po wpisaniu:
Przykład
Utworzony w przykładzie plik cookie zostanie zapisany przez przeglądarkę pod nazwą pismo. Zawartością pliku będzie tekst Na skróty. Do określenia czasu trwania pliku została wykorzystana funkcja time(), która zwraca bieżący czas. Do czasu zwróconego przez tę funkcję został dodany w sekundach czas trwania pliku (3600 s = 1 godz.). Ustawienie wartości / jako ścieżki dostępu oznacza, że plik będzie dostępny dla wszystkich stron na serwerze. Domena localhost oznacza, że plik będzie dostępny na lokalnym serwerze. Ostatni argument ustawiony na false oznacza, że plik cookie może być przesyłany przez nieszyfrowane połączenia.
Usuwanie pliku cookie
Jeżeli dla pliku cookie został ustalony czas ważności, to zostanie on automatycznie usunięty przez przeglądarkę po określonym czasie. Gdy czas ważności nie był określony, to plik zostanie usunięty przy zamykaniu przeglądarki. Aby usunąć samodzielnie plik cookie, można ustawić dla niego czas ważności, który już upłynął, albo ustawić jako wartość ciąg pusty lub wartość false. Pozostałe argumenty funkcji powinny być takie same jak argumenty tworzenia pliku.
Przykład
Zadania
- Przetestuj działanie skryptów PHP umieszczonych powyżej.
- Napisz skrypt tworzący plik cookie z czasem życia 1 minuta.
- Napisz skrypt odczytujący plik cookie z poprzedniego zadania.
- Napisz skrypt tworzący plik cookie z czasem życia do końca dnia.
- Napisz skrypt tworzący plik cookie z czasem życia do końca roku.