Ciasteczka (cookies)
Mianem ciasteczka (cookie) określa się pakiet informacji, które serwer przekazuje przeglądarce internetowej podczas pierwszej wizyty, a także z których korzysta za każdym następnym razem. Przeglądarka zapisuje ciastko w postaci pliku tekstowego na dysku. Rozmiar ciasteczka jest niewielki - wynosi maksymalnie około 4KB.
Uwaga! Wspaniałą alternatywą dla cookies jest Storage, dużo prostszy w obsłudze, ale działający tylko na nowych przeglądarkach.
Do czego służy ciasteczko?
W cookie można przechowywać dane niezbędne do automatycznego zalogowania podczas kolejnych wizyt użytkownika, o ustawieniach preferowanych strony internetowej, koszyk zakupowy, liczniki i inne.
Za pomocą cookie nie można przenosić wirusów, uzyskać informacji o zawartości twardego dysku. Każde ciasteczko zawiera adres serwera, który je wysłał.
Cookies a prawo
Istnieje obowiązek informowania o stosowaniu plików cookies przez strony internetowe od dnia 22 marca 2013r. wynika z treści Ustawy Prawo Telekomunikacyjne. Wprowadzono do niej bowiem nowelizację (w dniu 16.11.2012r.), która nakłada obowiązek informowania internautów o stosowaniu w danej witrynie plików Cookie.
Art. 173 Ustawy Prawo Telekomunikacyjne ma następujące brzmienie:
1. Przechowywanie informacji lub uzyskiwanie dostępu do informacji już przechowywanej w telekomunikacyjnym urządzeniu końcowym abonenta lub użytkownika końcowego jest dozwolone, pod warunkiem że:
Przechowywanie informacji lub uzyskiwanie dostępu do informacji już przechowywanej w telekomunikacyjnym urządzeniu końcowym abonenta lub użytkownika końcowego jest dozwolone, pod warunkiem że:
1) abonent lub użytkownik końcowy zostanie uprzednio bezpośrednio poinformowany w sposób jednoznaczny, łatwy i zrozumiały, o:
a) celu przechowywania i uzyskiwania dostępu do tej informacji,
b) możliwości określenia przez niego warunków przechowywania lub uzyskiwania dostępu do tej informacji za pomocą ustawień oprogramowania zainstalowanego w wykorzystywanym przez niego telekomunikacyjnym urządzeniu końcowym lub konfiguracji usługi;
2) abonent lub użytkownik końcowy, po otrzymaniu informacji, o których mowa w pkt 1, wyrazi na to zgodę;
3) przechowywana informacja lub uzyskiwanie do niej dostępu nie powoduje zmian konfiguracyjnych w telekomunikacyjnym urządzeniu końcowym abonenta lub użytkownika końcowego i oprogramowaniu zainstalowanym w tym urządzeniu.
Treść ustawy znajduje się na stronie: http://isap.sejm.gov.pl (interesuje nas Art. 173)
Oznacza to, że wszystkie cookies instalowane na komputerze podlegają obowiązkowemu informowaniu użytkownika o ich stosowaniu, gdyż cookies są informacjami w rozumieniu tej Ustawy, a urządzeniem telekomunikacyjnym jest komputer lub inne urządzenie, z którego korzysta użytkownik naszej strony WWW.
Tworzenie ciasteczka
Tworzenie ciasteczka odbywa się w następujący sposób:
<script> document.cookie = "NazwaCiasteczka=wartośćCiasteczka; [expires=datawygaśnięcia; domain=domenaStrony; path=sciezkaURL;]"; </script>
NazwaCiasteczka=wartośćCiasteczka - ta część deklaracji jest obowiązkowa. Podajemy tu nazwę pola i jego wartość. Na przykład mail=kowalskijan@gmail.com.
Poniższe parametry są opcjonalne:
expires - określa czas, po jakim przeglądarka ma usunąć ciasteczko, mierzona w milisekundach. Gdy nie zadeklarujemy daty wygaśnięcia, ciasteczko żyje jedynie do czasu trwania aktywnej sesji. Można podać konkretną datę w formacie GMT. Jak podać tę datę w dniach? Korzystamy ze wzoru: LiczbaDni*1000*60*60*24. Datę podajemy w formacie GMT, korzystając z metody toGMTString(). Podanie jako datę expires daty wcześniejszej niż aktualna spowoduje usuniecie ciasteczka.
domain - określa domenę ciasteczka. Gdy parametr ten nie zostanie ustawiony, przeglądarka automatycznie ustawi go jako nazwę serwera, które ustawiło ciasteczko. Najlepiej podać cały adres domeny.
path - ustawia ścieżkę, z której zostało utworzone ciasteczko. Zwykle pozostawiamy tu wartość "/".
Przykład 1 - Przykładowa funkcja tworzenia cookies
Poniższa funkcja możne być użyta do ustawienia ciasteczka. Parametr name oznacza nazwę ciasteczka, value - jego wartość, expires - datę wygaśnięcia podaną w liczbie miesięcy (30*24*60*60*1000). Jeśli chcesz użyć liczby dni zastosuj wzór - 24*60*60*1000, liczbę godzin - 24*60*60*1000 itd.
Funkcja encodeURI(); koduje znaki specjalne: spacje, * @ - _ + . / .
<script> function setCookie(name, value, expires) {
var cookieStr = encodeURI(name) +"=";
if (typeof value != "undefined") {cookieStr += encodeURI(value);}
if (!expires) {expires = new Date();
expires.setTime(expires.getTime()+30*24*60*60*1000);}
cookieStr += "; expires="+ expires.toGMTString() +";";+"path=/"; document.cookie = cookieStr;
}; </script>
Odczyt ciasteczka
Aby odczytać cookie, korzystamy z obiektu document.cookie, który jest ciągiem znaków, składającym się z par nazwa=wartość. Kolejne ciasteczka są oddzielone od siebie znakami "; ". Po średniku jest spacja. Dla przykładu documen.cookie może mięć wartość: nazwaCiastka1=wartosc1; nazwaCiastka2=wartosc2;
Przykład 2 - Przykładowa funkcja odczytująca cookies
Poniższa funkcja odczytuje wartość ciasteczka o nazwie name, utworzonego za pomocą funkcji z przykładu 1. Funkcja decodeURI(); dekoduje znaki specjalne.
Co robi funkcja getCookie? Otacza ciasteczko znakami "; " i ";", szuka ciagu znaków "; nazwaCiasteczka=", czyli szuka po prostu naszego ciasteczka w ciagu znaków, a następnie wycina z niego (metoda slice) wartość ciasteczka, by w funkcji return ją zwrócić.
Zmienna indeks przechowuje najpierw pozycję naszej nazwy pola w ciasteczku (wyszukanej przez indexOf), a następnie pozycja zwiększa się o liczbę znaków nazwy ciasteczka oraz trzy znaki ";", " " i "=", by ustawić sie na początku wartości nazwy ciasteczka.
<script> function getCookie(name) { var str = '; '+ document.cookie +';'; var index = str.indexOf('; '+ encodeURI(name) +'='); if (index != -1) { index += name.length+3; var value = str.slice(index, str.indexOf(';', index)); return decodeURI(value); } }; </script>
Aby wydzielić poszczególne cookie do zmiennej tablicowej możemy też skorzystać z funkcji split.
Usuwanie ciasteczka
Aby usunąć cookie wystarczy podać jako datę expires datę wcześniejsza niż aktualna.
Przykład 3 - Usuwanie cookie
W poniższym kodzie wykorzystano funkcję setCookie z przykładu 1.
Funkcja setTime(0) ustawia czas na 1 stycznia 1970 roku.
<script> function deleteCookie(name){ var past = new Date(); past.setTime(0); setCookie(name, null, past); }; </script>
Inne zagadnienia z tej lekcji
Storage
Storage jest wygodniejszą alternatywą dla ciasteczek. Nie jest jednak obsługiwany przez stare wersje przeglądarek. Używanie storage jest trywialnie proste. Możemy zapisać i odczytać dane.
Okna w JavaScript
Okna w JavaScript. Większość przeglądarek domyślnie blokuje otwieranie nowych okien i zakładek z poziomu kodu. W niniejszym artykule omówię działanie okienek, właściwości i metody obiektu Window.
Formularze w JavaScript
formularze w JavaScript. Jeżeli chcemy reagować na to, co użytkownik wpisuje w pola formularza na stronie internetowej, zanim cokolwiek wyśle na serwer, to JavaScript jest w tym momencie nieoceniony.
Funkcje wywoływane czasowo w JavaScript
Funkcje wywoływane czasowo w JavaScript. JavaScript daje możliwość wywoływania własnej funkcji co określony czas lub po upływie określonego czasu. Jednostką czasu jest milisekunda. Wystarczy pamiętać, że 1 sekunda - 1000 milisekund.
© medianauka.pl, 2016-12-23, A-3347