Cele ćwiczenia
(Na wszystkich stronach aplikacji ustaw atrybut strony Trace="true")
Response.Cookies["userName"].Value
= "Andrzej";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);
HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
Name – nazwa ciasteczka,
Value – wartość,
Expires – data ważności,
Domain – rozszerza zasięg ciasteczka do domeny,
Path – zawęża zasięg ciasteczka do aplikacji,
Values – kolekcja parametrów klucz-wartość,
HasKeys – informuje czy ciasteczko zawiera kolekcję wartości.
i. nazwy,
ii. wartości,
iii. okresu ważności w minutach,
Listing 1. Kod wysłania do przeglądarki dwóch ciasteczek, ciasteczko kukiz1 ma termin ważności 20 minut, ciasteczko kukiz2 jest ciasteczkiem sesyjnym bez terminu ważności i jest usuwane po wyłączeniu przeglądarki.
HttpCookie kuk = new HttpCookie("kukiz1", "Ala ma kota");
kuk.Expires = DateTime.Now.AddMinutes(20);
Response.Cookies.Add(kuk);
Response.Cookies.Add(new HttpCookie("kukiz2", "kot ma Alę"));
Przeglądarka zapisuje ciasteczka na komputerze klienckim w formie plików tekstowym w odpowiednim katalogu. Przeglądarka Internet Explorer zapisuje pliki ciasteczek
Katalog zawierający pliki ciasteczek jest katalogiem systemowym i zazwyczaj nie jest widoczny w Eksploratorze Windows. Aby zobaczyć zawartość katalogu ciasteczek należy ustawić odpowiednie opcje folderów
Do ukrytego katalogu Cookies można się dostać wpisując jawnie pełną ścieżkę dostępu do katalogu w pasku adresu Eksploratora Windows.
Nazwa ciasteczka ma format: user@serwer, gdzie: user = nazwa_użytkownika, serwer = nazwa_serwera
Listing 2. Kod odczytujący ciasteczko o nazwie pobranej z kontrolki tekstowej i umieszczający jego wartość jako tekst w etykiecie Label1.
string nazwaCiacha = TextBox1.Text;
if (Request.Cookies[nazwaCiacha] != null)
Label1.Text = "Wartość = \"" + Request.Cookies[nazwaCiacha].Value +"\".";
else
Label1.Text = "Nie otrzymano ciasteczka o podanej nazwie.";
Listing 3. Kod realizujący funkcje licznika odwiedzin strony przez użytkownika przeglądarki
int licznik;
if (Request.Cookies["licznik"] == null)
licznik = 0;
else
licznik = int.Parse(Request.Cookies["licznik"].Value);
licznik++;
Response.Cookies["licznik"].Value = licznik.ToString();
Response.Cookies["licznik"].Expires = DateTime.Now.AddDays(1);
Label1.Text = licznik.ToString();
Listing 4. Kod wysłania ciasteczka zawierającego zbiór wartości – danych o użytkowniku
Response.Cookies["userInfo"]["Nazwisko"] = "Kowalski";
Response.Cookies["userInfo"]["Imię"] = "Jan";
Response.Cookies["userInfo"]["Ostatnia wizyta"] = DateTime.Now.ToString();
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);
Listing 5. Kod wydruku danych użytkownika przekazanych przez ciasteczko userInfo
string dane_usera;
if (Request.Cookies["userInfo"] != null)
{
System.Collections.Specialized.NameValueCollection kolekcja_danych;
kolekcja_danych = Request.Cookies["userInfo"].Values;
dane_usera = kolekcja_danych["Nazwisko"] + " ";
dane_usera += kolekcja_danych["Imię"];
dane_usera += " Ostatnia wizyta: ";
dane_usera += kolekcja_danych["Ostatnia wizyta"];
Label1.Text = dane_usera;
}
Listing 6. Kod odczytu kolekcji ciasteczek i zapisu odczytanych danych w łańcuchu output
HttpCookie Ciacho;
string output = "";
string klucz;
string wartosc;
for (int i = 0; i < Request.Cookies.Count; i++)
{
Ciacho = Request.Cookies[i];
output += "Nazwa ciasteczka = " + Ciacho.Name + "<br />";
if (Ciacho.HasKeys)
{
output += "Ciastczko zawiera zbiór wartości<br />";
System.Collections.Specialized.NameValueCollection dane = Ciacho.Values;
for (int j = 0; j < dane.Count; j++)
{
klucz = dane.Keys[j];
wartosc = dane[j];
output += "Klucz = " + klucz + "<br />";
output += "Wartość = " + wartosc + "<br /><br />";
}
}
else
output += "Wartość = " + Ciacho.Value + "<br /><br />";
}