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>
Pobierz


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>
Pobierz


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>
Pobierz


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



©® Media Nauka 2008-2023 r.