1. Obiekt Session
Każde odwiedzenie strony przez użytkownika (klienta) jest reprezentowane przez obiekt Session, który jest stworzony w momencie wejścia osoby na stronę. Obiekt Session jest osobistym schowkiem każdego użytkownika. W nim można zachować informacje, które następnie można odczytać oraz modyfikować. W momencie, gdy użytkownik (przeglądarka) po raz pierwszy zażąda pliku ASP znajdującego się w aplikacji Webowej, ASP wygeneruje unikalny numer przechowywany w SessionID. Na początku nowej sesji, serwer przechowuje SessionID w przeglądarce użytkownika jako "cookie" sesji, które pozostają w pamięci przeglądarki do momentu upływu czasu sesji lub zamknięcia przeglądarki. Uwaga! Można przechowywać wartości w obiekcie Session wtedy, gdy przeglądarka użytkownika akceptuje "cookies" i użytkownik nie wyłączył opcji pozwalającej przeglądarce na przechowywanie plików "cookies". Poniższy przykład demonstruje jak można przechować łańcuch i liczbę w obiekcie Session:
<% Session("Imie") = "Jan" Session("Wiek") = 28 %> |
Obiekt Session posiada cztery właściwości i jedną metodę:
Właściwości
SessionID |
- |
zwraca wartość identyfikatora sesji, który jest unikalny do momentu restartu serwera WWW; należy pamiętać o tym, aby nie używać tej właściwości do stworzenia unikalnego klucza w bazie danych |
TimeOut |
- |
określa maksymalny czas nieaktywności użytkownika po jakim sesja zostaje przerwana; wartość jest określana w minutach |
LCID |
- |
identyfikator lokalny, który może być czytany i ustawiany podczas sesji; więcej informacji znajdziesz tutaj |
CodePage |
- |
numer strony kodowej; serwer tworzy dokument w celu wysłania go do klienta (przeglądarki), z drugiej strony przeglądarka konwertuje bajty z otrzymanego dokumentu i wyświetla je na ekranie; poniżej zostaną przedstawione niektóre strony kodowe dla wybranych języków:
strona kodowa |
kodowanie znaków |
nazwa |
1252 |
iso-8859-1 |
Western |
28592 |
iso-8859-2 |
Central European (ISO) |
1250 |
Windows-1250 |
Central European (Windows) |
28597 |
iso-8859-7 |
Greek (ISO) |
1253 |
Windows-1253 |
Greek (Windows) |
1256 |
Windows-1256 |
Arabic (Windows) |
936 |
gb2312 |
Simplified Chinese (GB2312) | |
Metoda
Abandon |
- |
wywołanie tej metody spowoduje usunięcie wszystkich zasobów obiektu Session |
Wyłączanie wysyłania "cookies" sesji od strony serwera WWW można zrealizować za pomocą komendy:
<% @ ENABLESESSIONSTATE=FALSE %> |
lub
<% @ ENABLESESSIONSTATE=FALSE LANGUAGE=VBScript %> |
W przypadku dużego obciążenia serwera jest wskazane, aby w plikach, które nie używają obiektu Session znalazła się jedna z dwóch powyższych linii.
Plik global.asa
W pliku global.asa można ustawić wartości początkowe niektórych zmiennych, np. obiektu Session. Struktura pliku jest następująca:
<SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Session_OnStart |
|
' instrukcje wykonywane w momencie otwarcia sesji |
End Sub Sub Session_OnEnd |
|
' instrukcje wykonywane w momencie zakończenia (zamknięcia) sesji |
End Sub Sub Application_OnStart |
|
' instrukcje wykonywane w momencie otwarcia aplikacji (strony WWW) |
End Sub Sub Application_OnEnd |
|
' instrukcje wykonywane w momencie zakończenia (zamknięcia) aplikacji (strony WWW) |
End Sub </SCRIPT> |
2. Obiekt Cookies
"Cookie" są częścią informacji która jest wymieniana między klientem i serwerem. Występują dwa rodzaje "cookie": - "cookie" sesji; - stałe "cookie". Pierwsze z nich działają tylko w czasie, gdy okno przeglądarki jest otwarte i przechowywane są w obiekcie Session. Drugie zaś są przechowywane na dysku twardym klienta (użytkownika) i są aktywne do czasu upływu ich daty ważności. Wiele osób ma pewne obawy co do używania stałych "cookie", ponieważ są one przechowywane na twardym dysku w postaci niezaszyfrowanej. Pliki "cookie" są umieszczane w przypadku przeglądarki Internet Explorer w katalogu <Katalog Windows>Profiles<Nazwa użytkownika>Cookies. "Cookie" są pojedynczymi plikami z rozszerzeniem .txt. W swojej nazwie zawierają nazwę identyfikującą użytkownika oraz nazwę identyfikującą stronę WWW. "Cookie" są tworzone na serwerze i wysyłane do klienta (przeglądarki) razem z żądaną stroną WWW. Dlatego, jak można się domyśleć, "cookie" należą do obiektu Response. Poniżej znajduje się przykład umieszczenia w "cookie" o nazwie Imie wartość "Mariusz":
Response.Cookies("Imie") = "Mariusz" |
Cookies jest grupą obiektu Response. Używając powyższej składni można stworzyć wiele "cookie", których wartości można dowolnie zmieniać. Dane przechowywane w stałych "cookie" nie wygasają po zamknięciu przeglądarki. Posiadają one jednak datę upływu ważności. Przykład, który pokaże sposób określenia daty upływu ważności "cookie" po upływie 1 miesiąca:
<% Response.Cookies("Produkt") = "Telewizor" Response.Cookies("Produkt").Expires = DateAdd("m", 1, Now()) %> |
Można przechowywać więcej niż jedną wartość w "cookie". Zrobić to można w następujący sposób:
1: 2: 2: 4: 5: 6: 7: |
<% Response.Cookies("Produkt")("Nazwa") = "Telewizor" Response.Cookies("Produkt")("DataZamowienia") = CStr(Now()) Response.Cookies("Produkt").Domain = "sklep.com" Response.Cookies("Produkt").Path = "/rtv/" Response.Cookies("Produkt").Secure = "False" %> |
Linia 2 i 3 przypisują wartości do "cookie" o nazwie Produkt. Zostają zachowane dwie wartości, pierwsza to nazwa produktu, a druga to data dokonania wyboru (zamówienia). Linia 4 określa nazwę domeny dla której "cookie" będzie aktywny. Wartość domyślna Domain jest domena serwera WWW. Innym także ważnym ograniczeniem "cookie" jest jego ścieżka (path), linia 6. Ścieżka służy podobnie jak Domain do ograniczenia aktywności "cookie" do konkretnej ścieżki (katalogu i podkatalogów) na serwerze WWW. Wielkość liter w nazwie ścieżki odgrywa ważną rolę, gdyż ścieżka "/Katalog/" nie jest interpretowana tak samo jak "/katalog/", tzn. że wielkie i małe litery są rozróżniane. Ostatnia linia dotyczy szyfrowania "cookie". Domyślnie "cookie" nie są bezpieczne, więc należy pamiętać, aby nie wysyłać ani nie przechowywać "wrażliwych" informacji na temat klienta (użytkownika).
Odczytanie wartości "cookie" (np. z powyższego przykładu) realizuje się w następujący sposób:
<% = Request.Cookies("Produkt")("Nazwa") %> |
Komenda odczytuje wartość i wysyła ją do klienta (przeglądarki). W powyższym przykładzie została wyświetlona tylko jedna wartość. Jak można wyświetlić pozostałe? Otóż rozwiązaniem jest właściwość HasKeys grupy Cookies. Poniżej został przedstawiony bardziej rozbudowany przykład wykorzystujący tą właśnie właściwość:
<% @LANGUAGE = VBScript %> <% Option Explicit %> <HTML> <BODY> <% Dim cookie, klucz For Each cookie In Request.Cookies |
|
If Not Request.Cookies(cookies).HasKeys Then |
|
|
Response.Write cookie & " = " & Request.Cookies(cookie) & "<BR>" |
|
Else |
|
|
For Each klucz In Request.Cookies(cookie) |
|
|
|
Response.Write cookie Response.Write "(" & klucz & ")" Response.Write " = " Response.Write Request.Cookies(cookie)(klucz) Response.Write "<BR>" & VbCrLf |
|
|
Next |
|
End If |
Next %> </BODY> </HTML> |
Wynikiem wykonania powyższego skryptu będzie pojawienie się tekstu na stronie:
Produkt(NAZWA) = Telewizor Produkt(DATAZAMOWIENA) = 1/6/00 10:43:12 PM |
Jedynym nowym elementem w powyższym przykładzie jest linia:
If Not Request.Cookies(cookies).HasKeys Then |
Sprawdza ona czy "cookie" o nazwie cookies posiada większą ilość wartości niż 1. Operator Not w instrukcji If powoduje zapytanie o wartość FALSE wyrażenia Request.Cookies(cookies).HasKeys. |