ASP. Kompendium programisty [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Spis Treści SPIS TREŚCI........................................................................................................................................................ 1 ROZDZIAŁ 1. TWORZENIE DYNAMICZNYCH APLIKACJI INTERNETOWYCH............................. 6 CZYM BYŁA SIEĆ WWW ..................................................................................................................................... 6 Specyfikacja HTML 2 ..................................................................................................................................... 7 Specyfikacja HTML 3.2 .................................................................................................................................. 8 Specyfikacja HTML 4 ..................................................................................................................................... 8 ZAWARTOŚĆ STATYCZNA A ZAWARTOŚĆ DYNAMICZNA ...................................................................................... 8 TWORZENIE SKRYPTÓW PO STRONIE KLIENTA I PO STRONIE SERWERA............................................................... 10 Tworzenie skryptów po stronie klienta ......................................................................................................... 10 Tworzenie skryptów po stronie serwera ....................................................................................................... 14 SKŁADNIKI DYNAMICZNYCH ROZWIĄZAŃ INTERNETOWYCH ............................................................................. 17 Przejście przez stronę quizu ......................................................................................................................... 18 HTML ........................................................................................................................................................... 18 Składnik bazy danych ................................................................................................................................... 19 Komponenty serwera .................................................................................................................................... 22 Kod ASP (Active Server Page) ..................................................................................................................... 26 Współpraca z serwerem internetowym .................................................................................................... 28 NIE TYLKO IIS SYSTEMU NT ............................................................................................................................. 29 ROZDZIAŁ 2. SERWER IIS WIDZIANY Z PERSPEKTYWY TWÓRCY STRON ................................ 30 CZYM JEST IIS? ................................................................................................................................................. 30 OTRZYMYWANIE KOPII IIS ................................................................................................................................ 31 KONSOLA ZARZĄDZANIA MICROSOFTU ............................................................................................................. 31 WŁAŚCIWOŚCI USŁUG WWW............................................................................................................................ 33 Właściwości witryny WWW .......................................................................................................................... 34 Właściwości związane z wydajnością........................................................................................................... 36 Właściwości filtrów ISAPI............................................................................................................................ 37 Właściwości katalogu macierzystego ........................................................................................................... 37 Dokumenty.................................................................................................................................................... 38 Błędy klienta ................................................................................................................................................. 39 WITRYNY WWW W SERWERZE IIS ................................................................................................................... 40 DODAWANIE WITRYNY WWW .......................................................................................................................... 42 WŁAŚCIWOŚCI WITRYNY WWW ....................................................................................................................... 45 Wiele witryn pod jednym adresem IP........................................................................................................... 45 Zakładka właściwości witryny WWW........................................................................................................... 47 Właściwości katalogu macierzystego ........................................................................................................... 48 EKSPLORACJA WITRYNY .................................................................................................................................... 48 Katalogi wirtualne........................................................................................................................................ 49 Właściwości folderu i pliku .......................................................................................................................... 51 APLIKACJE ASP ................................................................................................................................................ 52 Zmienne trwałe i zakresowe ......................................................................................................................... 52 Zdarzenia...................................................................................................................................................... 53 Tworzenie aplikacji ASP .............................................................................................................................. 53

Spis Treści

2

Konfigurowanie aplikacji ASP ..................................................................................................................... 55 WITRYNY FTP................................................................................................................................................... 58 ROZDZIAŁ 3. NARZĘDZIA PRACY............................................................................................................. 60 PRZEGLĄD APLIKACJI DO TWORZENIA STRON .................................................................................................... 60 NOTATNIK ......................................................................................................................................................... 60 FRONTPAGE 2000.............................................................................................................................................. 62 Środowisko pracy ......................................................................................................................................... 62 Tworzenie sieci Web ..................................................................................................................................... 68 Przeglądanie strony...................................................................................................................................... 70 Dodawanie strony......................................................................................................................................... 71 Praca ze stroną............................................................................................................................................. 72 NETOBJECTS FUSION ......................................................................................................................................... 74 Środowisko pracy ......................................................................................................................................... 74 Tworzenie witryny WWW przy użyciu programu Fusion ............................................................................. 80 Praca ze stroną............................................................................................................................................. 80 NETOBJECTS SCRIPTBUILDER ........................................................................................................................... 81 Środowisko programowe .............................................................................................................................. 81 Praca z kodem w programie ScriptBuilder .................................................................................................. 87 Weryfikacja kodu w programie ScriptBuilder.............................................................................................. 92 MICROSOFT VISUAL INTERDEV 6.0................................................................................................................... 94 OSTATNIE SŁOWO O NARZĘDZIACH.................................................................................................................... 96 ROZDZIAŁ 4. PODSTAWY ASP .................................................................................................................... 97 KONSTRUKCJA KODU ASP................................................................................................................................. 97 Znacznik .................................................................................................................................. 97 .................................................................................................................... 98 ........................................................................................................................................ 99 < Script> Kod ........................................................................................................................... 100 HTML w kodzie .......................................................................................................................................... 101 SKRYPT W SKRYPCIE........................................................................................................................................ 103 Dyrektywa przetwarzania........................................................................................................................... 105 Pliki Include ............................................................................................................................................... 106 Po co ich używać .................................................................................................................................... 106 Włączanie pliku ...................................................................................................................................... 106 Plik Include — struktura i przykład ....................................................................................................... 107 Wywoływanie procedur ......................................................................................................................... 108 KOD ASP W UŻYCIU ........................................................................................................................................ 108 Komentarze, puste miejsca i wielkość liter ................................................................................................ 108 Zmienne ...................................................................................................................................................... 111 Typy danych................................................................................................................................................ 112 Zakres i trwałość ........................................................................................................................................ 113 Operatory ................................................................................................................................................... 114 Warunki ...................................................................................................................................................... 116 Pętle............................................................................................................................................................ 121 Konwersja zmiennych................................................................................................................................. 125 Funkcje daty i czasu ................................................................................................................................... 127 Zatwierdzanie obecności i typów danych ................................................................................................... 131 Techniki zatwierdzania danych .................................................................................................................. 133 Formatowanie liczb, dat i kwot pieniężnych .............................................................................................. 135 Operowanie ciągami .................................................................................................................................. 139 Liczby losowe ............................................................................................................................................. 145 Procedury ................................................................................................................................................... 146 ROZDZIAŁ 5. OBIEKT REQUEST.............................................................................................................. 148

3

ASP – Kompendium programisty

HIERARCHIA I MODELE OBIEKTÓW ASP .......................................................................................................... 148 Czym są hierarchie obiektów? ................................................................................................................... 148 Model obiektów ASP .................................................................................................................................. 149 ODBIERANIE INFORMACJI OD ODWIEDZAJĄCEGO ............................................................................................. 151 Zbiory obiektu Request ............................................................................................................................... 151 Zbiór Form.............................................................................................................................................. 151 Zbiór QueryString .................................................................................................................................. 154 Zbiór ServerVariables ............................................................................................................................ 157 Zbiór Cookies ......................................................................................................................................... 159 Zbiór ClientCertificate ........................................................................................................................... 160 WŁAŚCIWOŚĆ OBIEKTU REQUEST .................................................................................................................... 161 Właściwość TotalBytes ............................................................................................................................... 161 METODA OBIEKTU REQUEST ........................................................................................................................... 162 Metoda BinaryRead.................................................................................................................................... 162 OBIEKT REQUEST W DZIAŁANIU ...................................................................................................................... 163 Przykład certyfikatu klienta........................................................................................................................ 163 Procesor e-mail dla formularza ................................................................................................................. 168 Procesor bazy danych dla formularza........................................................................................................ 172 Witryna logowania ..................................................................................................................................... 174 ROZDZIAŁ 6. OBIEKT RESPONSE............................................................................................................ 180 WYSYŁANIE INFORMACJI DO GOŚCI ................................................................................................................. 180 ZBIÓR OBIEKTU RESPONSE .............................................................................................................................. 180 Zbiór cookie................................................................................................................................................ 181 WŁAŚCIWOŚCI OBIEKTU RESPONSE ................................................................................................................. 184 Właściwość Buffer ...................................................................................................................................... 184 Właściwość CacheControl ......................................................................................................................... 186 Właściwość Charset ................................................................................................................................... 186 Właściwość ContentType............................................................................................................................ 186 Właściwość Expires .................................................................................................................................... 187 Właściwość ExpiresAbsolute ...................................................................................................................... 188 Właściwość IsClientConnected .................................................................................................................. 190 Właściwość PICS........................................................................................................................................ 191 Właściwość Status ...................................................................................................................................... 192 METODY OBIEKTU RESPONSE .......................................................................................................................... 192 Metoda AddHeader .................................................................................................................................... 193 Metoda AppendToLog ................................................................................................................................ 193 Metoda BinaryWrite ................................................................................................................................... 193 Metoda Clear.............................................................................................................................................. 196 Metoda End ................................................................................................................................................ 196 Metoda Flush.............................................................................................................................................. 197 Metoda Redirect ......................................................................................................................................... 198 Metoda Write .............................................................................................................................................. 199 OBIEKT RESPONSE W DZIAŁANIU ..................................................................................................................... 199 Readresowanie i obiekt wyboru ................................................................................................................. 199 Pasek zaawansowania ................................................................................................................................ 203 Strona preferencji....................................................................................................................................... 207 ROZDZIAŁ 7. OBIEKT SERVER................................................................................................................. 212 WEJŚCIE NA SZCZYT ........................................................................................................................................ 212 WŁAŚCIWOŚĆ OBIEKTU SERVER ...................................................................................................................... 212 Właściwość ScriptTimeout ......................................................................................................................... 213 METODY OBIEKTU SERVER .............................................................................................................................. 214 Metoda CreateObject ................................................................................................................................. 215 Metoda HTMLEncode ................................................................................................................................ 218

Spis Treści

4

Metoda MapPath ........................................................................................................................................ 219 Metoda URLEncode ................................................................................................................................... 221 OBIEKT SERVER W DZIAŁANIU ........................................................................................................................ 222 Automatyzacja biura................................................................................................................................... 222 ROZDZIAŁ 8. OBIEKT SESSION, OBIEKT APPLICATION ORAZ PLIK GLOBAL.ASA............... 232 APLIKACJE ASP .............................................................................................................................................. 232 TWORZENIE APLIKACJI ASP ............................................................................................................................ 233 OBIEKT SESSION .............................................................................................................................................. 235 Zbiory obiektu Session................................................................................................................................ 235 Zbiór Contents ........................................................................................................................................ 235 Zbiór StaticObjects................................................................................................................................. 239 Właściwości obiektu Session ...................................................................................................................... 240 Właściwość CodePage............................................................................................................................ 241 Właściwość LCID .................................................................................................................................. 242 Właściwość SessionID ........................................................................................................................... 244 Właściwość TimeOut ............................................................................................................................. 244 Metoda obiektu Session .............................................................................................................................. 245 Metoda Abandon .................................................................................................................................... 245 OBIEKT APPLICATION ...................................................................................................................................... 246 Zbiory obiektu Application ......................................................................................................................... 246 Zbiór Contents ........................................................................................................................................ 246 Zbiór StaticObjects................................................................................................................................. 250 Metody obiektu Application........................................................................................................................ 251 Metoda Lock........................................................................................................................................... 251 Metoda Unlock ....................................................................................................................................... 253 PLIK GLOBAL.ASA............................................................................................................................................ 253 Zdarzenia pliku global.asa ......................................................................................................................... 255 Zdarzenie Application_OnStart.............................................................................................................. 255 Zdarzenie Application_OnEnd............................................................................................................... 259 Zdarzenie Session_OnStart .................................................................................................................... 259 Zdarzenie Session_OnEnd ..................................................................................................................... 261 Deklaracje obiektów w pliku global.asa................................................................................................. 263 APLIKACJE ASP W UŻYCIU .............................................................................................................................. 264 ROZDZIAŁ 9. OBIEKTY CDO DLA WINDOWS NT SERVER .............................................................. 266 UZUPEŁNIENIE STRONY ASP O FUNKCJĘ WYSYŁANIA WIADOMOŚCI E-MAIL ................................................... 266 OBIEKT NEWMAIL .......................................................................................................................................... 267 Właściwości obiektu NewMail.................................................................................................................... 268 Właściwość To ....................................................................................................................................... 268 Właściwość From ................................................................................................................................... 269 Właściwość Subject................................................................................................................................ 270 Właściwość Body ................................................................................................................................... 270 Właściwość CC ...................................................................................................................................... 273 Właściwość BCC.................................................................................................................................... 273 Właściwość Importance.......................................................................................................................... 274 Właściwości BodyFormat i MailFormat ................................................................................................ 275 Właściwości ContentBase i ContentLocation ........................................................................................ 278 Właściwość Value .................................................................................................................................. 279 Właściwość Version ............................................................................................................................... 280 Metody obiektu NewMail............................................................................................................................ 281 Metoda Send........................................................................................................................................... 281 Metoda AttachFile .................................................................................................................................. 282 Metoda AttachURL ................................................................................................................................ 284 Metoda SetLocaleID............................................................................................................................... 285

5

ASP – Kompendium programisty

OBIEKT NEWMAIL W DZIAŁANIU .................................................................................................................... 285 ROZDZIAŁ 10. SKŁADNIKI ASP ................................................................................................................ 287 OBIEKTY ZWIĘKSZAJĄCE MOŻLIWOŚCI STRON ASP......................................................................................... 287 SKŁADNIK BROWSER CAPABILITIES ................................................................................................................ 287 Modyfikacja pliku browser.ini.................................................................................................................... 295 SKŁADNIK AD ROTATOR ................................................................................................................................. 296 SKŁADNIK PAGE COUNTER.............................................................................................................................. 303 SKŁADNIK COUNTERS ..................................................................................................................................... 311 SKŁADNIK CONTENT LINKING ......................................................................................................................... 316 SKŁADNIK CONTENT ROTATOR ....................................................................................................................... 324 SKŁADNIK MYINFO ......................................................................................................................................... 328

Rozdział 1. Tworzenie dynamicznych aplikacji internetowych Czym była sieć WWW Przez minione lata Internet niesamowicie wpłynął na nasze życie. Światowa sieć jest teraz potężnym zlepkiem informacji. Obecnie kiedy chcemy poznać adres firmy lub nawet jej lokalizację, sprawdzamy to w Internecie. Chcesz wiedzieć jaka sztuka jest wystawiana w miejscowym teatrze? Sprawdź w Internecie. Musisz poznać ceny jakiegoś produktu? Zobacz w sieci WWW. Szukasz pracy w Des Moines? Znajdziesz ją na sieci. Ale sieć WWW nie była tak nasycona informacjami od samego początku. Podstawowym przeznaczeniem Internetu była wymiana informacji pomiędzy badaczami naukowymi. Stworzenie języka HTML (HyperText Markup Language) było podyktowane koniecznością znalezienia powszechnej formy prezentowania informacji na różnorodnych platformach i systemach operacyjnych. Komputery używane do przeglądania stron HTML miały zainstalowane programy klienckie oraz przeglądarki, które odczytywały i interpretowały kod HTML, a następnie przedstawiały jego interpretację osobie oglądającej stronę. Te podstawowe przeznaczenie pozostało siłą Internetu, choć drastycznie zmieniły się sposoby prezentowania informacji. Wczesna wersja strony WWW wyglądała podobnie jak ta pokazana na rysunku 1.1.

7

ASP – Kompendium programisty

Rysunek 1.1. Pierwotna wersja HTML Zauważ, że pierwsza wersja HTML zawierała jedynie podstawowe informacje, jak również miała możliwość odsyłania do innych dokumentów. Już wczesna wersja posiadała zdolność zignorowania tych znaczników, których nie potrafiła zrozumieć. Jest to w dalszym ciągu znacząca cecha HTML, z której twórcy stron korzystają przez cały czas. Ale w tej wersji z roku 1992 nie było możliwości prezentowania informacji graficznych, takich jak obrazy, tabele czy obiekty. Zauważ również, że nie było wtedy sposobu na uzyskanie informacji od osoby przeglądającej stronę WWW.

Specyfikacja HTML 2 Kolejna wersja HTML zawierała wspaniałe ulepszenia. Rysunek 1.2. pokazuje niektóre elementy, które mogła zawierać wersja 2 specyfikacji HTML.

Rysunek 1.2. Przykładowa strona stworzona przy wykorzystaniu HTML 2 Prawdopodobnie najważniejszymi nowymi składnikami HTML 2 były znaczniki tabeli, obrazu i formularza. Znacznik tablicy po raz pierwszy pozwolił na wyświetlenie informacji w postaci tabeli. Było to jednak jego pierwotne przeznaczenie. Szybko stał się spełnieniem marzeń tych twórców stron WWW, którzy potrzebowali lepszego rozmieszczenia elementów na stronie. Teraz twórcy stron często używają znaczników tabeli do precyzyjnego rozłożenia pozycji na stronie WWW. Znacznik obrazu pozwalał twórcom na dekorowanie swych stron. Mogli umieszczać na nich logo firmy, zdjęcia pracowników oraz zdjęcia okolicznościowe. Grafika również mogła być wykorzystywana do dekoracji układu strony. Dodatkowo używano małych, niewidocznych obrazków przy pomocy których rozmieszczano inne elementy strony WWW. Na przykład niektórzy twórcy stron używali pustych obrazków o określonym rozmiarze do zaznaczenia akapitu. Specyfikacja HTML 2 dodatkowo została wzbogacona w formularze. Przed użyciem formularzy kontakt z odwiedzającymi stronę był bardzo ograniczony. Dzięki formularzom i ich standardowym elementom możliwe stało się gromadzenie informacji o gościach pozwalających na udostępnianie im właściwej strony, gromadzenie informacji osobistych oraz dodawanie gości do listy dystrybucyjnej lub wielu innych aplikacji. Zawartość formularzy była udostępniana programom CGI (CGI — Common Gateway Interface) do przetwarzania w postaci strumienia bajtów. Programy CGI, zwykle pisane w PERL lub C, mogły dokonać analizy składniowej danych w strumieniu, przetwarzać je, aby później zwrócić wyjściowe informacje przeglądarce.

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

8

Specyfikacja HTML 3.2 Kolejną znaczącą wersją HTML wydaną przez W3C Consortium była wersja 3.2, która już w niewielkim stopniu różniła się od tego, czym HTML jest dzisiaj. Do istniejących znaczników dodano liczne parametry i unowocześnienia, jak również wprowadzono nowe znaczniki, z których najważniejszym był znacznik apletu. Znacznik apletu pozwalał twórcom na włączenie aplikacji Javy wprost do ich stron WWW. Takie dodatki jak aplety Javy mogły być pełnymi aplikacjami realizującymi różnorakie zadania. Mogłeś stworzyć przy ich użyciu wysuwane obrazki, które odsyłały gości do różnych miejsc, kiedy kliknęli jeden z nich. Mogłeś mieć aplet Javy prezentujący uaktualnione dane na temat cen produktów. Mogłeś napisać applet Javy będący programem do rysowania dla dzieci. Liczba aplikacji, dla których znacznik ten był wykorzystywany była wielka, co spowodowało znaczny rozrost sieci WWW.

Specyfikacja HTML 4 HTML 4 jest bieżącą wersją wydaną przez W3C Consortium. Znaczącymi dodatkami tej specyfikacji są znaczniki obiektu, skryptu oraz formularza stylów. Znacznik formularza stylów pozwala na tworzenie wspólnych stylów dla elementów strony WWW. Kiedy styl zostaje zdefiniowany, może zostać przeniesiony na inną stronę. Pozwala to na przykład na jednorazowe zdefiniowanie koloru, rozmiaru i czcionki nagłówka. Następnie ten styl może zostać zastosowany na wielu innych stronach. Jeśli konieczna jest zmiana stylu nagłówka, należy jej dokonać tylko w jednym miejscu, w definicji elementu, a zmiana ta zostanie przeniesiona na inne strony korzystające z tego znacznika. Znacznik skryptu pozwala na włączenie kodów zwanych skryptami po stronie klienta (client-side scripts). Oznacza to, że w HTML wbudowano kod, który jest uruchamiany przez przeglądarkę zainstalowaną na komputerze klienta. Przyjrzymy się skryptom po stronie klienta nieco dalej w tym rozdziale, podczas omawiania zalet i wad tego rodzaju tworzenia skryptów. Kolejnym znaczącym ulepszeniem w tej wersji jest włączenie do niej znacznika obiektu, który dostarcza mechanizmów pozwalających na umieszczenie multimediów i innych obiektów w granicach strony WWW. Na przykład znacznik obiektu może być wykorzystany podczas odwiedzania witryny grupy dyskusyjnej w celu stworzenia na twoim komputerze potokowego wejścia audio-wideo, jak również można go użyć przy przeglądaniu trójwymiarowego elementu zamieszczonego na stronie i możliwego do obejrzenia po zainstalowaniu odpowiedniego plug-inu w przeglądarce.

Zawartość statyczna a zawartość dynamiczna Wcześniej większość zawartości Internetu stanowiły składniki statyczne, to znaczy, że odwiedzając jakąś stronę WWW za każdym razem mogłeś spodziewać się dokładnie tej samej treści. Te same teksty, grafiki, formatowanie, po prostu wszystko. Aby zmienić zawartość strony twórca musiał ręcznie modyfikować tekst strony i ponownie umieszczać ją w Internecie. Wykorzystywanie tej techniki powodowało, że sieć WWW była nieco skostniała. Użytkownicy sieci mogli odwiedzić twoją stronę raz lub dwa, lecz jeśli jej treść nie zmieniała się, prawdopodobnie kolejne odwiedziny były wymuszone. W ostatnich latach twórcy stron zdali sobie sprawę z tego, że statyczna zawartość to trochę za mało. Coraz więcej firm zaczęło wystawiać zawartość dynamiczną przynajmniej w części swoich witryn WWW. Obecnie znalezienie dużej witryny, która nie zawiera jakiegoś składnika dynamicznego to wydarzenie naprawdę niezwykłe. Dynamiczna zawartość WWW to pojęcie odnoszące się do stron, których treść zmienia się przez cały czas. Na przykład strona pokazana na rysunku 1.3. ukazuje jedno z ustawień strony, kiedy aktualny dzień przypada na weekend, zaś kiedy aktualny dzień tygodnia to poniedziałek, wtorek, środa, czwartek lub piątek, wtedy strona wyświetli zawartość pokazaną na rysunku 1.4.

ASP – Kompendium programisty

9

Rysunek 1.3. Próbna strona o zawartości wyświetlanej w czasie weekendów

Rysunek 1.4. Ta sama próbna strona pokazująca zawartość wyświetlaną w tygodniu Jak widzisz zawartość strony z rysunku 1.4. jest dynamiczna. Jej treść może się zmieniać przez cały czas. Zmiana może następować po każdorazowym przeglądnięciu strony lub w losowych bądź stałych odstępach czasowych. Te zmiany to znacząca kwestia. Tworzenie takich dynamicznych aplikacji internetowych to główny temat tej książki. Kod wymagany podczas tworzenia zawartości dynamicznej może być zaimplementowany przez rozmaite mechanizmy. Kod poprzedniego przykładu był stworzony w VBScript na stronie ASP. Pokazany został poniżej.

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

10

Jest weekend idź do domu!

Rzuć surfing i do pracy!

Nie przejmuj się tym, jeśli nie potrafisz przeczytać tego kodu teraz; szczegóły poznamy w kolejnych rozdziałach książki. Jednak powyższy kod nie musiał być napisany wykorzystując ASP przy użyciu VBScript. Mógł być zaimplementowany przez składnik napisany w C++ lub przez biblioteki filtrujące wyszukujące strony z określonymi rozszerzeniami i przetwarzające je odpowiednio. Mógł być również napisany w JavaScript. W następnym podrozdziale zobaczysz, że kod może zostać napisany zarówno po stronie klienta, jak i po stronie serwera.

Tworzenie skryptów po stronie klienta i po stronie serwera Tworzenie skryptów po stronie klienta Tworzenie skryptów w tym kontekście to pojęcie odnoszące się do miejsca, w którym kod jest przetwarzany. Tworzenie skryptów po stronie klienta oznacza, że kod jest uruchamiany na komputerze klienta (bezpośrednio w przeglądarce). Kiedy odwiedzający chce przeglądnąć stronę, HTML i każdy inny kod strony jest pobierany przez przeglądarkę odwiedzającego. Następnie przeglądarka dokonuje analizy składniowej i realizuje każdy rozpoznany kod strony. Rezultaty tych czynności przeglądarka pokazuje odwiedzającemu stronę. Przykładem może być tutaj grafika pokazana na rysunku 1.5. o treści „Welcome to NetStats2000 — NetStats Live”.

Rysunek 1.5. Przykładowa grafika zrealizowana po stronie klienta. Teraz spójrz na tą samą stronę, kiedy kursor myszy znajduje się ponad wspomnianą grafiką, jak pokazano na rysunku 1.6. Zauważ, że teraz treść grafiki brzmi „Click here to contact us”. Jest to realizowane przez kod po

ASP – Kompendium programisty

11

stronie klienta. Przeglądarka wczytuje każdy kod i przetwarza go. W tym przykładzie kod napisany został w JavaScript i przedstawia się następująco:

Rysunek 1.6. Ta sama strona z kursorem myszy znajdującym się nad obrazkiem Następnie w elemencie obrazka mamy poniższy kod korzystający z poprzednich funkcji i zmiennych:

Zauważ, że kod jest otoczony znacznikami skryptu, które informują przeglądarkę o typie zastosowanego kodu. Jednak bardzo ważną okolicznością jest fakt, że nie wszystkie przeglądarki rozpoznają dany kod. Wobec tego co się stanie, kiedy przeglądarka, która nie rozpoznaje znacznika skryptu, próbuje dokonać analizy składniowej strony? Cały blok zostanie zignorowany, ponieważ nie rozpoznane znaczniki są pomijane. W tym przykładzie nie ma to znaczenia. Jeśli goście nie zobaczą naszej palety— grafiki pojawiającej się podczas przesuwania kursorem myszy nad obrazkiem — nie zmieni to rzeczywistej funkcjonalności strony. Spójrzmy jednak na kolejny przykład, w którym pominięcie bloku może nie być takie proste (Rysunek 1.7).

Rysunek 1.7. Przykładowy skrypt strony klienta używający pola zatwierdzenia W tym przykładowym skrypcie strony klienta korzystamy z kodu zatwierdzającego wejście użytkownika, zanim odwiedzający będzie mógł wystawić żądanie dostępu. Jeśli użytkownik zostawi to pole nie wypełnione, ujrzy wiadomość pokazaną na rysunku 1.8.

Rysunek 1.8. Wiadomość, która ukaże się tym odwiedzającym stronę, którzy nie wypełnią przedłożonego pola zatwierdzenia Gdy odwiedzający wpisze w pole wartość, jest ona zatwierdzana, a użytkownik zostaje odesłany do strony odpowiadającej tej wartości. Kod realizujący zatwierdzanie jest następujący:

Kod dla przycisku Submit Request:

Pamiętaj co się stanie, kiedy przeglądarka nie rozpozna znacznika skryptu lub języka użytego w skrypcie. Cały kod znajdujący się pomiędzy znacznikami skryptu zostanie zignorowany, tak więc strona stanie się bezużyteczna dla przeglądarek, które nie obsługują tych skryptów. Odwiedzający zobaczy stronę, ale po naciśnięciu przycisku Submit Request nic się nie stanie. Jest to ryzyko, które musisz rozważyć. Oczywiście tworzenie skryptów po stronie klienta ma swoje korzyści. Ponieważ przetwarzanie odbywa się po stronie klienta, twój serwer ma mniej pracy, mniejsza liczba przywołań redukuje ruch w sieci, a odwiedzający stronę nie musi czekać na dodatkowe wywołania twojej przeglądarki. Istnieje również pewne niebezpieczeństwo. Cały twój kod jest ujawniany gościom strony, jeśli więc zechcą oni poznać kod źródłowy strony przy pomocy menu opcji swojej przeglądarki, ujrzą każdy jego wiersz.

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

14

Tworzenie skryptów po stronie serwera Głównym tematem tej książki jest tworzenie skryptów po stronie serwera. Ponownie będziemy zajmować się miejscem uruchamiania kodu. Podczas pisania skryptów po stronie klienta kod uruchamiany jest przez przeglądarkę zainstalowaną na komputerze odwiedzającego stronę. Podczas tworzenia skryptów po stronie serwera kod, zanim zostanie wysłany do przeglądarki gościa, przetwarzany jest najpierw na serwerze. Użytkownicy uzyskują dostęp do strony WWW przez wpisanie jej nazwy w oknie przeglądarki lub klikając odpowiednie łącze. Serwer internetowy otrzymuje żądanie dostępu, a następnie wyszukuje stronę. Każdy kod strony serwera jest wtedy przetwarzany, a strona WWW może zostać zwrócona w czystej postaci HTML. Przeglądarka dokonuje analizuje składniowej podstawowego języka HTML i prezentuje jej rezultat odwiedzającemu. W ten sposób tworzenie skryptów po stronie serwera nie wymaga od przeglądarki specjalnych możliwości. Nie musi ona wiedzieć jak przeczytać dany rodzaj skryptu, ponieważ przetwarzanie odbywa się na serwerze, który zwraca jedynie podstawową postać HTML. Chroniony jest również twój kod. Często zdarza się, że nie chcesz udostępniać całemu światu twojego kodu źródłowego. Kod może być prawnie zastrzeżony dla twojej firmy lub może zawierać ukryte informacje systemowe, które nie powinny być dostępne dla osób postronnych. Tworzenie skryptów po stronie serwera rozwiązuje ten problem dzięki zwracaniu nie samego kodu, lecz jedynie rezultatu wykonania kodu. Jeśli więc użytkownik żąda dostępu do strony, która zawiera kod logowania do bazy danych, nie musisz mu pokazywać schematu działania twoich zapytań, nazw pól, techniki zatwierdzania, itd. Przy przetwarzaniu po stronie serwera, odwiedzający stronę poznaje jedynie wynik działania kodu. Spójrzmy na kilka przykładów wykorzystania skryptu strony serwera. Strona pokazana na rysunku 1.9. zawiera standardowy formularz logowania firmy. Zatwierdza ona wejście użytkownika na fikcyjną stronę WWW. Strona pozwala gościom na wprowadzenie nazwy użytkownika oraz hasła. Jeśli wprowadzą niewłaściwe hasło, ujrzą stronę, którą prezentuje rysunek 1.10.

Rysunek 1.9. Pierwszy widok strony logowania

ASP – Kompendium programisty

15

Rysunek 1.10. Przykładowa witryna logowania wyświetlająca wiadomość o próbie niewłaściwego wejścia Odwiedzający otrzymują wiadomość o tym, że wprowadzona informacja nie została rozpoznana. Jeśli wprowadzą wartość poprawną, wyświetli się strona pokazana na rysunku 1.11.

Rysunek 1.11. Tekst widoczny na stronie logowania po udanym wejściu. Strona logowania jest implementowana jako pojedyncza strona ASP. Poniżej pokazano jej kod. Również w tym przypadku nie musisz przejmować się tym, że nie rozumiesz jeszcze wszystkich jego szczegółów — po prostu przeczytaj go pobieżnie. Później omówimy tego typu kody dość obszernie.

Po pierwsze kod sprawdza, czy naciśnięty został przycisk Log On. Jeśli tak, kod zweryfikuje nazwę użytkownika i jego hasło z rekordami bazy danych. Jeśli taki zapis istnieje oznacza to, że użytkownik wprowadził właściwe wartości i ukaże się odpowiednia wiadomość. Gdyby rekord nie został odnaleziony, wyświetlona zostałaby inna wiadomość mówiąca o niepoprawnym wejściu. Ostatnia wiadomość zawiera treść, jaką pierwotnie zawierała strona. Pomyśl o tym, co by się stało, gdybyś próbował to zaimplementować po stronie klienta. Po pierwsze mogłoby to działać jedynie pod ostatnimi wersjami Internet Explorer, ponieważ kod został zapisany w VBScript. Kolejnym problemem mógłby być fakt ujawnienia hasła bazy danych w kodzie źródłowym podczas wysyłania go do przeglądarki. Przy korzystaniu ze skryptu po stronie serwera nie mamy takich zmartwień. Kod zostanie przetworzony przez serwer i żaden z bloków kodu nie będzie widoczny dla odwiedzających; dodatkowo nie musimy martwić się o to, z jakiej przeglądarki oni korzystają, ponieważ przeglądarka otrzymuje jedynie wynik w postaci HTML. Kolejną dużą zaletą tworzenia skryptów po stronie serwera jest możliwość korzystania przez serwer ze składników, które mogą być nieosiągalne na komputerze klienta. Przykładowo załóżmy, że chcę na mojej stronie WWW stworzyć kalkulator obliczający kwotę spłaty pożyczki. Mógłby on wyglądać tak, jak to pokazuje rysunek 1.12.

17

ASP – Kompendium programisty

Rysunek 1.12. Przykładowa strona kalkulatora obliczającego kwotę spłaty pożyczki Odwiedzający stronę wpisywaliby potrzebne do obliczeń dane. Po naciśnięciu przycisku Calculate kodowaliby obliczenie kwoty spłaty na podstawie wprowadzonych parametrów. Jak widzieliśmy, istnieje wiele możliwości wyboru miejsca ulokowania tego kodu oraz sposobu jego implementacji. Teraz już wiesz, że kod jest lepiej chroniony przed nielegalnym skopiowaniem przez innego twórcę stron, jeśli piszesz skrypty po stronie serwera. Wiesz, że nie musisz martwić się o to, czy przeglądarka będzie w stanie właściwie zinterpretować napisany przez ciebie kod. Ale ponadto jeszcze trzecia korzyść płynie z tej formy tworzenia skryptów. Jeśli kiedykolwiek próbowałeś tworzyć od zera kalkulator obliczający kwotę spłaty pożyczki to wiesz, że to żmudna i narażona na wiele błędów praca. Dlaczego nie skorzystać ze składników (komponentów) znajdujących się na twoim serwerze, które wykonują obliczenia dla ciebie? Na przykład Microsoft Excel potrafi wykonywać wiele obliczeń finansowych. Możesz wykorzystać te komponenty w skrypcie po stronie serwera i uniknąć w ten sposób powielania kodu, który już posiadasz. Tak więc tworząc skrypty po stronie serwera możesz wykorzystać funkcje składników serwera na potrzeby aplikacji nie martwiąc się o to, czy odwiedzający stronę posiadają odpowiednie składniki na swoich komputerach.

Składniki dynamicznych rozwiązań internetowych Do tej pory zastanawialiśmy się co decyduje o tym, że strona WWW jest statyczna lub dynamiczna. Przyjrzeliśmy się różnym sposobom tworzenia stron dynamicznych, jak również ich wadom i zaletom. W tym podrozdziale zwrócimy uwagę na różnorodne składniki tworzące dynamiczne rozwiązania i sposoby ich współdziałania. Rozwiązanie dynamiczne może zawierać rozmaite składniki. Po pierwsze, HTML. Nawet najbardziej dynamiczna strona posiada jakiś statyczny składnik HTML wiążący ze sobą elementy dynamiczne. Często dynamiczna strona lub witryna zawiera bazę danych, której treść jest również dynamiczna. Bardziej zaawansowane rozwiązania łączą w sobie wszystkie składniki, które znajdują się na serwerze. Niejednokrotnie elementy te zawierają przepisy firmowe i pośredniczą między bazą danych a częściami dynamicznymi strony WWW. Mogą posiadać również jakiś rodzaj kodu, który wstawia w stronę treść dynamiczną, jak to jest w przypadku kodu ASP. Zwykle też rozwiązania dynamiczne będą wykorzystywały jakiś serwer WWW, na przykład internetowy serwer informacyjny, w celu odebrania żądania od przeglądarki, przetworzenia kodu na stronie i zwrócenia rezultatu.

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

18

Przejście przez stronę quizu Aby zademonstrować jak funkcjonuje każdy ze składników rozwiązania dynamicznego, na kilku kolejnych stronach zaprezentowano przykładowy quiz. Używa on języka HTML dla statycznych elementów strony. Korzysta z bazy danych w celu zapamiętywania pytań i odpowiedzi. Składnik Visual Basic realizuje wezwania bazy danych pozwalające na wyszukiwanie pytań i sprawdzanie poprawności odpowiedzi. Strona quizu implementowana jest jako strona ASP i zawiera kod dynamicznego wyświetlania w oparciu o aktualne pytania; znajduje się ona na internetowym serwerze informacyjnym, który przetwarza kod i zwraca jego wynik przeglądarce. Quiz wykonany jest jako pojedyncza strona WWW. Kiedy użytkownicy odwiedzą ją po raz pierwszy, ujrzą widok przedstawiony na rysunku 1.13. Kiedy rozpoczną quiz, zobaczą pytanie pierwsze. Wybiorą odpowiedź, którą uważają za prawidłową i nacisną przycisk Check Answer. Wtedy ukaże się strona pokazana na rysunku 1.14. Proces ten powtarza się dopóki użytkownicy nie odpowiedzą na ostatnie pytanie quizu, po którym ukaże się im strona przedstawiona na rysunku 1.15. Rysunek 1.13. Pierwsza strona quizu Rysunek 1.14. Drugie pytanie quizu Rysunek 1.15. Ostatnia strona quizu Zauważ, że po zakończeniu quizu odwiedzający stronę nie mają żadnych dodatkowych pytań ani nie widać już przycisku odpowiedzi na pytanie. Jak dowiesz się z dalszego omówienia, kod ASP steruje tym wyjściem na stronie.

HTML W tym dynamicznym środowisku internetowym, HTML jest połączeniem dowolnego statycznego składnika pierwotnego żądania oraz wyjścia kodu uruchamianego na serwerze. Kiedy więc odwiedzający stronę poproszą o pierwsze pytanie quizu, otrzymają w odpowiedzi sam HTML. Przykładowo, chociaż pytania quizu są elementem dynamicznym, opartym na aktualnym żądaniu pytania, wyjściowym elementem jest następujący kod HTML:

With this type of scripting, the code runs in the browser.

Lista rozwijana obiektu sterującego wyborem zawiera możliwe odpowiedzi na zadane pytania, a jeśli odwiedzający zdecyduje się na obejrzenie kodu źródłowego strony, może przykładowo zobaczyć:

Server-Side Client-Side

Faktycznie z punktu widzenia odwiedzającego, ta pojedyncza witryna zdaje się być czterema osobnymi stronami: po jednej na każde pytanie plus jedna końcowa. HTML w tym przykładzie obejmuje też formularz, który jest zgrupowaniem elementów HTML takich jak pola tekstowe (również niesformatowane, zwane Textarea), obiekty sterujące wyborem, przyciski opcji oraz pola sprawdzające. W naszym przykładzie formularz jest pojedynczym obiektem sterującym wyborem, który zawiera zbiór możliwych odpowiedzi na pytania. Ale formularz posiada również wiele innych obiektów sterujących, które zawierają ukryte wartości. Elementy ukryte niosą w sobie wartości, które chcesz przedłożyć wraz z

ASP – Kompendium programisty

19

formularzem, ale nie chcesz, aby były one widoczne dla odwiedzających stronę. W kolejnej stronie przykładu użyte zostały trzy ukryte elementy.



Pierwszy ukryty element zawiera numer bieżącego pytania. Potrzebujemy tej wartości w celu sprawdzenia, czy odwiedzający wybrał właściwą odpowiedź na to pytanie. Element ukryty Question zapamiętuje liczbę pytań, na które odpowiedział gość. Wartość NumberCorrect informuje o liczbie poprawnych odpowiedzi. Te trzy ukryte wartości oraz wartość obiektu wyboru, które zawierają odpowiedź użytkownika na dane pytanie, są przedkładane wraz z formularzem po naciśnięciu przycisku Check Answer. Oznacza to, że przeglądarka wysyła te pola w postaci strumienia bajtów pod adres określony w znaczniku formularza:

Tak więc wartości są wysyłane z powrotem do tej samej strony, która wcześniej stworzyła omawianą stronę — oto w jaki sposób uzyskujemy wiele stron z jednej. Za każdym razem kiedy odwiedzający odpowiadają na pytanie, numer pytania wraz z odpowiedzią i dwoma innymi wartościami jest wysyłany z powrotem do tej samej strony w celu przetworzenia. Jeszcze jedna rzecz jest przekazywana wraz ze stroną podczas jej przedkładania. Jest to nazwa naciśniętego przycisku:

Często będziesz spotykał się z tym kodem w dalszych częściach książki oraz sam będziesz używał go przy tworzeniu twoich własnych kodów. Wykrywanie naciśnięcia tego lub jakiegokolwiek innego przycisku służy określeniu działań, jakie należy podjąć. Kiedy strona jest przetwarzana, na stronie znajduje się czysty HTML tuż obok jej kodu. Na przykład, na nieprzetworzonej stronie obiekt sterujący wyborem, który został opisany wcześniej, wygląda następująco:

A HTML z kodem strony nieprzetworzonej dla elementów ukrytych przedstawia się tak:



W dalszej części tego rozdziału przyjrzymy się jak kod ASP współpracuje z HTML w celu realizacji dynamicznego wyświetlania zawartości.

Składnik bazy danych Wiele rozwiązań internetowych i intranetowych, które stworzysz, będzie zawierało w sobie jakiś rodzaj bazy danych. Kiedy logujesz użytkowników twojej witryny, będziesz potrzebował tabeli użytkowników, która będzie wykorzystywana podczas zatwierdzania ich wejść. Jeśli posiadasz firmowy katalog online, prawdopodobnie będzie on składał się z tabel zawierających informacje o produktach: ich nazwy, opis, dostępność, ceny, zalety itd. Jeśli na twojej stronie znajdują się informacje o aktualnych warunkach

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

20

atmosferycznych w twoim miejscu zamieszkania, dane do wyszukiwania zapewne przechowywane są w bazie danych. Tak więc baza danych dynamicznej aplikacji internetowej często zawiera kod źródłowy dla dynamicznej zawartości. W naszym przykładowym projekcie quizu żądania dla bazy danych pochodzą od strony ASP. Żądanie przechodzi przez komponent serwera, który wystosowuje zapytania do bazy danych. Baza danych zwraca żądanie do komponentu serwera, który następnie przesyła dane z powrotem do naszej strony ASP. Jak się dowiesz dokładniej z rozdziału 13., kod żądania dostępu do danych bazy, zarówno na stronie ASP jak i w składniku serwera, musi znać położenie bazy danych. Aby to osiągnąć, można skorzystać z Otwartego łącza baz danych (ODBC — Open Database Connectivity). Poprzez Administratora źródeł danych ODBC (rysunek 1.16.) stworzymy Nazwę źródła danych (DSN — Data Source Name). Klikając przycisk Dodaj (Add) możemy skonfigurować połączenie z każdą osiągalną bazą danych, dla której mamy sterownik ODBC.

Rysunek 1.16. Administrator źródeł danych ODBC W tej przykładowej witrynie łączymy się z bazą danych SQL Server 6.5 zwaną ASPBook. Stworzona zostaje nazwa DSN w celu zapewnienia komunikacji pomiędzy SQL Server a stroną ASP. Kiedy to połączenie jest tworzone po raz pierwszy, zapamiętywany jest typ i nazwa bazy danych oraz adres IP serwera. Niektóre z tych elementów widać na rysunku 1.17.

21

ASP – Kompendium programisty

Rysunek 1.17. Konfiguracja nazwy DSN ODBC. Dane w bazie naszego przykładu z quizem zawierają tekst pytania, prawidłową odpowiedź na nie oraz wszystkie inne możliwe odpowiedzi, które zostaną wyszczególnione w obiekcie wyboru strony WWW. Używa się dwóch tabeli dostarczających potrzebnych danych. Pierwsza z nich zwana jest C1Questions; zawiera ona dane samego pytania. Nazwy pól, typów i ich zastosowania pokazano w tabeli 1.1. Tabela 1.1. Pola C1Questions Nazwa pola Typ pola Przeznaczenie QuestionID int Klucz główny Question varchar Tekst pytania Answer varchar Tekst poprawnej odpowiedzi QuestionID jest kluczem podstawowym dla tabeli. Oznacza to, że zawiera wartość, która jest unikalna dla tego pola. Jeśli więc któryś rekord posiada pole QuestionID o wartości 45, nie może jej mieć żaden inny rekord. Ta niepowtarzalność daje nam możliwość odczytywania właściwych odpowiedzi w kodzie. Typ danych to int, czyli wartość pola musi być liczbą całkowitą. Pole Question zawiera treść samego pytania. Ta dana jest wyświetlana na stronie WWW jako pytanie. Typ danych w tym wypadku to varchar, co znaczy, że w polu tym mogą znaleźć się litery wraz z cyframi. Długość pola może wynosić od 0 do 255 znaków. Pole Answer zawiera prawidłową odpowiedź na pytanie. To pole tekstowe używane jest do sprawdzania poprawności odpowiedzi podawanej przez biorących udział w quizie. Pole może zawierać od 0 do 100 znaków. Druga tabela, z której korzysta nasza przykładowa strona z quizem, zawiera wszystkie możliwe odpowiedzi na zadane pytania. Nazywa się C1Answers, a jej pola opisuje tabela 1.2. Tabela 1.2. Pola C1Answers Nazwa pola Typ pola Przeznaczenie AnswerID int Klucz główny i kolumna tożsamości QuestionID int Klucz obcy Answer varchar Tekst poprawnej odpowiedzi Dane w tabeli 1.2. są wykorzystywane do wypełnienia obiektu sterującego wyborem na stronie WWW. Do każdego pytania można przyporządkować jedną lub kilka odpowiedzi znajdujących się w tabeli. W kodzie prosimy tabelę o znalezienie odpowiedzi przyporządkowanych do aktualnego pytania, a następnie wyświetlamy je w obiekcie wyboru.

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

22

Pole AnswerID jest kluczem głównym tabeli. Jak wspomniano wcześniej klucz główny jednoznacznie identyfikuje każdy rekord tabeli. Pole jest również określane pojęciem kolumny tożsamości. To znaczy, że podczas dodawania do tabeli nowego rekordu możesz zostawić to pole puste, a SQL Server wypełni je automatycznie niepowtarzalną wartością. Jak się dowiemy z rozdziału 13., tworząc pola takie jak te w SQL Server, możesz określić numer początkowy i sposób inkrementacji tego numeru dla kolejnych rekordów. Pole QuestionID używane jest jako klucz obcy tabeli, to znaczy będzie wykorzystywany do połączenia pomiędzy tabelami C1Questions i C1Answers. Kiedy wypełniamy obiekt wyboru możliwymi odpowiedziami, nie chcemy widzieć odpowiedzi na inne pytania, interesują nas jedynie dostępne odpowiedzi na bieżące pytanie. To pole umożliwia taką filtrację. Kiedy odpowiedź jest wprowadzana do tabeli, musi zostać również wprowadzona wartość pola QuestionID. To ostatnie pole odnosi się do właściwego pytania związanego z tą odpowiedzią. Ostatnie pole tej tabeli to pole Answer, które zawiera samą treść odpowiedzi. Ta dana trafia do obiektu sterującego wyborem. Jeden z rekordów tabeli C1Questions pokazuje tabela 1.3. Przykładowy rekord C1Answers prezentuje tabela 1.4. Tabela 1.3. Przykładowy rekord tabeli C1Questions Nazwa pola Wartość QuestionID 1 Question Przy tym sposobie pisania skryptów kod uruchamiany jest w przeglądarce. Answer Po stronie klienta Tabela 1.4. Przykładowy rekord tabeli C1Answers Nazwa pola Wartość AnswerID 1 QuestionID 1 Answer Po stronie serwera

Komponenty serwera Nie wszystkie twoje rozwiązania internetowe i intranetowe potrzebują komponentów serwera. Tak naprawdę na samym początku możesz nie używać ich wcale. Ale z upływem czasu zorientujesz się, że niektórych rozwiązań nie uda ci się zrealizować od ręki stosując jedynie technologię ASP; być może stwierdzisz, że kod ASP staje się zbyt skomplikowany i należy podzielić go na obiekty; lub może rozdzielisz te różnorodne zadania pomiędzy programistów klasy podstawowej a tych bardziej zaawansowanych. Wykorzystanie czy utworzenie komponentu serwera często zaspokaja wiele wymagań. Komponenty serwera są modułami kodowymi, do których uzyskujesz dostęp poprzez twój kod ASP lub z innych środowisk programowych w celu realizacji pewnych zadań związanych z programowaniem. Niektóre z tych składników wbudowane są w twój system. Na przykład IIS (Internet Information Server) jest dostarczany wraz z CDO (Collaborative Data Objects) ułatwiającymi wysyłanie poczty elektronicznej poprzez twój kod, co zostanie omówione w rozdziale 9. Kolejny składnik dostarczany wraz z IIS to Browser Capabilities, który to komponent używany jest do określania typu przeglądarki i innych informacji dotyczących gości strony (więcej informacji znajdziesz w rozdziale 10). Inne składniki można zakupić lub pobrać ze stron sprzedawców. Te produkty są zazwyczaj bardziej wyspecjalizowane w swoich zadaniach. Jeśli na przykład wystąpi potrzeba stworzenia kodu grafiki ukazującej diagram kołowy, znajdziesz odpowiednie ku temu składniki. Często możesz oszczędzić sobie mnóstwa czasu i pieniędzy dzięki zakupieniu składnika wspierającego programowanie. Inną możliwością jest stworzenie własnych składników. Można w ten sposób zaspokoić różnorodne potrzeby, w tym również wydajność. Gdy tworzysz nowy składnik zaimplementowany w postaci kompilowanego kodu, który różni się od kodu skryptu ASP tym, że musisz go przekompilować za każdym razem, kiedy go używasz. Innym ważnym powodem tworzenia składników jest oddzielenie od siebie części strony poświęconej sprawom firmowym od interfejsu twoich aplikacji. Załóżmy, że musisz stworzyć witrynę, która dodawałaby informacje o nowych pracownikach do bazy danych. Możesz tego dokonać na wiele różnych sposobów. Możesz stworzyć

23

ASP – Kompendium programisty

aplikację dostępu dla działu zasobów ludzkich twojej firmy, przez którą będzie się wprowadzać zapisy do bazy danych. Możesz również użyć w tym celu aplikacji ASP. Baza danych prawdopodobnie jest skonfigurowana w ten sposób, że pewne pola wymagają wypełnienia, inne muszą być określonego typu i zasięgu. Te zasady, zasady firmowe, mogą być modyfikowane o wiele łatwiej i dokładniej, jeśli są umieszczone osobno. Komponent serwera zazwyczaj jest implementowany w ten sposób. Dodatkowym powodem tworzenia komponentów serwera jest pozbawienie niedoświadczonych programistów dostępu do pewnych złożonych bloków kodu. Możesz na przykład stworzyć procedurę obliczającą pewną przewidywaną wartość na podstawie zbioru parametrów i kalkulacji. Ten kod mógłby być umieszczony we wszystkich miejscach, które z niego korzystają. Ale programista, który nie jest z nim odpowiednio zaznajomiony mógłby korzystać z niego w niewłaściwy sposób. Jeśli stworzysz składnik serwera, umożliwisz swoim programistom wykonanie obliczeń dzięki jednemu połączeniu. W rozdziale 10. omówimy szczegółowo komponenty serwera, tutaj natomiast ograniczymy się jedynie do ich wprowadzenia. Na potrzeby strony z quizem, stworzony został komponent przez kompilację ActiveX DLL w Visual Basicu. Ten składnik realizuje interfejs między bazą danych a naszym kodem podstawowym, ASP. Tworzy się go poprzez wybranie projektu ActiveX DLL w oknie Visual Basic, co pokazano na rysunku 1.18.

Rysunek 1.18. Tworzenie ActiveX DLL w Visual Basic Kiedy zaznaczymy ikonę ActiveX DLL, konfigurujemy szablon do tworzenia składnika serwera biblioteki DLL. Szczególne znaczenie ma tutaj nazwa projektu, ponieważ będzie ona używana w naszym kodzie ASP w celu wywoływania procedur komponentu serwera. Robi się to przez wybranie Właściwości projektu (Project Properties) z menu Projekt (Project). Ukaże się okno dialogowe pokazane na rysunku 1.19, gdzie wpiszesz nazwę projektu w pole tekstowe Nazwa projektu (Project Name).

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

24

Rysunek 1.19. Nadawanie nazwy składnikowi serwera Wewnątrz ActiveX DLL znajdują się klasy, w których procedury faktycznie działają. Ilość klas nie jest ograniczona. Klasy tworzy się zazwyczaj przez umieszczenie razem tych procedur, które mają wspólne przeznaczenie. Na przykład komponent serwera naszej strony z quizem posiada jedną klasę. Klasa ta zawiera procedury wyszukiwania pytania i sprawdzania odpowiedzi. Lecz jeśli rozszerzymy tą aplikację, będziemy mogli dodać strony pozwalające użytkownikom na uzupełnianie quizu o własne pytania. Procedury realizujące takie zadania znajdowałyby się prawdopodobnie w osobnej klasie. Być może chciałbyś dodać kolejną klasę, która pozwalałaby użytkownikom logować się w aplikacji quizu w celu śledzenia jej rozwoju. Procedury realizujące tą funkcję znajdowałyby się zapewne w osobnej klasie. Podobnie jak w wypadku projektu, klasa również posiada swą nazwę. Nazwa klasy jest ważna, ponieważ będzie wykorzystywana przez nasz kod ASP do wywoływania procedur znajdujących się na serwerze. Używając Visual Basic nazwę klasy określić możesz we właściwościach klasy pokazanych na rysunku 1.20.

Rysunek 1.20. Nadawanie nazwy klasie

ASP – Kompendium programisty

25

Teraz, kiedy zdefiniowaliśmy już nasz komponent oraz klasę, jesteśmy gotowi do stworzenia procedury bądź metody wewnątrz klasy. Metody są blokami kodu napisanymi po to, aby realizować pewne zadania programowe. Są one wywoływane z kodu ASP, co zostanie omówione później. Klasa o nazwie Quiz, którą stworzyliśmy poprzednio posiada trzy metody. Pierwsza z nich wyszukuje tekst pytania w oparciu o pole QuestionID przekazywane przez procedurę. Kod procedury jest następujący: Public Function GetQuestion(QuestionID) Dim RSQuestion As ADODB.Recordset Set RSQuestion = Conn.Execute("select Question from C1Questions " _ & "where QuestionID = " & QuestionID) If RSQuestion.EOF Then GetQuestion = "NA" Else GetQuestion = RSQuestion("Question") End If End Function

Zauważ, że metoda ta nosi nazwę GetQuestion. Tej nazwy będziemy używać w kodzie ASP do wywoływania procedury. Kod tej funkcji łączy się z bazą danych i wyszukuje w niej tekst pytania w oparciu o pole QuestionID. Jeśli pole to nie jest właściwe, zwracany jest tekst NA; w przeciwnym wypadku zwracany jest tekst pytania. Kolejna procedura zwraca tekst możliwych odpowiedzi do wypełnienia obiektu wyboru w formularzu HTML. Kod tej procedury: Public Function GetAnswer(QuestionID) Dim RSAnswers As ADODB.Recordset Dim TempList As String Set RSAnswers = Conn.Execute("select Answer from C1Answers " _ & "where QuestionID = " & QuestionID) Do Until RSAnswers.EOF TempList = TempList & "" _ & RSAnswers("Answer") & "" RSAnswers.MoveNext Loop GetAnswer = TempList End Function

Ta metoda nosi nazwę GetAnswer. Kiedy jest wywoływana, przekazywane zostaje pole QuestionID. W bazie danych wyszukiwane są wszystkie możliwe odpowiedzi na dane pytanie. Następnie kod przechodzi kolejno lub w pętli przez każdą z opcjonalnych odpowiedzi znajdujących się w obiekcie sterującym wyborem, budując odpowiedni tekst HTML. Formatem zwracanym przez metodę jest czysty HTML. Ostatnią metodą klasy Quiz serwera o nazwie SampleServer jest procedura CheckAnswer. Sprawdza ona poprawność udzielonej odpowiedzi. Kod procedury: Public Function CheckAnswer(QuestionID, AnswerText) Dim RSAnswer As ADODB.Recordset Set RSAnswer = Conn.Execute("select Answer from C1Questions " _ & "where QuestionID = " & QuestionID) If RSAnswer("Answer") = AnswerText Then CheckAnswer = 1 Else CheckAnswer = 0

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

26

End If End Function

Procedura CheckAnswer korzysta z dwóch wartości: pola QuestionID oraz Answer w celu sprawdzenia poprawności odpowiedzi. Kod łączy się z bazą danych przeszukując ją w celu odnalezienia poprawnej odpowiedzi na konkretne pytanie. Następnie ta odpowiedź jest porównywana z odpowiedzią przekazywaną przez procedurę. Jeśli obydwie są takie same, procedura zwraca wartość 1, jeśli tak nie jest — wartością wyjściową jest 0. Te wartości oraz inne zwracane przez procedury będą wykorzystane przez kod ASP, co omówiono dalej. Klasa, którą tworzymy w Visual Basic, posiada miejsce pozwalające nam na określenie aplikacji, którą chcemy uruchomić, kiedy po raz pierwszy klasa jest wywoływana, innymi słowy kiedy tworzona jest jej kopia. To miejsce nazywane określane jest mianem Inicjacji zdarzenia i zawiera następujący kod: Private Sub Class_Initialize() Conn.Open "ASPBook", "sa", "yourpassword" End Sub

Ten kod zapewnia nam połączenie z bazą danych. Pamiętaj o tym, że musieliśmy skonfigurować nazwę DSN, jak to omawialiśmy w podrozdziale poświęconym bazie danych. Jedna z linii powyższego kodu korzysta z nazwy DSN, dzięki której możliwe jest połączenie z bazą danych. Inne procedury tej klasy używają tego połączenia podczas wyszukiwania danych.

Kod ASP (Active Server Page) Do tej pory przyglądaliśmy się czystemu kodowi HTML wysyłanemu do przeglądarki, jak również jego statycznemu wykorzystywaniu na naszej dynamicznej stronie. Przyjrzeliśmy się bazie danych zawierającej pytania i odpowiedzi quizu, jak również składnikom stworzonym w Visual Basic, używanym podczas łączenia z bazą. Teraz zwrócimy uwagę na kod ASP. Kod ASP jest odczytywany i przetwarzany przez serwer IIS, kiedy nasi goście odwiedzają stronę. Ten kod kompletuje wywołania potrzebne do stworzenia odpowiedniego wyjścia dla przeglądarki. W naszym przykładzie quizu kod musi wyszukiwać pytania i odpowiedzi. Musi również obserwować aktualne pytanie oraz liczbę poprawnych odpowiedzi oraz zadanych pytań. Kod powinien też formatować stronę w ten sposób, aby pole odpowiedzi i przycisk nie ukazywały się po zakończeniu quizu. Szczegółowo omówimy układ tego kodu w rozdziale 4., a na razie przyjrzymy się mu tylko pobieżnie. Na początku strony ASP mamy następujący kod:

Pierwsza linia kodu informuje kompilator o rodzaju języka użytego podczas tworzenia skryptu, w tym przypadku jest to VBScript. Następnie tworzymy kopię klasy na serwerze, co opisane zostało w poprzednim podrozdziale. Innymi słowy łączymy się ze składnikiem serwera, ponieważ chcemy wykorzystać procedury znajdujące się na nim: set objQuiz = server.CreateObject("SampleServer.Quiz")

Zauważ, że kiedy stworzyliśmy procedurę, użyliśmy nazw projektu i klasy — SampleServer.Quiz. Przypomnij sobie podrozdział dotyczący HTML, gdzie omawialiśmy sposób określania działań, które należy podjąć przy użyciu przycisku Submit Request. To samo realizuje poniższy kod: if isempty(Request.Form("Calculate")) then

Oznacza to, że jeśli odwiedzający nie nacisnął przycisku Calculate, to musiał wejść na stronę. Jeśli wystąpi taki przypadek, będziemy musieli skonfigurować stronę pierwszego pytania: CurrentQuestion = 1 QuestionsTaken = 0 NumberCorrect = 0

Jeśli przycisk Calculate jest naciśnięty, wtedy odwiedzającym przedstawiane są pytania, na które należy odpowiedzieć: Else

Następnie kod wywołuje składnik sprawdzający, czy nasi goście wpisali poprawną odpowiedź. Jeśli tak, musimy wyświetlić potwierdzenie poprawności: if objQuiz.CheckAnswer(Request.Form("CurrentQuestion"), _ Request.Form("Answer")) = 1 then NumberCorrect = Request.Form("NumberCorrect") + 1

W przeciwnym razie, aktualna liczba (NumberCorrect) oznacza ilość udzielonych do tej pory poprawnych odpowiedzi: else NumberCorrect = Request. Form("NumberCorrect")

Teraz musimy wyszukać tekst kolejnego pytania poprzez wywołanie procedury GetQuestion ze składnika serwera: QuestionText = obj.Quiz.GetQuestion(CurrentQuestion)

Rozdział 1 – Tworzenie dynamicznych aplikacji internetowych

28

Jeśli pytanie nie zostało znalezione, procedura zwraca wartość NA, jak to określiliśmy w poprzednim podrozdziale. if QuestionText = "NA" then

Oznacza to, że powinniśmy przedstawić odwiedzającym wiadomość informującą o zakończeniu quizu: TheMessage = "Quiz: Complete"

W innym razie wyszukaliśmy odpowiednie pytanie, a odpowiedzi na nie muszą zostać znalezione przez procedurę GetAnswer: else TheMessage = "Quiz: In Progress" AnswerText = objQuiz.GetAnswer(CurrentQuestion)

end if

Po całym HTML rozsiane są dodatkowe linie skryptu, które wstawiają zmienne stworzone wcześniej. Na przykład tekst pytania napisany w HTML przedstawia się następująco:



Odpowiedzi dla obiektu sterującego wyborem są napisane w następującej linii kodu:

A rejestr punktacji dla odwiedzającego jest napisany w HTML w następujący sposób:


Score out of

Tak więc ASP realizuje naprawdę ważne zadania! Współpraca z serwerem internetowym Wszystkie poprzednie kody ściśle współpracują z serwerem internetowym. Serwer czeka na żądania dostępu od przeglądarki. Serwer wyszukuje żądaną stronę. Zależnie od typu strony, serwer internetowy sprawdzi również kod ASP. Jeśli taki kod znajduje się na stronie, serwer go przetworzy i połączy się z każdym składnikiem, którego kod ASP potrzebuje. Kiedy przetwarzanie zostaje zakończone, serwer internetowy wyśle HTML do przeglądarki. W naszym przykładzie korzystaliśmy z internetowego serwera informacyjnego (IIS) Microsoftu w systemie operacyjnym Windows NT. Kiedy ktoś w Internecie lub naszym Intranecie żąda dostępu do pliku quiz.asp, serwer IIS wyszukuje tą stronę. IIS zauważa, że strona ma rozszerzenie .asp. W ten sposób jest informowany o tym, że dana strona jest wykonana w technologii ASP i należy przetworzyć jej kod. Serwer IIS uruchamia ten kod na naszej stronie quizu. Tworzy kopie klasy o nazwie Quiz z serwera SampleServer. Następnie wynik w postaci HTML wysyła do tej przeglądarki, która żądała dostępu do strony. W następnym rozdziale dokładniej przyjrzymy się serwerowi IIS. Dowiemy się, jak konfigurować i wykorzystywać ten serwer z perspektywy twórcy strony.

29

ASP – Kompendium programisty

Nie tylko IIS systemu NT Tematem głównym tej książki jest korzystanie z technologii ASP na serwerze systemu Windows NT dzięki uruchamianiu IIS. Ale popularność ASP powoduje, że szybko wychodzi ona poza te ramy. Liczne firmy wytwarzają narzędzia i dodatki dla innych serwerów internetowych i systemów operacyjnych, co pozwala twórcom stron ASP pracować również poza modelem Microsoftu. W nadchodzących latach spodziewamy się kontynuacji rozwoju technologii ASP i przejęcia zasadniczej roli w zapewnianiu połączenia pomiędzy klientem a serwerem.

Rozdział 2. Serwer IIS widziany z perspektywy twórcy stron Czym jest IIS? Internet Information Service (IIS) firmy Microsoft jest połączeniem pomiędzy klientem a serwerem używanym w rozwiązaniach korzystających z przeglądarek internetowych i intranetowych. W tym typie rozwiązań pojęcie klient oznacza przeglądarkę, na przykład Microsoft Internet Explorer, Netscape Navigator czy jakąś inną. Serwer oznacza kombinację narzędzi i aplikacji, których używamy do tworzenia zawartości strony. W przypadku niektórych serwisów WWW zadania IIS będą ograniczały się do wysyłania statycznych bloków HTML; gdzie indziej IIS będzie odgrywał znacznie większą rolę, ułatwiając komunikację pomiędzy mnóstwem zasobów na twoim serwerze. Rysunek 2.1 pokazuje kolejne kroki żądania dostępu w tym środowisku klient-serwer. Omówimy ten proces dokładniej w rozdziale 4, teraz przyjrzyjmy się jedynie udziałowi serwera IIS. Użytkownicy wpisują w swojej przeglądarce żądanie dostępu do strony znajdującej się na twoim serwerze. Żądanie jest przesyłane przez Internet do twojego serwera, a następnie do IIS. IIS wyszukuje żądaną stronę, a następnie, w oparciu o nazwę znalezionego pliku decyduje o tym, co należy z nią zrobić. Jeśli plik ma rozszerzenie oznaczające konieczność przetworzenia go przez twój komputer, np. .asp, to IIS przetworzy kod tej strony.

Rysunek 2.1. Kolejne kroki generowania żądania przez przeglądarkę To przetwarzanie może dotyczyć również innych składników. Jeśli kod wymaga połączenia z SQL Server w celu wyszukania jakiejś danej, tworzona jest kopia potrzebnych składników. Kiedy kod potrzebuje jakiegoś programu graficznego do wygenerowania wykresu, odpowiedni składnik jest uruchamiany. Kiedy kod wywołuje jeden z twoich własnych składników, również zostanie stworzona jego kopia. Wynik kodu i wszystkie składniki pobrane dla tej strony są wysyłane z powrotem do przeglądarki, która żądała dostępu do strony. Następnie przeglądarka dokonuje analizy składniowej przysłanego kodu i wyświetla zawartość strony. Jeśli strona nie ma rozszerzenia lub nazwy, która wskazywałaby na konieczność

31

ASP – Kompendium programisty

przetworzenia jej przez IIS, jest ona po prostu wysyłana do przeglądarki bez kopii składników oraz bez jakiegokolwiek przetworzenia.

Otrzymywanie kopii IIS Internetowy serwer informacyjny wersji 4.0 systemu Windows NT 4.0 jest dostarczany wraz z pakietem Option Pack systemu operacyjnego. Pakiet ten możesz pobrać za darmo z witryny WWW Microsoftu. Nowe kopie płyt CD z Windowsem NT również zawierają serwer IIS 4.0, możesz więc już mieć IIS uruchomiony na twoim serwerze — będziesz bowiem potrzebował przynajmniej wersji 4.0. Poprzednie wersje nie pozwalały na wykorzystanie wszystkich narzędzi i technik przedstawionych w tej książce. To, czy posiadasz zainstalowany Pakiet opcji Windowsa NT 4.0, możesz sprawdzić przeglądając odpowiedni folder, co pokazano na rysunku 2.2.

Rysunek 2.2. Folder Pakietu opcji Windows NT 4.0 Instrukcje dotyczące pełnej instalacji IIS również znajdują się na stronie internetowej Microsoftu. Dalsza część tego rozdziału dotyczy konfiguracji IIS z perspektywy twórcy stron. Nauczysz się pracy z Konsolą zarządzania Microsoftu, konfiguracji usługi WWW, dodawania kolejnych witryn, współpracy z aplikacjami ASP, stosowania i konfigurowania usługi FTP oraz monitorowania sprawności twojego internetowego serwera informacyjnego.

Konsola zarządzania Microsoftu Konsola zarządzania Microsoftu (MMC — Microsoft Management Console) jest narzędziem używanym do konfiguracji IIS. MMC jest nowym elementem Windowsa NT używanym również podczas konfiguracji wielu innych zadań administracyjnych w środowisku NT. Narzędzie to działa przy użyciu modułów dodatkowych dla każdej aplikacji, która wykorzystuje konsolę MMC. MMC stanowi szkielet do konfiguracji usług. Produkt wymagający od administratora użycia MMC podczas konfiguracji, dostarcza modułu dodatkowego do MMC. Moduł dodatkowy (ang. snap-in) prezentuje hierarchiczny widok obiektów programu usługowego wraz z działaniami, które można podjąć dla każdego z nich. Aby wywołać konsolę MMC dla IIS, wybierz Menedżera usług internetowych z IIS firmy Microsoft pokazanego na rysunku 2.2, a wtedy zobaczysz konsolę zarządzania pokazaną na rysunku 2.3.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

32

Rysunek 2.3. Konsola zarządzania MMC z modułem dodatkowym IIS w użyciu Po lewej stronie znajduje się moduł dodatkowy IIS prezentujący listę hierarchiczną obiektów. Rozwijania i zwijania listy dokonujesz podobnie jak w oknie Eksploratora Windows, przez kliknięcie znaków plus lub minus. Kiedy klikniesz jeden z obiektów po lewej stronie okna, po prawej ukażą się wszystkie znajdujące się w nim pozycje. Każdy obiekt może zawierać działania (akcje), które podejmuje się dla tego obiektu. Możesz przeglądnąć listę działań dla obiektu wybierając go i klikając przycisk Działanie (Action) znajdujący się w pasku narzędziowym, co pokazano na rysunku 2.4.

Rysunek 2.4. Menu Działanie w konsoli MMC

33

ASP – Kompendium programisty

Każdy obiekt posiada również Właściwości (Properties), które są atrybutami obiektu. Aby przejrzeć właściwości obiektu, kliknij obiekt prawym przyciskiem myszy i wybierz Właściwości (Properties). Przeglądu właściwości możesz dokonać również klikając przycisk Działanie (Action) i wybierając Właściwości (Properties) lub naciskając ikonę Właściwości (Properties) w pasku narzędziowym. Moduł dodatkowy w pasku narzędziowym zapewnia również realizację innych funkcji, które nie odnoszą się do określonego obiektu. Na przykład możesz przejrzeć zawartość Monitora wydajności lub Programu przeglądu zdarzeń, wybierając odpowiednią ikonę na pasku narzędziowym.

Właściwości usług WWW Internetowy serwer informacyjny zawiera w sobie między innymi usługę WWW. Ta usługa ma właściwości, które możesz modyfikować wpływając na sposób jej konfiguracji. Usługa ta zawiera wiele właściwości, które są również właściwościami danej witryny WWW. Kiedy tworzysz nową witrynę WWW, właściwości użyte przy jej tworzeniu są dziedziczone przez usługę WWW, tak więc konfiguracja usługi już na samym początku oszczędzi ci mnóstwa czasu i pracy, jeśli na twoim serwerze znajduje się wiele witryn WWW. Aby otworzyć okno właściwości Usługi WWW w konsoli MMC, kliknij prawym przyciskiem myszy nazwę komputera zawierającego tą usługę, którą chcesz skonfigurować, a następnie wybierz Właściwości (Properties). Zobaczysz okno dialogowe pokazane na rysunku 2.5.

Rysunek 2.5. Dialog wyboru Właściwości głównych Zwróć uwagę na pole wyboru Umożliwiaj dławienie przepustowości (Enable Bandwidth Throttling). Jeśli zaznaczysz to pole, udostępnione zostanie pole tekstowe znajdujące się poniżej. Możesz w nim określić wartość przepustowości sieci, którą chcesz wykorzystać dla usługi. Ta wartość jest wartością maksymalną, a nie zarezerwowanym poziomem przepustowości — oznacza to, że niezależnie od dostępnego aktualnie pasma przepustowości, twoja usługa może zająć maksymalnie taką jej wartość, jaką określono w polu tekstowym.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

34

Właściwości witryny WWW W polu Właściwości główne (Master Properties) wybierz Usługę WWW i kliknij przycisk Edytuj (Edit). Teraz powinieneś ujrzeć okno dialogowe właściwości głównych dla Usługi WWW, jak to pokazano na rysunku 2.6.

Rysunek 2.6. Właściwości Usługi WWW Upewnij się, czy poruszasz się po zakładce o nazwie Witryna WWW (Web Site). Pierwszą rzeczą, jaką możesz tam wprowadzić jest opis usługi. Nie ma on wpływu na funkcjonowanie usługi, a służy jedynie twojej własnej identyfikacji. W samym środku okna właściwości możesz skonfigurować połączenia. Tutaj możesz zezwolić na równoczesne połączenie z twoim serwerem IIS nieograniczonej liczby odwiedzających lub możesz ją ograniczyć. Możesz również określić Czas rozłączenia (Connection Timeout). Wartość ta określa czas (w sekundach), przez który użytkownik może pozostawać nieaktywny przed przerwaniem połączenia z twoją usługą WWW. W dolnej części okna właściwości możesz zdecydować, czy chcesz umożliwić rejestrację, a jeśli tak, to jaki ma być jej typ. Rejestracja w Usłudze WWW pozwala na śledzenie poczynań użytkownika na twojej witrynie. Jeśli opcja rejestracji jest zaznaczona, każde żądanie dostępu od serwera WWW jest odnotowywane jako kolejna pozycja w bazie danych lub pliku tekstowym. Wprowadzane zapisy mogą zawierać datę i czas dostępu, adres IP komputera wysyłającego żądanie, plik będący obiektem zainteresowania i wiele więcej. Posiadasz cztery możliwości wyboru formatu dziennika zdarzeń: format pliku dziennika serwera IIS Microsoftu, wspólny format NCSA, rozszerzony format W3C oraz format dziennika ODBC. Format pliku dziennika zdarzeń serwera IIS Microsoftu jest specyficznym formatem używanym jedynie przez IIS. Plik dziennika jest tekstowym plikiem ASCII. Kiedy klikniesz właściwości pliku tego typu, możesz wybrać jego lokalizację i określić częstość generowania nowego pliku. Wspólny format pliku dziennika NCSA jest spotykany na serwerach internetowych, które nie należą do świata Microsoftu. Możesz potrzebować tego typu formatu podczas korzystania z niezależnego narzędzia analizy pliku dziennika. Rozszerzony format pliku dziennika zdarzeń W3C jest podobny do poprzedniego formatu NCSA, ale posiada dodatkowe pola wykorzystywane podczas śledzenia. Możesz również wybrać, w których polach chcesz gromadzić informacje, a w których nie. Jeśli naciśniesz przycisk Właściwości (Properties) dla tego typu

ASP – Kompendium programisty

35

dziennika, ujrzysz okno Rozszerzonych właściwości rejestracji (Extended Logging Properties), pokazane na rysunku 2.7.

Rysunek 2.7. Okno dialogowe Rozszerzonych właściwości rejestracji Klikając zakładkę Rozszerzone właściwości (Extended Properties) zobaczysz różne pola z nazwami zdarzeń, które możesz obserwować. Pole Nazwa użytkownika (User Name) jest prezentowane tylko wtedy, gdy dana osoba aktualnie jest zarejestrowana na twoim serwerze. Jeśli stroną odwiedzoną przez użytkownika na twojej witrynie była http://www.somewhere.com/search.asp?query=VB, adresem URL byłaby tutaj część www.somewhere.com/search.asp, a query=VB — polem zapytania URI. Pole Agent użytkownika (User Agent) zawiera informacje o przeglądarce, która wystosowała żądanie dostępu. Pole Odsyłacz (Referrer) zawiera nazwę strony, którą poprzednio odwiedził użytkownik, jeśli posiadała ona łącze ze stroną aktualnie odwiedzaną, z którego skorzystał użytkownik oraz jeśli przeglądarka obsługuje to pole. Jeśli żądany element strony to grafika, wtedy pole odsyłacza będzie obejmowało nazwę strony, na której ta grafika się znajduje. Czwartym typem rejestracji jest rejestracja ODBC, która najbardziej obciąża zasoby, ale daje ci wspaniałe możliwości analizy. Podczas rejestracji ODBC każde żądanie dostępu do twojego serwera jest odnotowywane w bazie danych. Korzystasz z właściwości dla tego typu rejestracji w celu określenia nazwy DSN bazy danej, której będziesz używał. Musisz najpierw stworzyć tabelę, w której będą umieszczane zapisy żądań. Tabela ta musi być określonego formatu, jak to opisano dla SQL Server w tabeli 2.1. Tabela 2.1. Definicje pól tabeli rejestracji ODBC Nazwa pola Wartość ClientHost Username LogTime Service Machine ServerIP ProcessingTime BytesRecvd BytesSent ServerStatus Win32Status Operation

varchar(255) varchar(255) datetime varchar(255) varchar(255) varchar(50) int int int int int varchar(255)

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

36

Target varchar(255) Parameters varchar(255) Po stworzeniu tabeli, będziesz musiał określić nazwę DSN poprzez Administratora źródeł danych ODBC, do którego następnie stworzysz odniesienie w oknie dialogowym rejestracji ODBC. Zobacz rozdział 13, w którym znajdziesz dodatkowe informacje na temat tworzenia nazw DSN. Przypis

Ponieważ rejestracja wymaga się zapisywania żądań do pliku lub bazy danych, korzysta się z zasobów. Jeśli nie używasz rejestracji, zasoby te możesz wyłączyć.

Właściwości związane z wydajnością Wybierz zakładkę Wydajność (Performance) w oknie Właściwości usługi WWW (WWW Service Properties), a zobaczysz okno przedstawione na rysunku 2.8.

Rysunek 2.8. Właściwości wydajności usługi WWW Dostrajanie wydajności (Performance Tunning) określa szacunkową liczbę połączeń w ciągu dnia. Nie musisz ustalać maksymalnego poziomu przewidywanych połączeń, jeśli nie jest ich zbyt wiele, ponieważ wtedy nie wykorzystasz odpowiednio twoich zasobów. Zauważ, że pole wyboru Umożliwiaj dławienie przepustowości (Enable Bandwidth Throttling) jest niedostępne. Ta właściwość może być ustawiona jedynie dla konkretnej witryny WWW. Omówimy tą właściwość później, w podrozdziale „Właściwości witryny WWW”. Kiedy zaznaczone jest pole Umożliwiaj sprawdzenie aktywności HTTP (HTTP Keep-Alive Enable), przeglądarka może podtrzymywać połączenie przez kolejne żądania dostępu do strony zamiast zestawiać połączenie za każdym razem, kiedy pojawia się nowe żądanie dostępu. To pole jest zaznaczone domyślnie.

37

ASP – Kompendium programisty

Właściwości filtrów ISAPI Jedną z najbardziej zaawansowanych funkcji IIS jest tworzenie filtrów ISAPI (ISAPI Filters), które pozwalają na podjęcie własnych, dostowanych do twoich potrzeb działań podczas wystąpienia niektórych zdarzeń związanych z IIS. Zamiast zwykłego przetworzenia zdarzenia przez serwer IIS, możesz wybrać inny program, który zajmie się tym zdarzeniem. Takie programy często napisane są w Visual C++ i również często umożliwiają dostosowanie procesu rejestracji. Jeśli więc nie odpowiadają ci formaty rejestracji omówione we wcześniejszym podrozdziale, możesz stworzyć swój własny. Aby to uczynić musisz dodać filtr ISAPI w odpowiednim oknie zakładki. pokazanym na rysunku 2.9. Kliknij przycisk Dodaj (Add) i przeglądnij pliki biblioteki. Kolejność pojawiania się tych filtrów jest znacząca, ponieważ pierwszy znaleziony filtr zajmujący się zdarzeniem jest uruchamiany przed wszystkimi innymi. Kiedy pliki te zostaną załadowane, pozostają w pamięci, uważaj więc, aby nie zostały nadużyte.

Rysunek 2.9. Okno dialogowe filtrów ISAPI

Właściwości katalogu macierzystego Następnie przeanalizujmy właściwości Katalogu macierzystego (Home Directory), które pokazane zostały na rysunku 2.10.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

38

Rysunek 2.10. Właściwości katalogu macierzystego usługi WWW Zauważ, że niektóre punkty okna są niedostępne, ponieważ nie mają one zastosowania w odniesieniu do usługi WWW, są natomiast omówione nieco dalej w tym rozdziale podczas analizy właściwości witryn WWW oraz aplikacji ASP. Kiedy ustawiasz właściwości usługi WWW pamiętaj, że tworzone przez ciebie witryny WWW będą dziedziczyć te właściwości — bądź więc ostrożny. Uprawnienia dostępu (Access permissions) określają, co anonimowy użytkownik może zrobić z plikami. Kiedy wybrano pole Odczyt (Read), może on jedynie przeglądać pliki. Jeśli zaznaczono kratkę Zapis (Write), odwiedzający mogą przekazywać pliki do serwera. Możesz zaznaczyć pole wyboru Dostęp do pliku dziennika zdarzeń (Log access), aby włączyć plik lub katalog do pliku dziennika. Jeśli zaznaczono Przeglądanie katalogu (Directory browsing), odwiedzający mogą zobaczyć zawartość katalogu w celu stwierdzenia, czy nie znajduje się w nim domyślna strona. Zazwyczaj nie będziesz chciał wybrać tej opcji, ponieważ odwiedzający mogą znaleźć stronę na twojej witrynie posługując się łączami zamiast przeglądać listę stron twojej witryny. Jeśli zaznaczysz pole wyboru Indeksuj bieżący katalog (Index this directory), strony w witrynie lub katalogu będą podlegały automatycznego indeksowaniu, co spowoduje stworzenie bazy danych, która pozwoli użytkownikom przeszukać zawartość strony. Reszta właściwości w tej zakładce zostanie omówiona w tym rozdziale nieco później.

Dokumenty Zakładka właściwości Dokumentów (Documents) usługi WWW ukazano na rysunku 2.11.

39

ASP – Kompendium programisty

Rysunek 2.11. Zakładka właściwości dokumentów Kiedy wpisujesz adres sieciowy taki jak http://www.something.com, faktycznie jesteś odsyłany do konkretnej strony na witrynie, przykładowo http://www.something.com/index.html lub http://www.something.com/default.asp. Te strony nazywane są stronami domyślnymi. Jeśli nie określisz strony, do której chcesz się dostać, serwer zakłada, że żądasz dostępu do domyślnej strony w witrynie lub katalogu; na wielu serwerach istnieje taka ustalona nazwa, jak index.html. W serwerze IIS możesz określić nawet kilka nazw stron domyślnych. Robi się to przy użyciu przycisku Dodaj (Add) w zakładce Dokumenty (Documents). Gdy tylko nazwy zostaną określone, możesz ustalić kolejność, w której IIS powinien przeglądać strony domyślne. Na przykład ustalając kolejność taką jak na rysunku 2.11, IIS najpierw odszuka stronę default.htm. Jeśli jej nie znajdzie, w drugiej kolejności postara się odszukać stronę default.asp. Jeśli zaznaczysz pole Udostępnij stopkę dokumentu (Enable document footer) i określisz nazwę strony, IIS wstawi tą stronę na dole każdej innej wywoływanej strony. Mógłbyś użyć tej funkcji do automatycznego dodawania informacji o prawach autorskich do zawartości wszystkich stron bez konieczności ich modyfikacji, określając jedynie w polu stopki dokumentu nazwę strony, w której taka informacja się znajduje.

Błędy klienta Zakładka właściwości Błędów klienta (Customer Errors) pokazana została na rysunku 2.12.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

40

Rysunek 2.12. Zakładka właściwości Błędów klienta Kiedy próbujesz uzyskać dostęp do strony, która nie istnieje, otrzymasz wiadomość, która poinformuje cię o tym fakcie. Większość witryn WWW wyświetla tą wiadomość o błędzie w bardzo surowym formacie, ukazującym jedynie numer błędu i jego opis. Inne witryny natomiast prezentują bogatszą informację o błędzie, która nie daje ci odczuć, że nagle utknąłeś nie posiadając możliwości wyjścia z sytuacji. IIS daje możliwość powrotu do dowolnej, określonej strony, kiedy wystąpi jakiś błąd. Na przykład zamiast prezentować odwiedzającemu sztywną wiadomość, że strona nie została odnaleziona, być może zechcesz dać im możliwość poszukania tej strony na twojej witrynie, lub udostępnisz im kontakt, przez który będą mogli poinformować cię o martwym łączu. Możesz określić nazwę strony, którą chcesz wyświetlać, dokonujesz naciskając przycisk Edytuj właściwości (Edit Properties), podświetlając najpierw ten numer błędu, przy wystąpieniu którego strona ma być wyświetlona.

Witryny WWW w serwerze IIS Jak widać na rysunku 2.13, na serwerze IIS możesz mieć wiele witryn WWW. Witryny na IIS są zaznaczone ikoną, która przedstawia dłoń trzymającą glob ziemski. W poprzednim przykładzie zainstalowanych było siedem witryn WWW: Default Web Site, Administration Web Site, NetStats2000, Travel Science, WindowsNTExpert, NationsInstitute oraz Invitations4Less.

41

ASP – Kompendium programisty

Rysunek 2.13. Witryny WWW w serwerze IIS Zauważ, że następna kolumna po opisie witryny nosi nazwę stanu. Ta kolumna zawiera informacje o tym, czy dana witryna aktualnie jest uruchomiona, spauzowana lub zatrzymana. Witryna uruchomiona jest osiągalna dla obecnych i nowych połączeń; spauzowaną mogą obejrzeć tylko ci, którzy już są połączeni; zatrzymana witryna jest wyłączona i niedostępna dla żadnych połączeń. Aby uruchomić, zatrzymać bądź spauzować witrynę WWW, kliknij prawym przyciskiem myszy witrynę w prawej połowie konsoli MMC, a następnie wybierz Uruchom (Start), Zatrzymaj (Stop) bądź Przerwij (Pause), jak pokazano na rysunku 2.14. Tego samego dokonać można w menu Działanie (Action) lub w pasku narzędziowym, wybierając odpowiednią ikonę.

Rysunek 2.14. Uruchamianie, zatrzymywanie i pauzowanie witryny WWW

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

42

Dodawanie witryny WWW Możesz dodać witrynę WWW do serwera IIS przy użyciu Kreatora nowych witryn WWW. Dostęp do kreatora uzyskuje się klikając prawym przyciskiem myszy ten komputer z listy, na którym chcesz umieścić witrynę, a następnie wybierając pozycję Nowy (New) i Witryna WWW (Web Site), tak jak pokazano na rysunku 2.15.

Rysunek 2.15. Wybór Kreatora nowych witryn WWW Kreator przeprowadzi cię przez proces dodawania nowej strony do serwera IIS. Pierwszym krokiem będzie wpisanie nazwy witryny (Rysunek 2.16). Ta nazwa będzie służyła identyfikacji witryny. W drugim kroku dokonasz konfiguracji adresu IP oraz numeru portu dla tej witryny WWW (Rysunek 2.17).

Rysunek 2.16. Pierwszy krok Kreatora nowych witryn WWW

43

ASP – Kompendium programisty

Rysunek 2.17. Drugi krok Kreatora nowych witryn WWW Po pierwsze należy wybrać adres IP dla twojego serwera. Jeśli serwer posiada pojedynczy adres IP, możesz jego wartość wybrać z listy. Jeśli serwer posiada więcej niż jeden adres IP, będziesz musiał wiedzieć, pod którym z nich zarejestrowana jest twoja nazwa domeny. Jeśli tego nie wiesz, skontaktuj się z twoim dostawcą Internetu bądź administratorem sieci w celu zasięgnięcia takich informacji. Jak się przekonasz później, jedną z najbardziej znaczących zmian dokonanych w IIS wersji 4 jest możliwość umieszczenia wielu witryn WWW pod jednym adresem IP — tak więc rzeczywiście będziesz potrzebował tylko jednego adresu IP. Numery portów powinny być pozostawione bez zmian. Znajdują się tam domyślne wartości, które wysyła przeglądarka. Jeśli wpiszesz inne numery portów, odwiedzający witrynę będą musieli znać te wartości, aby uzyskać do niej dostęp. Jeśli przykładowo nie zmienisz numeru portu TCP, goście mogliby odwiedzać stronę http://www.somewhere.com. Jeśli zmienisz ten numer na 9269, to goście będą musieli dodawać ten numer do adresu. Będzie on wyglądał następująco: http://www.somewhere.com:9269. Zazwyczaj nie dokonuje się zmiany numeru, ponieważ byłoby to kłopotliwe dla twoich gości, którzy rzadko wprowadzaliby ten numer. Jest to jednak technika pozwalająca na zróżnicowanie sposobów dostępu do serwera sieciowego bez konieczności posiadania dodatkowej domeny. W ten sposób można na przykład administrować serwerem IIS zdalnie poprzez sieć WWW. Robi się to przy użyciu zwykłej nazwy domeny uzupełnionej odpowiednim numerem portu. W trzecim kroku kreatora określasz fizyczne położenie plików witryny na twoim serwerze, co pokazano na rysunku 2.18.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

44

Rysunek 2.18. Trzeci krok Kreatora nowych witryn WWW Naciśnij przycisk Przeglądaj (Browse) aby wybrać katalog, który zawiera najwyższy poziom witryny WWW. Wszystkie pliki witryny muszą być umieszczone w tym katalogu i jego podkatalogach, chyba że stworzysz katalog wirtualny, omówiony dalej w tym rozdziale. Katalogiem najwyższego poziomu może być każdy katalog na twoim serwerze. Jeśli zaznaczysz pole Zezwól na dostęp anonimowy (Allow anonymous access), każdy gość będzie mógł dostać się do plików tej witryny; w innym wypadku gość będzie musiał posiadać konieczne uprawnienia dostępu do tego katalogu. Przypis

Możesz modyfikować wartości ustawione podczas pracy kreatora również później, przeglądając właściwości danej witryny.

W ostatnim kroku kreatora dokonujesz wyboru uprawnień dostępu do witryny WWW. (Rysunek 2.19). Jeśli zaznaczysz pole Zezwól na odczyt (Allow Read Access), odwiedzający będą mogli przeglądać zawartość witryny. Kiedy zaznaczysz pole Zezwól na dostęp do skryptu (Allow Script Access), wtedy skrypty takie jak ASP mogą być uruchamiane na tej witrynie. Zauważ jednak, że możesz umieścić twoje skrypty w jednym folderze, a następnie zezwolić na ich uruchamianie jedynie w tym folderze, nie na całej stronie.

45

ASP – Kompendium programisty

Rysunek 2.19. Czwarty krok Kreatora nowych witryn WWW Zaznaczenie pola Zezwól na uruchamianie (Allow Execute Access) umożliwi aktywację plików wykonywalnych poprzez witrynę WWW. To pole nie jest zaznaczane zbyt często, ponieważ możesz nie chcieć, aby twoi goście uruchamiali aplikacje przez Internet. Jeśli zaznaczysz pole Zezwól na zapis (Allow Write Access), odwiedzający będą mogli przekazywać pliki do witryny. Zaznaczenie pola wyboru Zezwól na przeglądanie katalogu (Allow Directory Browsing) umożliwi gościom zobaczenie listy nazw wszystkich plików w każdym z katalogów witryny WWW. Kiedy klikniesz przycisk Zakończ (Finish) strona, którą utworzyłeś, jest dodawana do serwera IIS i powinna być widoczna w oknie konsoli MMC. Zauważ jednak, że po dodaniu witryny jest ona wyłączona. Będziesz musiał ją uaktywnić klikając jej ikonę prawym przyciskiem myszy i wybierając Uruchom (Start). Po tej ostatniej operacji, twoja witryna powinna być już dostępna.

Właściwości witryny WWW Wiele właściwości witryny WWW jest dziedziczonych przez właściwości, które ustawiłeś w usłudze WWW opisanej wcześniej. Jeśli zmodyfikujesz je na poziomie witryny, wtedy właściwości witryny zastąpią właściwości dziedziczone. W tym podrozdziale dokonamy przeglądu niektórych właściwości witryn WWW, a część nie podanych tutaj informacji znajdziesz nieco wcześniej.

Wiele witryn pod jednym adresem IP Nową funkcją serwera IIS wersji 4.0 jest zdolność odwzorowywania więcej niż jednej witryny od jednym adresem IP. Aby to zrealizować, należy wykonać czynności przedstawione poniżej dla wszystkich witryn umiejscowionych pod jednym adresem IP. Kliknij prawym przyciskiem myszy witrynę w oknie konsoli MMC i wybierz Właściwości (Properties). Wybierz zakładkę Witryna WWW (Web Site), a wtedy pokaże się odpowiedni arkusz przedstawiony na rysunku 2.20.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

Rysunek 2.20. Właściwości witryny WWW Teraz naciśnij przycisk Zaawansowane (Advanced). Zobaczysz okno dialogowe, takie jak na rysunku 2.21. Zauważ, że zapis znajdujący się pod hasłem Wielorakie tożsamości dla witryny WWW (Multiple identities for this Web Site) wyszczególnia adres IP oraz numer portu, nie zawiera natomiast Nazwy nagłówka komputera macierzystego (Host Header Name), która jest nazwą domeny tej witryny. W to pole musimy wpisać odpowiednią wartość. Naciśnij Przycisk Edytuj (Edit) w celu wyświetlenia tego zapisu, a wtedy zobaczysz kolejne okno dialogowe pokazane na rysunku 2.22.

46

47

ASP – Kompendium programisty

Rysunek 2.21. Zaawansowane właściwości witryny WWW

Rysunek 2.22. Okno dialogowe zaawansowanej identyfikacji witryny WWW Wprowadź nazwę domeny w pole tekstowe Nazwy nagłówka komputera macierzystego (Host Header Name) i naciśnij OK. Teraz kiedy serwer IIS otrzyma żądanie dostępu do tej domeny, skieruje żądanie do właściwej witryny, pomimo że wiele witryn WWW jest umieszczonych pod jednym adresem IP.

Zakładka właściwości witryny WWW Zwróć uwagę na inne właściwości przedstawione w oknie na rysunku 2.20. Możesz zmodyfikować nazwę witryny WWW, której używasz do jej identyfikacji.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

48

Możesz również określić maksymalną liczbę połączeń z witryną w danym czasie. Jest to użyteczne w scenariuszu wielorakich domen, w którym możesz pobierać opłaty za umieszczenie witryny WWW na podstawie maksymalnej ilości dopuszczalnych połączeń. Możesz również wybrać sposób rejestrowania żądań witryny. Pamiętaj o tym, że domyślnie ustawiana jest tutaj ta wartość, którą wprowadziłeś we właściwościach usługi WWW.

Właściwości katalogu macierzystego Teraz wybierz zakładkę Katalog macierzysty (Home Directory), jak to pokazano na rysunku 2.23. Pierwszym ustawieniem, jakiego możesz dokonać tutaj, jest położenie plików danej witryny. Zależnie od tego, na co się zdecydujesz, tak zmieni się część zakładki poniżej.

Rysunek 2.23. Właściwości katalogu macierzystego Jeśli zdecydujesz się na umieszczenie witryny na tym komputerze, na którym aktualnie pracujesz, będziesz mógł wybrać lokalną ścieżkę oraz dowolną z poniżej wyszczególnionych właściwości. Jeśli wybierzesz katalog współdzielony, zostaniesz zapytany o podanie nazwy serwera oraz folderu współdzielonego w postaci \\[serwer]\[udział]. Możesz również wybrać readresowanie (redirection), co spowoduje, że podczas próby dostępu odwiedzającego do twojej witryny, zostanie on odesłany do jakiegoś innego miejsca w Internecie. Kiedy zdecydujesz się na tą opcję, zostaniesz poproszony o podanie adresu URL, do którego nastąpi przekierowanie. Nie możesz wtedy jednak ustawić innych właściwości w tej zakładce. Ustawienia aplikacji (Applications Settings) zostały omówione w podrozdziale „Właściwości aplikacji” w dalszej części tego rozdziału.

Eksploracja witryny Teraz, kiedy już dodałeś i skonfigurowałeś witrynę WWW, możesz przeglądać zawartość strony w podobny sposób, jak robi się to przy użyciu Eksploratora Windows. Możesz rozwijać listę katalogów, jak to pokazano na rysunku 2.24.

49

ASP – Kompendium programisty

Rysunek 2.24. Eksploracja witryny WWW

Katalogi wirtualne Możesz przejrzeć zawartość każdego folderu twojej witryny. Te pliki i foldery odpowiadają plikom i folderom logicznym, które znajdują się w strukturze katalogu macierzystego tej witryny. Możesz również stworzyć katalogi wirtualne. Katalogi wirtualne są folderami, które znajdują się poza fizyczną strukturą katalogów witryny WWW, ale chcesz je włączyć do witryny. Przypuśćmy na przykład, że masz witrynę zawierającą podkatalogi html i script. Adresujesz te katalogi poprzez określenie nazwy domeny, po której następuje nazwa odpowiedniego podkatalogu: http://www.somewhere.com/html/welcome.html. Posiadasz jednak na serwerze inny katalog zawierający pliki video, które chcesz udostępnić poprzez witrynę WWW w katalogu o nazwie avi. W bieżącej konfiguracji pliki te nie są dostępne dla twojej witryny, ponieważ znajdują się poza jej fizyczną strukturą katalogów. Możesz jednak stworzyć katalog wirtualny wskazujący katalog avi, który w ten sposób zostanie włączony w logiczną strukturę twojej witryny. Aby stworzyć katalog wirtualny, kliknij prawym przyciskiem myszy ikonę witryny bądź folderu, gdzie katalog wirtualny ma być dodany i wybierz Nowy (New), a następnie Katalog wirtualny (Virtual Directory), jak to pokazano na rysunku 2.25. W ten sposób uruchomisz Kreatora nowego katalogu wirtualnego (New Virtual Directory Wizard). Jego pierwsze okno prezentuje rysunek 2.26.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

50

Rysunek 2.25. Dodawanie katalogu wirtualnego

Rysunek 2.26. Kreator nowego katalogu wirtualnego — krok pierwszy Pierwszą rzeczą, jaką należy wprowadzić jest nazwa dla katalogu wirtualnego, która będzie widoczna na twojej witrynie WWW. Innymi słowy, jeśli katalog fizyczny nosi nazwę PublicVideos, ale ty chcesz aby nazwa ta podczas dostępu do strony brzmiała Videos, taką właśnie nazwę wpiszesz w polu tekstowym pierwszego okna kreatora. W drugim kroku kreatora określisz fizyczne położenie katalogu wirtualnego (Rysunek 2.27). Naciśnij przycisk Przeglądaj (Browse) i ustal lokalizację katalogu fizycznego.

51

ASP – Kompendium programisty

Rysunek 2.27. Kreator nowego katalogu wirtualnego — krok drugi W kroku trzecim (Rysunek 2.28) możesz określić uprawnienia dostępu do katalogu wirtualnego. Następnie naciśnij przycisk Zakończ (Finish). Od tej pory nowy katalog wirtualny, fizycznie umiejscowiony poza twoją witryną, staje się dostępny dla odwiedzających.

Rysunek 2.28. Kreator nowego katalogu wirtualnego — krok trzeci

Właściwości folderu i pliku Dowiedziałeś się już, w jaki sposób ustawiać właściwości dla samej usługi WWW. Wiesz również, jak to samo zrobić z poszczególnymi witrynami, których właściwości są dziedziczone z usługi WWW. Teraz dowiemy się jak ustawiać właściwości konkretnych folderów i plików witryny. Dostęp do właściwości uzyskuje się klikając

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

52

dany folder prawym przyciskiem i wybierając Właściwości (Properties). Powinieneś wtedy ujrzeć okno dialogowe pokazane na rysunku 2.29.

Rysunek 2.29. Właściwości folderu Właściwości folderu są dziedziczone przez właściwości witryny WWW, dlatego zwykle nie trzeba ich ustawiać. Dzięki nim jednak masz możliwość precyzyjnej konfiguracji twojej witryny. Możesz na przykład przeznaczyć jeden folder na przechowywanie skryptów. W takim wypadku ustalisz dla niego uprawnienia skryptu. Jeśli chcesz rejestrować dostęp do pojedynczego folderu, zrobisz to poprzez Właściwości folderu. Każdy plik folderu również posiada swoje właściwości. Są one pokazane na rysunku 2.30. Właściwości pliku są dziedziczone z właściwości folderu, tak więc hierarchia dziedziczenia przedstawia się następująco: usługa WWW, witryna WWW, folder, a na końcu plik.

Aplikacje ASP Zmienne trwałe i zakresowe Aplikacja ASP to wymyślna nazwa, która określa po prostu grupę stron ASP ulokowanych w jednej strukturze katalogu, z którymi pracować możesz podobnie jak z aplikacją. Sama strona ASP jest jednostką oddzielną, podobną do wyspy, która nie dzieli się informacjami zapamiętanymi w zmiennych z innymi stronami ASP. Strona będąca częścią aplikacji ASP może współużytkować i przetrzymywać zmienne trwałe poza pojedynczą stroną oraz zapamiętywać dane zakresowe poza nią. Przez zmienne trwałe rozumiemy takie zmienne, które pozostają dostępne po wyłączeniu strony. Zmienne zakresowe to takie zmienne, które są widoczne również poza tą stroną, która z nich korzysta. Tak więc przy użyciu aplikacji ASP możesz stworzyć zmienne, które będą istniały po opuszczeniu strony przez odwiedzającego oraz zmienne widoczne dla innych stron aplikacji. Załóżmy, że masz dobrze zabezpieczoną stronę i chcesz, aby odwiedzający logowali się na witrynie, zanim będą mogli zobaczyć którąkolwiek ze stron. Mają logować się na pojedynczej stronie, a ty musisz być powiadomiony przez inne strony o fakcie logowania. Zrealizujesz to przy użyciu aplikacji ASP, ponieważ

53

ASP – Kompendium programisty

możesz w niej stworzyć zmienną UserID zapamiętującą numer identyfikacyjny użytkownika. Jeśli numer znajdzie się w zmiennej, będziesz wiedział jaki użytkownik logował się na witrynie. W rozdziale pierwszym przyjrzeliśmy się stronie quizu. Strona pozwalała gościom odpowiadać na kolejne pytania, a my otrzymywaliśmy ich wyniki. Było to realizowane przez pojedynczą stronę. Jeśli chcielibyśmy rozwinąć to narzędzie, potrzebowalibyśmy dodatkowych stron w celu ewentualnego formatowania pytania. Być może pozwolilibyśmy przeglądać odpowiedzi na innej stronie. Strony musiałyby wtedy przekazywać sobie informacje dotyczące testu, jego wyników itd. Aby to osiągnąć, potrzebujemy aplikacji ASP. Może chcesz stworzyć program usługowy, który pozwalałby na śledzenie poczynań odwiedzającego witrynę, jego przejścia pomiędzy stronami. Będziesz wtedy musiał w jakiś sposób identyfikować danego odwiedzającego, aby odpowiedni zapis umieścić w jakiejś tabeli wykorzystania witryny. Taka zmienna identyfikacji, która mogłaby się nazywać ConnectionID, byłaby przekazywana pomiędzy stronami. Aplikacja ASP pozwoli na realizację tego typu zadania.

Zdarzenia Zdarzeniami nazywa się kody, które stanowią odpowiedź na podejmowane na stronie działania. Na przykład, w Visual Basic kliknięciu przycisku odpowiada zdarzenie Click; kiedy użytkownik nie wypełni pola tekstowego, uruchamiane jest zdarzenie Lost Focus. Konkretne działanie użytkownika pociąga za sobą wystąpienie zdarzenia. Możesz napisać kod, który zostanie uruchomiony po wywołaniu zdarzenia. Kiedy odwiedzający kliknie przycisk, być może zamknie się formularz lub kiedy zostawi puste pole tekstowe, możliwe, że wtedy zostanie uruchomiony kod zatwierdzający jego wejście. Jak się dowiemy szerzej z rozdziału ósmego przy okazji omawiania pliku global.asa, używając aplikacji ASP dysponujesz czterema zdarzeniami, po wystąpieniu których możesz uruchomić napisany przez siebie kod. Możesz napisać kod dla zdarzenia Application_OnStart. Kod tej procedury działa za każdym razem, kiedy twoja aplikacja ASP jest uruchamiana. Uruchomienie aplikacji następuje w chwili, kiedy pierwszy odwiedzający uzyskuje dostęp do strony ASP. Możesz stworzyć kod dla zdarzenia Session_OnStart. To zdarzenie działa, kiedy odwiedzający przegląda pierwszą stronę ASP. Różni się ono tym od Application_OnStart, że jest uruchamiane dla wszystkich gości strony, a nie jedynie dla pierwszego z nich. Kolejnym zdarzeniem jest Session_OnEnd. Uruchamiane jest w chwili, gdy połączenie odwiedzającego z twoją witryną kończy się. Zdarza się to szczególnie wtedy, gdy czas sesji odwiedzającego upływa lub kiedy ustawiłeś koniec sesji programowo. Ostatnim zdarzeniem dostępnym w aplikacji ASP to zdarzenie Application_OnEnd. Kod procedury uruchamiany jest w chwili, kiedy praca witryny WWW, której część stanowi aplikacja ASP, zostaje zatrzymana.

Tworzenie aplikacji ASP Teraz, kiedy już wiesz po co tworzy się aplikacje ASP, przyjrzyjmy się jak zrealizować to zadanie przy użyciu serwera IIS. Jak wspomniano wcześniej, aplikacje ASP składają się z katalogów oraz wszystkich znajdujących się w nich podkatalogów. Katalog może być częścią jednej tylko aplikacji ASP, tak więc jeśli katalog główny jest składnikiem innej aplikacji, a ty tworzysz nową aplikację przy użyciu tego katalogu, staje się on jej częścią. Używając konsoli MMC, kliknij prawym przyciskiem myszy katalog zawierający pliki, które mają stanowić aplikację ASP i wybierz Właściwości (Properties). Upewnij się, czy poruszasz się po zakładce Katalogi (Directories), powinna ona wyglądać tak jak ta na rysunku 2.31.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

54

Rysunek 2.31. Właściwości katalogu Obszarem, który będziemy wykorzystywać znajduje się w dolnej części okna pod nazwą Ustawienia aplikacji (Application Settings). Kliknij przycisk Utwórz (Create), a wtedy uaktywnione zostanie pole nazwy aplikacji (Rysunek 2.32).

Rysunek 2.32. Okno właściwości katalogu z uaktywnionym polem nazwy

55

ASP – Kompendium programisty

Wpisz nazwę twojej aplikacji ASP w polu tekstowym Nazwa (Name). Podana nazwa będzie służyła twojej własnej identyfikacji. Po naciśnięciu OK aplikacja ASP zostaje stworzona. Zauważ, że ikona katalogu zmieniła się z folderu na pole z małym, zielonym iksem w środku. Aby usunąć aplikację ASP, po prostu wróć do właściwości katalogu i naciśnij przycisk Usuń (Remove).

Konfigurowanie aplikacji ASP Zwróć uwagę na pole wyboru Uruchom w osobnej przestrzeni pamięci (proces izolowany) (Run in separate memory space (isolated process)). Jeśli jest ono zaznaczone, twoja aplikacja ASP będzie działała poza serwerem IIS. Kiedy więc twoja aplikacja spowoduje jakiś poważny problem i będzie musiała być zamknięta, nie spowoduje to zawieszenia działania innych aplikacji czy samego serwera IIS. Negatywnym aspektem zaznaczenia tego pola jest konieczność wykorzystania dodatkowych zasobów. Aby przejrzeć inne opcje konfiguracyjne dla aplikacji, kliknij przycisk Konfiguracja (Configuration) znajdujący się we właściwościach katalogu, a wtedy zobaczysz okno dialogowe, które prezentuje rysunek 2.33.

Rysunek 2.33. Odwzorowania aplikacji Pierwsza zakładka zawiera Odwzorowania aplikacji (App Mappings). Te odwzorowania informują IIS o tym, jakie programy wspierające uruchomić, kiedy strona o określonym rozszerzeniu zostaje wywoływana. Kliknij na przykład rozszerzenie .asp znajdujące się na liście i wybierz Edytuj (Edit). Powinieneś wtedy ujrzeć okno ustawień pokazane na rysunku 2.34.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

56

Rysunek 2.34. Odwzorowanie rozszerzenia aplikacji Pierwsze pole okna zawiera nazwę programu, który będzie przetwarzał stronę. W drugim polu znajduje się rozszerzenie, które musi mieć strona, aby mogła zostać przetworzona przez określony program wykonywalny. W trzecim polu możesz wpisać dowolną metodę HTTP, której nie chcesz uruchamiać wraz z programem wykonywalnym. Dla ASP będziesz mógł zaznaczyć w polu wyboru, że jest to moduł skryptu. Pole wyboru Sprawdź czy plik istnieje (Check that file exist) nie jest potrzebna przy ASP. Przypis

Jeśli kiedykolwiek znajdziesz się w takiej sytuacji, że podczas próby wyświetlenia strony ASP ujrzysz jedynie sam kod ASP, prawdopodobnie brak jest odpowiedniego zapisu w oknie pokazanym na rysunku 2.34. Musisz go dodać do twoich Odwzorowań aplikacji.

Przejdź teraz do drugiej zakładki okna — Opcji aplikacji (App Options), pokazanego na rysunku 2.35.

Rysunek 2.35. Opcje aplikacji

57

ASP – Kompendium programisty

Pierwszą rzeczą, jaką możesz zrobić w tej zakładce to uaktywnienie stanu sesji. Jak wspomniano we wcześniejszym podrozdziale, pojęcie stanu odnosi się do możliwości zapamiętywania zmiennych, które są widoczne dla wszystkich stron poza bieżącą stroną aplikacji. Aby na to zezwolić, musisz uaktywnić stan sesji. Wtedy będziesz mógł ustalić czas trwania sesji. Ta wartość przedstawia w minutach czas, po upłynięciu którego sesja odwiedzającego uważana jest za zakończoną. Jeśli wartość ta będzie wynosić 20 minut, to przed upływem tego czasu odwiedzający będzie musiał przejść do następnej strony. W przeciwnym razie wszystkie informacje sesji zostaną utracone. Jeśli zaznaczono pole Uaktywnij buforowanie (Enable buffering), strona ASP będzie musiała zakończyć całe przetwarzanie przed wysłaniem wyniku w postaci HTML do przeglądarki. Zaznaczenie pola wyboru Uaktywnij ścieżki nadrzędne (Enable parent paths) pozwala na adresowanie względne katalogu nadrzędnego. Pole Domyślnego języka ASP (Default ASP language) określa skrypt, z którego korzysta twoja strona ASP. Pole Czas trwania skryptu ASP (ASP Script timeout) zapamiętuje czas w sekundach, w którym strona musi wykonać cały swój kod, inaczej nastąpi jej wyłączenie. Może tak się zdarzyć z wielu powodów: serwer może być zbyt zajęty, ilość danych zwracanych jest zbyt duża lub kod natrafił na nie kończącą się pętlę. Trzecia zakładka zawiera opcje usuwania błędów (Rysunek 2.36).

Rysunek 2.36. Opcje usuwania błędów aplikacji ASP Jeśli zaznaczysz opcję Usuwanie błędów skryptu po stronie serwera (Server-Side Script Debugging), możesz ustawić punkty kontrolne dla twojego kodu i zatrzymać jego wykonywanie, a wtedy debugger przystąpi do jego analizy. Usuwanie błędów zostało omówione szerzej w rozdziale 12. Opcja Usuwanie błędów skryptu po stronie klienta (Client-Side Script Debugging) nie ma w tej chwili znaczenia. Późniejsze wersje serwera IIS mogą korzystać z tej opcji. Kiedy w twoim kodzie pojawi się błąd, przeglądarce wysyłana jest wiadomość. Może ona zawierać dokładne informacje obejmujące numer błędu, opis oraz linię kodu, w której wystąpił. Aby skorzystać z tej funkcji, zaznacz pole Szczegółowa wiadomość o błędzie (Detailed error message). Drugą możliwością jest tutaj wyświetlenie ogólnej wiadomości tekstowej.

Rozdział 2 – Serwer IIS widziany z perspektywy twórcy stron

58

Witryny FTP Oprócz witryn WWW, na serwerze IIS mogą również znajdować się witryny FTP, które umożliwiają łatwe pobieranie i przekazywanie plików serwera. Domyślna witryna FTP jest instalowana wraz z serwerem IIS. Aby zainstalować nową witrynę FTP kliknij prawym przyciskiem myszy ikonę komputera, na którym ma się ona znaleźć, a następnie wybierz Nowy (New) i Witryna FTP (FTP Site). Konfiguracji nowej witryny FTP dokonuje się poprzez okno Właściwości (Properties), które pojawi się, kiedy klikniesz ikonę witryny prawym przyciskiem myszy. Wygląd okna prezentuje rysunek 2.37.

Rysunek 2.37. Właściwości witryny FTP Zauważ, że podobnie jak to było w wypadku właściwości usługi WWW, również właściwości usługi FTP są dziedziczone przez witryny FTP. W tej pierwszej zakładce ustalasz informacje służące identyfikacji witryny. Możesz ustalić również maksymalną liczbę połączeń, a także czas rozłączenia. Czas rozłączenia (Timeout) określa w sekundach, kiedy nastąpi rozłączenie użytkownika, który pozostaje nieaktywny. Tak jak w wypadku witryn WWW, możesz monitorować korzystanie z witryny FTP. Jeśli klikniesz przycisk Bieżące sesje (Current Sessions), ujrzysz listę aktualnych użytkowników witryny. W zakładce Konta bezpieczeństwa (Security Accounts), pokazanej na rysunku 2.38 określisz, kto będzie mógł uzyskiwać dostęp do witryny FTP.

59

ASP – Kompendium programisty

Rysunek 2.38. Konta bezpieczeństwa FTP Jeśli wybierzesz Dostęp anonimowy (Anonymous Access), każdy będzie mógł korzystać z twojej witryny FTP. Prawdopodobnie zezwolisz na dostęp do witryny jedynie niektórym odwiedzającym. Możesz to zrobić w dolnej części zakładki. Inne właściwości witryny FTP pozwalają na określenie powitania i pożegnania, które będą widoczne dla odwiedzających witrynę. Możesz również określić nazwę fizycznego katalogu, który będzie pełnił rolę punktu wejścia. Ponadto możesz odrzucić bądź zaakceptować niektóre adresy IP.

Rozdział 3. Narzędzia pracy Przegląd aplikacji do tworzenia stron W tym rozdziale przyjrzymy się narzędziom, z których możesz skorzystać podczas tworzenia witryn WWW, kodu HTML, formularzy, a w szczególności stron ASP. Nasze rozważania rozpoczniemy od omówienia najbardziej podstawowego narzędzia, które powinieneś już posiadać, Notatnika. Przekonasz się, że przy użyciu jedynie Notatnika możesz stworzyć swoją własną stronę ASP. Następnie zwrócimy uwagę na parę innych narzędzi, których możesz użyć do tworzenia stron WWW. Te narzędzia, FrontPage 2000 i NetObjects Fusion, posiadają szybki i intuicyjny interfejs do budowania witryn i stron. Przyjrzymy się również dodawaniu elementów do stron przy użyciu tych narzędzi oraz tworzeniu formularzy. Potem skupimy się na narzędziach używanych do tworzenia kodu stron ASP, a na samym początku będzie to NetObjects ScriptBuilder 3.0. To narzędzie tworzenia zawiera wspaniały interfejs, który powoduje, że tworzenie bloków kodu jest niesamowicie proste. Przyjrzymy się również Visual InterDev Microsoftu. Jeśli jesteś zaznajomiony z jakimkolwiek produktem serii Visual Studio, przyjemnie zaskoczy cię jego podobny układ i funkcjonalność.

Notatnik Jeśli masz komputer z zainstalowanym systemem Windows jakiejkolwiek wersji, to już posiadasz narzędzie do tworzenia stron ASP i pracy z nimi — to narzędzie to Notatnik. Strony WWW i ASP są stworzone po prostu przy użyciu tekstu, dlatego jedyną rzeczą, której potrzeba do ich tworzenia i pracy z nimi jest edytor tekstu. Notatnik lub jakikolwiek inny edytor tekstu, świetnie będzie wspomagał tworzenie i edycję stron HTML i ASP. Naprawdę, czasami to wszystko czego potrzebujesz. Osobiście posiadam duży wybór narzędzi do tworzenia stron WWW, witryn oraz stron ASP, ale w dalszym ciągu od czasu do czasu używam Notatnika. Jednym z powodów jest tutaj prostota ładowania tego edytora tekstu przy jego olbrzymich możliwościach twórczych. Kolejnym powodem do rozważenia możliwości użycia edytora tekstu jest fakt, że jest on dostępny nawet na mniej zaawansowanych technologicznie komputerach. Zawsze powinieneś znaleźć na nich edytor tekstu, a jeśli istnieje możliwość połączenia z twoim serwerem internetowym, na bieżąco możesz dokonywać modyfikacji stron. Ponadto w przypadku prostego HTML, to bardzo ważne, aby okresowo przeglądać swój naturalny kod. Przekonasz się, że wiele narzędzi używanych do tworzenia stron i witryn WWW dodaje liczne linie kodu układu tabeli, które mogą być swobodnie usunięte co spowoduje, że twoja strona stanie się dużo mniejsza i będzie się ładowała dużo szybciej. Spójrzmy na przykład poniższego kodu HTML, który został wygenerowany przez narzędzie tworzenia witryn, zwane NetObjects Fusion, które omówimy później:



All invitations and accessories priced at a 25% discount!



Prawie identyczne wyjście można uzyskać z następującego kodu HTML:

All invitations and accessories priced at a 25% discount!



Ten kod jest objętościowo jedynie ułamkiem tego poprzedniego, tak więc strona będzie wyświetlana znacznie szybciej. Jedyną rzeczą, o której należy pamiętać używając Notatnika jako edytora stron ASP jest nadanie plikowi odpowiedniego rozszerzenia. Notatnik domyślnie przydziela rozszerzenie .txt. Kiedy więc zapisujesz plik napisany w Notatniku, upewnij się, czy przydzieliłeś mu właściwe rozszerzenie, jak to pokazano na rysunku 3.1.

Rozdział 3 – Narzędzia pracy

62

Rysunek 3.1. Przydzielanie właściwego rozszerzenia w Notatniku

FrontPage 2000 FrontPage 2000 jest narzędziem Microsoftu, które możesz wykorzystać do tworzenia pojedynczych stron i witryn WWW. Ponieważ FrontPage jest produktem Microsoftu, jest zaprojektowany tak, aby współpracował z serwerem IIS, umożliwiając natychmiastową modyfikację witryny WWW; używając innych narzędzi musisz w zasadzie załadować stronę na serwer.

Środowisko pracy Rysunek 3.2 pokazuje środowisko, w którym strona WWW jest przeglądana. Widok pokazany na tym rysunku jest widokiem strony, którą przejrzeć można naciskając przycisk Strona (Page) w pasku narzędziowym znajdującym się po lewej stronie ekranu. Kiedy przycisk zostanie naciśnięty, w środku okna ukaże się panel prezentujący zawartość bieżącego folderu. W tym przypadku katalog macierzysty FrontPage nazywa się fpsample.

63

ASP – Kompendium programisty

Rysunek 3.2. Środowisko pracy FrontPage w czasie przeglądania strony WWW W prawym panelu okna FrontPage prezentowana jest zawartość aktualnie wybranej strony WWW. Klikając dowolną stronę w panelu środkowym, uaktywniamy ją w prawym panelu. W prawym panelu dostępne są trzy rodzaje widoków strony. Pierwszy z nich, pokazany na rysunku 3.2, to widok normalny, gdzie możliwe jest graficzne dodawanie i edycja elementów strony. Jeśli zmienisz widok na HTML, ujrzysz sam kod HTML (Rysunek 3.3.). W widoku normalnym możesz edytować kod HTML, aby dodać skrypty lub kod ASP. Możesz go użyć również jako narzędzia szkoleniowego, pokazującego co dzieje się ze stroną, gdy dodajesz do niej różne elementy.

Rysunek 3.3. Widok HTML strony WWW w programie FrontPage

Rozdział 3 – Narzędzia pracy

64

Trzecim widokiem jest podgląd. Dzięki temu widokowi pokazanemu na rysunku 3.3 sprawdzisz, jak strona będzie wyglądała w przeglądarce. Ta prosta opcja pozwala na szybki podgląd wyjściowej postaci strony.

Rysunek 3.4. Podgląd strony Przypis

Podgląd jest uruchamiany po stronie klienta. Oznacza to, że każdy kod po stronie klienta również będzie widoczny, ale żadna z twoich stron ASP nie zostanie przetworzona.

Kolejnym widokiem głównym (dostępnym w lewym panelu okna) jest widok Foldery (Folders), co pokazano na rysunku 3.5. Widok ten pozwala na zarządzanie plikami i folderami twojej witryny. Ze środkowego panelu korzystasz w celu wyszukiwania katalogów. W tym samym czasie panel prawy pokazuje zawartość wybranego folderu. Rozszerzona informacja o każdym z nich zawierająca nazwę, tytuł, datę modyfikacji oraz komentarze, jest prezentowana w prawym panelu. Tak więc korzystając z tego widoku w prosty sposób możesz zlokalizować pliki, dodawać do nich zadania, przeglądać ich strukturę oraz sortować je po którymkolwiek z pól.

65

ASP – Kompendium programisty

Rysunek 3.5. Widok Foldery w programie FrontPage Aby dodać komentarz do pliku, kliknij jego ikonę prawym przyciskiem myszy i wybierz Właściwości (Properties). Następnie kliknij zakładkę Skrót (Summary) i wpisz swój komentarz (Rysunek 3.6.). Komentarz możesz dodać do każdego pliku witryny.

Rysunek 3.6. Okno dialogowe wykorzystywane w celu dodawania komentarza do pliku Kolejny widok — Raporty (Reports) — pozwala na przejrzenie rozmaitych raportów dotyczących twojej witryny WWW. Krótki raport domyślny jest pokazany na rysunku 3.7.

Rozdział 3 – Narzędzia pracy

66

Rysunek 3.7. Widok Raporty Przeglądu dodatkowych raportów możesz dokonać wybierając Raporty (Reports) z menu Widok (View). Dzięki temu wygenerujesz listę wolnych stron, starych plików, dodanych ostatnio plików, przerwanych łącz i wielu innych. Niektóre z tych raportów można nawet skonfigurować wybierając Narzędzia (Tools), Opcje (Options), a następnie przeglądając zakładkę Widok raportów (Reports View). Tutaj możesz określić, ile maksymalnie dni ma mieć plik, aby był zakwalifikowany jako nowy. Tak samo zakwalifikować możesz plik jako stary, ustalając minimalną liczbę dni. Możesz również ustalić liczbę sekund, która musi upłynąć podczas ładowania strony, aby uznać ją za wolną. Następnym widokiem, pokazanym na rysunku 3.8, jest Nawigacja (Navigation). Ten widok pozwala na projektowanie logicznego układu witryny. Tutaj możesz dodawać strony do schematu poprzez przeciągnięcie ich z listy folderów do prawego panelu. Tam strony mogą zostać połączone w układ logiczny. W widoku nawigacji możesz usunąć dowolną stronę z witryny bez obawy o to, że plik zostanie usunięty z sieci.

67

ASP – Kompendium programisty

Rysunek 3.8. Widok Nawigacji w programie FrontPage 2000 Przycisk Hiperłącza (Hyperlinks) uruchamia kolejny graficzny widok twojej witryny WWW. Wybierając daną stronę z listy folderów, w prawym panelu ujrzysz jej wszystkie łącza. Ostatnim z widoków są Zadania (Tasks), co pokazano na rysunku 3.9. Prezentuje on działania, które należy podjąć podczas tworzenia witryny WWW. Zadania przydzielane są osobom — mają swój priorytet, status, datę i opis.

Rysunek 3.9. Widok Zadań w programie FrontPage 2000 Możesz mieć przydzielone zadanie ogólne, nie odnoszące się do żadnego szczególnego zadania z listy. Na przykład możesz przydzielić zadanie rejestracji witryny w wyszukiwarce; być może zadaniem będzie ukończenie schematu strony. Aby dodać zadanie ogólne, najpierw upewnij się, czy znajdujesz się w widoku

Rozdział 3 – Narzędzia pracy

68

zadań. Następnie wybierz z menu Edycja (Edit) Zadania (Tasks) i Dodaj zadanie (Add Task). Powinieneś zobaczyć okno pokazane na rysunku 3.10.

Rysunek 3.10. Dodawanie zadania w oknie dialogowym Nowe zadanie W oknie dialogowym Nowe zadanie (New Task) przydzielasz zadanie określonej osobie. Możesz również ustalić priorytet zadania oraz podać jego opis. Kiedy naciśniesz przycisk OK, nowe zadanie zostanie dodane do listy w widoku Zadania. Możesz również przydzielić zadania plikom i folderom w witrynie WWW. Robi się to poprzez wybranie strony z listy folderów, a następnie kliknięcie jej prawym przyciskiem myszy oraz wybranie pozycji Dodaj zadanie (Add Task). Kolejne kroki są takie same jak przy dodawaniu zadania ogólnego. Widok Zadania jest wykorzystywany do zarządzania. Kiedy klikniesz dowolne zadanie prawym przyciskiem, możesz wybrać Rozpocznij zadanie (Start Task), co spowoduje, że przeniesiesz się do pliku związanego z tym zadaniem. Możesz również oznaczyć zadanie jako zakończone klikając je prawym przyciskiem. Zadanie zakończone ma inną ikonę, co ułatwia jego rozpoznanie spośród zadań niezakończonych.

Tworzenie sieci Web W programie FrontPage termin sieć Web odnosi się do nazwy domeny lub podkatalogu, gdzie witryna WWW będzie umieszczona. FrontPage dysponuje kreatorem, którego możesz użyć do stworzenia nowej sieci Web. Aby skorzystać z kreatora wybierz menu Plik (File), Nowa (New), a następnie Sieć Web (Web). Powinieneś ujrzeć dialog wyboru witryn, pokazany na rysunku 3.11.

69

ASP – Kompendium programisty

Rysunek 3.11. Dialog wyboru witryn Bez względu na typ witryny, którą wybierzesz, będziesz musiał podać jej położenie. Jeśli serwer jest oddalony, możesz być zapytany o nazwę użytkownika oraz hasło komputera NT, na którym zainstalowany został serwer IIS. W tym miejscu będzie stworzona twoja witryna. Jeśli pracujesz z witryną i zapisujesz na bieżąco zmiany, będą one natychmiastowo przenoszone na serwer. Zwróć uwagę na duży wybór sieci Web. Jeśli wybierzesz pojedynczą stronę, kreator stworzy ją w jednym tylko w jednym kroku, a niezbędne pliki zostaną umieszczone na serwerze. Inne kreatory są nieco bardziej złożone. Weźmy na przykład kreatora prezentacji firmy. Na samym początku wybierasz strony, które chcesz włączyć do witryny (zobacz rysunek 3.12.).

Rysunek 3.12. Wybór stron witryny prezentującej firmę Dla każdej strony wybierasz elementy, które mają się na niej pojawić. Zaraz po tym, jak kreator wygeneruje stronę, twój wybór zostanie uwzględniony w szablonie strony, który posiada wolne miejsce na dodatkową zawartość. Kreator zapyta cię również o wybór tematu, będącego ogólnym wyglądem twojej witryny, zawierającego kombinację banerów, tła, stylu czcionki i innych elementów. FrontPage zawiera mnóstwo tematów. Możesz je

Rozdział 3 – Narzędzia pracy

70

wybierać bądź zmieniać korzystając z menu Format, a następnie zaznaczając Temat (Theme). Zobaczysz wtedy okno dialogowe pokazane na rysunku 3.13.

Rysunek 3.13. Wybór tematu dla witryny Temat możesz zastosować do dowolnej ilości stron twojej witryny. Możesz również modyfikować wygląd tematu. Staraj się jednak uważnie korzystać z tych gotowych tematów. Pamiętaj, że FrontPage jest bardzo popularny i każdy twórca korzystający z niego posiada te same tematy, co ty. Tak więc ktoś, kto odwiedza twoją witrynę, a wcześniej przeglądał inne stworzone przy użyciu FrontPage, może stwierdzić, że twoja witryna nie jest niczym wyjątkowym.

Przeglądanie strony Jak mogliśmy się zorientować z wcześniejszych kart tego rozdziału, najprostszą i najszybszą metodą przeglądania strony, nad którą pracujesz to wybrać Podgląd (Preview) w trybie Strona (Page) — pozwala to jednak tylko na szybki przegląd. Ty natomiast chciałbyś może zobaczyć, jak twoja strona będzie widziana przez wolnostojącą przeglądarkę. Da się to zrobić wybierając w menu Plik (File) opcję Widok w przeglądarce (Preview in Browser). Wyświetlone zostaje okno dialogowe pokazane na rysunku 3.14.

Rysunek 3.14. Okno dialogowe Widok w przeglądarce To narzędzie podglądu pozwala na wybranie typu przeglądarki, za pomocą której chcesz przeglądać witrynę. To bardzo ważne, aby zobaczyć jak wygląda witryna we wszystkich tych przeglądarkach, których mogą

71

ASP – Kompendium programisty

używać potencjalni użytkownicy, ponieważ czasami strona różnie zachowuje się w różnych typach przeglądarek. Możesz również uzupełnić listę dodatkowymi przeglądarkami klikając przycisk Dodaj (Add). Wpisujesz wtedy nazwę nowej przeglądarki, która pojawi się następnie na liście. Zauważ również, że można dokonać wyboru rozmiaru okna. Pamiętaj, że odwiedzający mogą mieć monitor o rozmiarze innym od tego, który ty posiadasz. Dlatego sprawdź, jak wygląda twoja witryna WWW na monitorach różnego rozmiaru. Następnie, na podstawie tego podglądu, będziesz mógł wyregulować końcowy wygląd twojej witryny. FrontPage posiada jeszcze jedno narzędzie, które jest pomocne w radzeniu sobie z różnicami pomiędzy przeglądarkami. Znajdując się w widoku Strona (Page), wybierz Opcje strony (Page Options) z menu Narzędzia (Tools). Następnie wybierz zakładkę Kompatybilność (Compatibility). Zobaczysz okno dialogowe pokazane na rysunku 3.15. Tutaj możesz wybrać przeglądarkę docelową dla tej strony, jej wersję oraz serwer, na który strona będzie wysyłana. W oparciu o dokonane wybory, różne pola wyboru poniżej będą aktywowane bądź dezaktywowane. To samo stanie się z pozycjami menu programu FrontPage.

Rysunek 3.15. Kompatybilność strony Możesz również wybrać typ i wersję przeglądarki oraz typ serwera według własnych potrzeb. W tym wypadku ręcznie określasz technologie, które mają obsługiwać stronę, zaznaczając bądź odznaczając dowolne pola wyboru znajdujące się na dole okna.

Dodawanie strony Możesz dodać nową stronę WWW lub ASP do sieci Web stworzonej w programie FrontPage wybierając Nowa (New), Strona (Page) z menu Plik (File). Kiedy to uczynisz, zobaczysz kolejny ekran wyboru, który prezentuje rysunek 3.16. W tym dialogu możesz dokonać wyboru spośród wielu szablonów stron. Te wzorcowe strony przeprowadzą cię przez kreator, dzięki któremu stworzysz nową stronę, uzupełniając szablon odpowiednimi informacjami. Możesz również wybrać szablon nazwany Stroną normalną (Normal Page), który jest po prostu pustą stroną. Zakładka Strony ramek (Frames Pages) zawiera więcej szablonów, ale są one zbudowane przy użyciu ramek.

Rozdział 3 – Narzędzia pracy

72

Rysunek 3.16. Dialog wyboru szablonu strony WWW Kiedy przejdziesz przez wszystkie kroki kreatora, twoja nowa strona zostanie wyświetlona. Kiedy będziesz chciał ją zapisać, zostaniesz zapytany o tytuł strony i nazwę pliku. To w tym miejscu ustalasz, czy dana strona jest stroną ASP czy jakiegoś innego typu. Po prostu określ odpowiednio rozszerzenie pliku. Pamiętaj jednak, że nawet jeśli dasz plikowi rozszerzenie .asp, to i tak kod strony serwera nie zadziała dopóki nie zostanie przetworzony przez serwer. Kiedy już stworzyłeś stronę ASP, możesz przejść do widoku HTML i ręcznie dodać twój kod do strony.

Praca ze stroną Znajdując się w widoku normalnym strony możesz zacząć wpisywać do niej tekstową zawartość. Możesz również formatować tekst podobnie jak w każdym innym programie Microsoft Office przy użyciu paska formatowania, pokazanego na rysunku 3.17.

Rysunek 3.17. Pasek formatowania Pierwsza lista rozwijana paska narzędziowego pozwala na wybór typu elementu HTML, który zostanie użyty dla tego tekstu, na przykład H1 lub OL. Następnie możesz określić rodzaj i rozmiar czcionki oraz atrybuty akapitu. Jeśli potem spojrzysz na kod HTML strony, zobaczysz, że twoje zmiany zamieniły się w odpowiednie znaczniki HTML. Jak pokazano na rysunku 3.18, inne elementy HTML dodaje się do strony WWW w menu Wstaw (Insert).

73

ASP – Kompendium programisty

Rysunek 3.18. Menu Wstaw w widoku strony Wybór większości elementów w tym menu, uruchamia kreatora lub dialog uzyskujący od ciebie informacje potrzebne podczas dodawania nowego elementu do strony. Na przykład jeśli wybierzesz Hiperłącze (Hyperlink), program poprosi cię o podanie położenia pliku, do którego odnosi się łącze lub o wybranie strony w sieci Web. Dodawania elementów formularza dokonuje się w ten sam sposób, wybieramy któryś z podpunktów opcji Formularz (Form) dostępnej w menu Wstaw (Insert). Możesz dodać formularz na dwa sposoby. Po pierwsze, wstawienie pojedynczego elementu. Jeśli przykładowo chciałbyś wstawić pojedyncze pole tekstowe, wybierasz odpowiednią pozycję z menu Formularza, a FrontPage doda ten element w ramach jego własnego znacznika form do twojej strony WWW i wyświetli widok pokazany na rysunku 3.19.

Rysunek 3.19. Pojedyncze pole formularza

Rozdział 3 – Narzędzia pracy

74

Możesz wtedy określić działania, które należy podjąć oraz inne właściwości formularza klikając na nim prawym przyciskiem myszy, a następnie wybierając Właściwości Formularza (Form Properties). W ten sam sposób możesz dodać inne formularze. Jeśli formularz ma być bardziej złożony, możesz również wybrać w podmenu punkt Formularz (Form). Stworzony zostanie wtedy formularz z przyciskami Prześlij (Submit) oraz Skasuj (Reset). Następnie dodajesz elementy to tego formularza wybierając je z podmenu w czasie, gdy sam formularz jest zaznaczony. Jeśli klikniesz prawym przyciskiem myszy którykolwiek z elementów formularza, możesz przejrzeć jego właściwości wybierając Właściwości pola formularza (Form Field Properties). Odpowiednie okno dialogowe pokazuje rysunek 3.20.

Rysunek 3.20. Właściwości pola formularza Różne typy elementów formularza mają różne, odpowiadające im dialogi. Przycisk Sprawdź poprawność (Validate) pozwala na stworzenie ograniczeń typu i wartości zapisu wprowadzanego w pole formularza po stronie klienta.

NetObjects Fusion Kolejnym narzędziem tworzenia witryn WWW jest NetObjects Fusion, http:\\www.netobjects.com. NetObjects posiada duży wybór narzędzi wspierających projektowanie. W dalszej części rozdziału zwrócimy uwagę na jedno z nich zwane ScriptBuilder, posiadające wspaniały interfejs do pracy z kodami stron ASP. Możesz pobrać pełną, 30-dniową wersję tego programu z wymienionej wyżej witryny WWW. Jak będziesz mógł się przekonać z treści tego rozdziału, największą korzyścią płynącą z pracy z NetObjects Fusion to kontrola, jaką sprawujesz nad układem elementów strony. Narzędzie to pozwala na umieszczanie elementów w dowolnej części strony, tak jak gdybyś projektował formularz w Visual Basic lub Access. NetObjects bazuje na niewidzialnych tabelach i grafikach generowanych w HTML w celu zapewnienia kompletnej swobody w rozmieszczaniu elementów na stronie.

Środowisko pracy Fusion posiada pięć głównych widoków: Witryna (Site), Strona (Page), Styl (Style), Zasoby (Assets) oraz Publikacja (Publish). Zmiany widoku dokonuje się klikając jedną z ikon z nazwami widoków, które znajdują się w pasku narzędziowym tuż pod menu. Widok Witryna (Site) jest pokazany na rysunku 3.21. Jest to miejsce, od którego prawdopodobnie rozpoczniesz proces tworzenia, ponieważ właśnie w tym widoku możesz przeglądać strony znajdujące się w witrynie, dodawać je oraz usuwać. Strony są prezentowane w hierarchii logicznej. Jako że jest to widok logiczny, a nie fizyczny, nie możesz zapobiec połączeniom ze stronami spoza hierarchii. Widok ten wykorzystywany jest przez twórców do przemyślenia i zorganizowania logicznej struktury witryny WWW.

75

ASP – Kompendium programisty

Rysunek 3.21. Widok Witryna programu NetObjects Fusion Dodania strony do witryny dokonuje się przy użyciu klawisza Insert. Strona zostanie dodana jako potomna do dowolnej strony, która w tym czasie będzie zaznaczona. Na rysunku 3.21. zaznaczona jest strona Home, tak więc naciśnięcie klawisza Insert spowoduje dodanie właśnie do niej strony potomnej. Możesz usunąć stronę klikając ją prawym przyciskiem, a potem przyciskając klawisz Delete. Każda strona posiada swoje właściwości, które wyświetlane są w zakładce Właściwości (Properties) w małym oknie dialogowym. Pokazane jest ono w prawym dolnym rogu rysunku 3.21. W dialogu Właściwości (Properties) możesz zmienić nazwę bieżącej strony przez wpisanie jej do pola tekstowego Nazwa (Name). Jeśli naciśniesz przycisk Dostosowanie nazwy (Custom Names), powinieneś ujrzeć okno pokazane na rysunku 3.22.

Rysunek 3.22. Okno dialogowe Dostosowanie nazwy Tworząc stronę w NetObjects, możesz dodać baner lub przycisk wyszukiwania. W oknie dialogowym dostosowania nazw możesz określić tekst, który będzie się pojawiał na tych elementach strony. Tutaj możesz również nadać plikowi odpowiednie rozszerzenie. We właściwościach strony możesz umieścić również informacje związane z zarządzaniem twojej witryny. Możesz wybrać kolor tła strony używany w widoku hierarchii. Możesz również określić czy dana strona jest ukończona i czy powinna być publikowana. Dodatkowe pole tekstowe pozwala na dodanie komentarza do strony. Dodatkowa zakładka w widoku witryny nosi nazwę Struktury (Outline), który pokazuje strukturę stron w postaci podobnej do tej w Eksploratorze Windows. Po lewej znajduje się lista stron pokazanych w ich poszczególnych położeniach, natomiast po prawej widoczne są wszystkie strony potomne strony bieżącej.

Rozdział 3 – Narzędzia pracy

76

Tworząc stronę korzystasz z widoku Strona (Page). Aby znaleźć się w tym widoku, kliknij dwa razy na tej stronie w widoku witryny, z którą chcesz pracować. Zobacz rysunek 3.23.

Rysunek 3.23. Widok Strona programu Fusion Będąc już w widoku strony, możesz dostać się do innych stron na kilka sposobów. Możesz skorzystać ze strzałek znajdujących się w lewym dolnym rogu, aby poruszać się między poziomami w hierarchii lub pomiędzy stronami znajdującymi się na ty samym poziomie. Strzałki pozwalają na poruszanie się w hierarchii pokazanej w widoku witryny. Możesz również nacisnąć przycisk z czterema strzałkami, znajdujący się obok strzałek pojedynczych. Kiedy przycisk jest naciśnięty, małe okno wyszczególnia listę stron w formie hierarchii. Możesz również poszukiwać stron naciskając przycisk Przejdź do (Go to) w prawym górnym rogu ekranu. Kiedy przycisk zostaje naciśnięty, program pyta cię o podanie części nazwy strony, którą chcesz znaleźć. Jeśli naciśniesz przycisk Ostatnia (Last), umieszczony w prawym górnym rogu ekranu, przeniesiesz się do strony, którą ostatnio otwierałeś. Wzdłuż lewej strony okna umieszczono liczne elementy i składniki, które możesz włączyć do swojej strony. Większa ilość tych elementów dostępna jest w menu Widok (View), Paski narzędzi (Toolbars), gdzie wybrać można te paski, które aktualnie nie są prezentowane. Przyjrzymy się dokładnie niektórym z tych elementów nieco dalej w tym podrozdziale. Sama strona ma wiele właściwości, które możesz ustawić. Jeśli chcesz im się przyjrzeć, kliknij daną stronę prawym przyciskiem myszy i wybierz Właściwości układu strony (Layout Properties). W zakładce Ogólne (General) możesz ustalić rozmiar strony i sposób wykonania jej układu. Druga zakładka tego okna to Tło (Background). Tutaj ustalasz kolor tła strony, obrazy tła oraz jego dźwięki. Kolejnym widokiem głównym programu Fusion jest Styl (Style), który odnosi się do domyślnych czcionek, kolorów, przycisków i grafik witryny, ich domyślnego wyglądu. Widok ten jest zaprezentowany na rysunku 3.24. Lewą stronę ekranu zajmuje długa lista stylów. Po prawej mamy podgląd wybranego stylu, który uzyskujemy przez kliknięcie go w lewym panelu. Kiedy już wybrałeś styl dla twojej witryny, kliknij przycisk Ustaw Styl (Set style).

77

ASP – Kompendium programisty

Rysunek 3.24. Widok Styl programu Fusion Możesz również edytować każdy element istniejącego stylu. Przypuśćmy na przykład, że chciałbyś użyć stylu Urban Legend, ale tło ma być inne. Modyfikacji tła stylu dokonasz wybierając Styl (Style), Edytuj element (Edit Element), oraz Tło (Background). Pokaże się wtedy okno dialogowe, takie jak na rysunku 3.25. Podobnie edytuje się inne elementy stylu.

Rysunek 3.25. Modyfikacja stylu Jeśli nie chcesz korzystać z gotowych stylów, możesz stworzyć swój własny. Po prostu wybierz Styl (Style) i Nowy styl (New Style). Zostaniesz poproszony o podanie nazwy dla twojego stylu, a potem możesz już zacząć tworzyć jego elementy. Kolejny widok główny Fusion to Zasoby (Assets), który wyszczególnia pliki, łącza, obiekty danych oraz zmienne mające związek z twoją witryną. Ten widok pokazany jest na rysunku 3.26.

Rozdział 3 – Narzędzia pracy

78

Rysunek 3.26. Widok Zasoby programu Fusion NetObjects Fusion obserwuje wszystkie pliki i łącza, które kiedykolwiek były związane ze stroną. Jeśli więc zdecydujesz się na dodanie łącza bądź obrazka do witryny, możesz wybrać je z listy plików i łącz, które już są jej częścią. Możesz również użyć tego widoku do usuwania niepotrzebnych elementów z twojej witryny. Po prostu wybierz odpowiedni element i naciśnij klawisz Delete. Możesz również korzystać z tego widoku podczas globalnego zastępowania zasobu. Załóżmy, że posiadasz łącze z witryną usytuowaną poza twoją własną, z którą łączysz się z różnych miejsc twojej witryny. Jeśli chcesz zmienić to łącze na jakieś nowe i zmiana ma być globalna, znajdź je na liście w zakładce Łącza (Links). Następnie kliknij dwukrotnie wybrane łącze i wpisz nowy adres URL. Ostatni widok programu to Publikacja (Publish), gdzie określasz sposób i miejsce publikowania twojej witryny. Ten widok, pokazany jest na rysunku 3.27, prezentuje sposób fizycznego zapamiętywania witryny podczas jej publikowania. Na rysunku pliki są pokazane tak, jak byłyby umieszczone, gdyby były publikowane według typu. Możesz również wybrać publikację wszystkich plików w jednym katalogu lub w ich hierarchii logicznej. Aby zmienić sposób publikacji plików oraz ustawić inne właściwości, naciśnij przycisk Ustawienia (Setup). Powinieneś ujrzeć okno dialogowe pokazane na rysunku 3.28.

79

ASP – Kompendium programisty

Rysunek 3.27. Widok Publikacja programu Fusion

Rysunek 3.28. Okno dialogowe Ustawienia publikacji W pierwszej zakładce, Struktura katalogu (Directory Structure), możesz określić sposób fizycznego położenia twoich plików. Druga zakładka, Wyjście HTML (HTML Output), umożliwia zmianę generowanego układu strony oraz wykorzystywanego zestawu znaków. Zakładka trzecia, Położenie serwera (Server Location), daje możliwość określenia miejsca lub miejsc, gdzie będzie się znajdowała twoja witryna. Ta zakładka pokazana została na rysunku 3.29.

Rozdział 3 – Narzędzia pracy

80

Rysunek 3.29. Zakładka Położenie serwera dialogu Ustawienia publikacji Istnieją dwa typy publikacji: lokalna i zdalna. Każdą z nich możesz dodać klikając przycisk Dodaj (Add). Wybierając opcję Lokalna (Local) będziesz musiał po prostu podać katalog, w którym witryna będzie publikowana w twojej sieci. Jeśli wybierzesz opcję Zdalna (Remote), musisz określić położenie macierzystego komputera oddalonego, twoją nazwę użytkownika oraz hasło. Czwarta zakładka okna dialogowego wyszczególnia listę składników, które będą publikowane wraz ze stroną, jeśli w ogóle takowe istnieją. Kiedy już zakończysz dokonywanie ustawień, jesteś gotowy do publikacji twojej witryny. Dokonuje się tego klikając przycisk Publikuj (Publish). Po naciśnięciu przycisku wyświetlona zostanie lista miejsc publikacji witryny, które określiłeś w zakładce Położenie serwera (Server Location). Naciśnij OK, a twoja strona zostanie opublikowana.

Tworzenie witryny WWW przy użyciu programu Fusion Aby stworzyć nową stronę przy użyciu programu Fusion, wybierz z menu Plik (File) pozycję Nowa witryna (New Site). Jak to pokazano na rysunku 3.30, będziesz miał do wyboru trzy opcje. Wybierając opcję Pusta witryna (Blank Site), stworzona zostanie pojedyncza strona WWW; wybierając Według szablonu (From Template), zaprezentowany zostanie zbiór gotowych schematów witryn, które możesz wykorzystać jako szkielet twojej witryny; jeśli zdecydujesz się na opcję Z istniejącej witryny WWW (From Existing Web Site), program Fusion zaimportuje całą, wybraną witrynę WWW.

Rysunek 3.30. Tworzenie nowej strony

Praca ze stroną Jeśli kiedykolwiek pracowałeś z Visual Basic lub projektowałeś formularze w Microsoft Access, stosunkowo wygodnie będzie ci się pracowało ze stronami przy użyciu programu Fusion. Wszystkie elementy są kreślone

81

ASP – Kompendium programisty

na stronie. Kiedy już element się tam znajdzie, ustawiasz dla niego liczne właściwości w celu osiągnięcia pożądanego efektu. Jeśli na przykład chcesz dodać tekst do strony, wybierzesz ikonę Tekst (Text) znajdującą się w pasku narzędziowym widoku Strona (Page) po lewej stronie ekranu. Następnie wykreślisz element o odpowiednim rozmiarze. Rysunek 3.31. pokazuje stronę z nakreślonym elementem tekstowym.

Rysunek 3.31. Strona z wstawionym polem tekstowym Teraz, kiedy element jest wykreślony na stronie, możesz ustawić jego właściwości. Po pierwsze, możesz wpisać tekst, który ma się pojawiać w elemencie. Następnie określasz styl tekstu, jego tło i wiele innych właściwości przy użyciu odpowiedniego okna dialogowego. Podobne czynności wykonuje się przy dodawaniu do strony innych elementów.

NetObjects ScriptBuilder Kolejnym narzędziem NetObjects jest ScriptBuilder. To nie tylko wspaniałe narzędzie do tworzenia stron ASP. Dzięki niemu można również tworzyć skrypty wykonywane po stronie klienta oraz czysty kod HTML. W tym podrozdziale zwrócimy uwagę na tworzenie stron ASP przy użyciu NetObjects ScriptBuilder. Zobaczysz również, jak można wykorzystać funkcje tego narzędzia do ułatwienia dodawania skryptów oraz ich zatwierdzania.

Środowisko programowe Okno główne programu ScriptBuilder składa się z dwóch paneli: lewego i prawego. Lewy panel zazwyczaj zawiera listę działań lub opcji, zależnie od wybranej zakładki. Panel prawy pokazuje stronę ASP lub HTML, nad którą pracujesz. Aby otworzyć stronę w prawym panelu, wybierz Plik (File), Otwórz (Open). Okno dialogowe, które się ukaże, pozwoli ci na znalezienie pliku, który chcesz otworzyć. Kiedy chcesz stworzyć nowy plik, wybierz Plik (File), Nowy (New). Wyświetlony zostanie dialog, który pokazano na rysunku 3.32.

Rozdział 3 – Narzędzia pracy

82

Rysunek 3.32. Dialog Nowy Plik programu ScriptBuilder Następnie możesz wybrać jeden z przedstawionych w oknie szablonów, reprezentujących typ strony, jaką chcesz stworzyć. Wybrany szablon wygeneruje podstawowe znaczniki dla wybranego przez ciebie typu strony. Jeśli zdecydowałeś się przykładowo na utworzenie strony ASP, szablon stworzy stronę zawierającą znaczniki języka podstawowego, HTML, nagłówka (head), oraz treści (body). Możesz również modyfikować te szablony, w ten sposób za każdym razem, kiedy stworzysz nową stronę przy użyciu szablonu, będzie ona zawierała kod potrzebny dla tego typu pliku. Załóżmy na przykład, że posiadasz plik biblioteki, który zawsze chcesz dołączać do twoich stron ASP. Aby to zrobić, za każdym razem musisz dodawać do kodu wiersz Include dla tego pliku. Zmodyfikuj szablon strony ASP włączając do niego odpowiedni kod. W celu dokonania zmian we szablonie, wyświetl zawartość plików położonych w folderze Templates\Standard katalogu głównego ScriptBuilder. Możesz również tworzyć swoje własne szablony. Być może często potrzebujesz strony ASP mającej kod, który wykreśla graf w oparciu o dane pochodzące z zestawu rekordów — możesz stworzyć taki szablon zawierający wspólny kod. Aby wykonać taki szablon, po prostu stwórz w zwykły sposób stronę ASP lub HTML, a następnie umieść ją w folderze Templates\Custom. Te pliki dostępne są w menu Plik (File), Nowy (New), w zakładce Własne (Custom). W lewym panelu możesz wybrać zakładkę związaną z działaniami bądź opcjami, które wykorzystujesz podczas pracy ze stroną. Wybierając zakładkę Odwołanie (Reference), ujrzysz widok pokazany na rysunku 3.33. To, co tam widać to bogata biblioteka języków i technologii, które możesz wykorzystać podczas pracy z programem ScriptBuilder.

83

ASP – Kompendium programisty

Rysunek 3.33. Widok Odwołanie w lewym panelu okna Przypis

Jeśli nie widać listy rozwijanej, gdzie mógłbyś wpisać nazwę do wyszukania, kliknij małą strzałkę w górnym prawym rogu lewego panelu.

Większość odwołań pochodzi z zasobów online, co ma swoje plusy i minusy. Musisz być połączony z siecią, aby ujrzeć niektóre odwołania i punkty odwołań do stron, które już nie istnieją. Korzystne jest jednak to, że zawartość listy jest cały czas uaktualniana, ponieważ pochodzi ze znaczących obszarów odwołań firm takich jak Microsoft czy Netscape. Możesz również użyć odwołania w celu wstawienia znaczników i kodu wprost do twojej strony. Na przykład chcesz wstawić listę numerowaną HTML. Mógłbyś wybrać znacznik w odniesieniu HTML. Następnie jeśli klikniesz prawym przyciskiem odpowiednią pozycję i wybierzesz Wstaw (Insert), znaczniki listy numerowanej pojawią się w prawym panelu okna w miejscu, gdzie znajduje się kursor. Możesz też uzupełnić bibliotekę o nowe odwołania. Jeśli klikniesz prawym przyciskiem w dowolnym miejscu zakładki odwołań, powinieneś zobaczyć opcję Ustawienia (Settings). Kliknij ten punkt, a będziesz mógł przejrzeć wszystkie dostępne książki biblioteki. Ustawień innych opcji zakładki odwołań dokonasz wybierając Opcje (Options) z menu Narzędzia (Tools). Jeśli wybierzesz zakładkę Odwzorowanie (Map), zobaczysz widok, który prezentuje rysunek 3.34. Odwzorowanie odnosi się tutaj do reprezentacji dokumentu, z którym pracujesz. Odwzorowane są znaczniki i składniki, które znalazły się w dokumencie, dzięki czemu możesz szybko znaleźć te miejsca w kodzie, gdzie zostały one użyte. Gdybyś chciał odszukać miejsca, w których użyto znacznika
, kliknij dwa razy odpowiednią pozycję lewego panelu okna, a wiersz zawierający ten znacznik zostanie wyróżniony.

Rysunek 3.34. Widok Odwzorowanie programu ScriptBuilder Zakładka Pulpit (Desktop), pokazana na rysunku 3.35, pozwala na poszukiwanie w systemie plików, które chcesz wykorzystać podczas pracy z witryną. Jeśli klikniesz dwa razy dowolny plik, zostanie on otwarty w prawym panelu okna. Jeśli klikniesz prawym przyciskiem myszy obszar Pulpitu, możesz utworzyć folder oraz przejrzeć właściwości pliku.

Rozdział 3 – Narzędzia pracy

84

Rysunek 3.35. Widok Pulpit programu ScriptBuilder Jednym z najużyteczniejszych składników programu ScriptBuilder jest biblioteka skryptów. Zakładka Biblioteka skryptów (Script Library) pokazana została na rysunku 3.36. Pozwala ona na proste wstawianie gotowych bloków kodu do twojej strony WWW. ScriptBuilder zawiera wiele skryptów strony klienta i strony serwera, które możesz włączyć do twoich stron ASP i HTML.

Rysunek 3.36. Widok Biblioteka skryptów programu ScriptBuilder Lista biblioteki skryptów może być sortowana po dowolnej kolumnie, którą wybierzesz klikając jej nagłówek. Kolumny przedstawiają nazwę skryptu, użyty podczas jego tworzenia język lub technologię, jego opis oraz wersję programu Navigator lub Explorer obsługującego skrypt. Aby wstawić skrypt do twojej strony, umieść kursor w tym miejscu, gdzie ma się znaleźć oraz kliknij dwukrotnie wybrany z biblioteki skrypt. Jeśli na przykład chcesz skorzystać z procedury odczytującej znacznik

85

ASP – Kompendium programisty

kontekstu klienta (cookie), najpierw umieść kursor w odpowiednim miejscu strony ASP, gdzie procedura ma występować. Następnie kliknij dwukrotnie w lewym panelu prezentującym zbiór skryptów procedurę o nazwie ReadCookie. Od tej chwili stanie się ona częścią twojego kodu. Te wbudowane skrypty są całkowicie konfigurowalne i podatne na zmiany. Aby zmienić właściwości skryptu, kliknij go dwukrotnie i wybierz Właściwości (Properties). Ujrzysz dialog pokazany na rysunku 3.37. Tutaj możesz zmienić nazwę i opis skryptu. Możesz również wybrać jego język bądź technologię, jak również wersję przeglądarki Navigator lub Explorer, która będzie obsługiwała skrypt.

Rysunek 3.37. Dialog Właściwości skryptu Modyfikacja kodu skryptu możliwa jest w zakładce Kod (Code). Okno powiększy się tak, aby pokazać kod danej procedury (Rysunek 3.38.). Właśnie tutaj możesz wprowadzić pożądane zmiany w treści dostępnych w bibliotece skryptów. Na przykład osobiście wolę, żeby procedury ASP (do nich należy ta pokazana na rysunku 3.38.) miały od razu w swej treści znaczniki bloku kodu ASP . Mogę je tam umieścić modyfikując skrypt w tej zakładce. Kiedy zamkniesz okno kodu, program poprosi cię o potwierdzenie lub odrzucenie dokonanych zmian.

Rysunek 3.38. Okno kodu edytowanego skryptu Moją ulubioną cechą programu jest możliwość dodawania do biblioteki własnych skryptów. Zauważyłem, że wiele krótkich bloków kodu, z których stale korzystam, nie znalazło się w procedurach. Aby nie przepisywać ciągle tych samych fragmentów kodu, można je umieścić w bibliotece. Możesz dodać skrypt do biblioteki na dwa sposoby. Pierwszym z nich jest kliknięcie prawym przyciskiem w obszarze okna biblioteki i wybranie punktu Dodaj (Add). Ujrzysz wtedy puste okno kodu, takie samo, jak w wypadku edycji istniejącego skryptu. Tam wprowadzisz nowy kod skryptu. Po ukończeniu przejdź do zakładki

Rozdział 3 – Narzędzia pracy

86

Opis (Description). Tutaj wpiszesz nazwę nowego skryptu oraz jego krótki opis, wraz z wyszczególnieniem zastosowanego języka lub technologii i wersji obsługującej ten skrypt przeglądarki Navigator lub Explorer. Drugim sposobem dodania procedury do biblioteki skryptu jest odzyskanie odpowiedniego fragmentu kodu z istniejącej już strony. Możesz to zrobić wyróżniając tekst w wybranym dokumencie, a następnie klikając prawym przyciskiem zaznaczony tekst i wybierając opcję Dodaj do biblioteki skryptów (Add to Script Library). Powiedzmy, że w wielu stronach ASP łączysz się z bazą danych w ten sam sposób i chcesz, aby ten kod łączenia stał się częścią biblioteki skryptów. Wyróżnij ten fragment kodu przy użyciu myszy, a następnie kliknij prawym przyciskiem. Okno, które się wtedy pojawi, pokazane jest na rysunku 3.39.

Rysunek 3.39. Dodawanie kodu do biblioteki skryptów Jeśli wybierzesz opcję Dodaj do biblioteki skryptów (Add to Script Library), kod jest dodawany jako pozycja do biblioteki. Ponownie wpisujesz wszystkie niezbędne informacje dotyczące nowego skryptu. Kiedy skończysz, kod staje się częścią biblioteki i może być wstawiany do tworzonych stron. Ostatnią zakładką lewego panelu głównego okna programu ScriptBuilder jest Galeria składników (Component Gallery). Zawartość zakładki prezentuje rysunek 3.40. Galeria ułatwia pracę z programowalnymi, gotowymi do wstawienia składnikami. Możesz włączyć dany składnik do tworzonej strony ASP lub HTML, przeciągając go w to miejsce, w którym ma być inicjalizowany.

87

ASP – Kompendium programisty

Rysunek 3.40. Galeria składników programu ScriptBuilder Możesz określić właściwości, metody oraz zdarzenia związane z danym składnikiem, klikając go prawym przyciskiem myszy, a następnie wybierając odpowiedni punkt. Szablon właściwości, metody bądź zdarzenia jest wtedy dodawany do twojej strony. Możesz również dodać własny składnik do środowiska programu, klikając prawym przyciskiem w dowolnym miejscu Galerii składników oraz wybierając opcję Dodaj do galerii (Add to Gallery).

Praca z kodem w programie ScriptBuilder ScriptBuilder posiada wiele narzędzi wspomagających pisanie kodu i pracę z nim. ScriptBuilder wyświetla wiersze kodu w różnych kolorach, co powoduje, że kod jest bardziej czytelny i rozpoznawalny. Aby jednak z tej cechy programu skorzystać, najpierw musi on wiedzieć, z jakim językiem pracujesz. Tak więc jedną z pierwszych rzeczy, którą zrobisz będzie ustawienie domyślnego języka, który będzie wyróżniany. Wybierz z menu Widok (View) opcję Wyróżniony język (Highlighted Language), a następnie przykładowo VBScript, co pokazano na rysunku 3.41.

Rysunek 3.41. Ustawianie domyślnego języka do wyróżniania

Rozdział 3 – Narzędzia pracy

88

Kiedy język zostanie określony, kod w odpowiedni sposób wyróżniany kolorami, co czyni go łatwiejszym do odczytu. Poza tym, skoro ScriptBuilder już wie, jakiego języka używasz, może automatycznie pomagać ci w uzupełnianiu bloków kodu. Jeśli na przykład napiszesz poniższy kod wraz ze spacją: If

program uzupełni ten blok: If expression Then End If

Wyróżni nawet frazę expression, będziesz mógł więc natychmiast wpisać w to miejsce wybrane wyrażenie. Jeśli wpisałbyś ten kod wraz ze spacją: Select

ScriptBuilder zbuduje następujący blok kodu, wyróżniając w nim słowo expression: Select Case expression Case value

Case Else End Select

Możesz również zmodyfikować funkcję automatycznego tworzenia skryptów tak, aby inne kody pojawiały się przy wyborze poszczególnych instrukcji. Przykładowo możesz chcieć, aby instrukcja If zawsze była uzupełniana instrukcją Else. Takiego ustawienia możesz dokonać wybierając Narzędzia (Tools) oraz Automatyczne tworzenie skryptów (AutoScripting). Zobaczysz wtedy kompletną listę dostępnych opcji automatycznego tworzenia skryptów (zobacz rysunek 3.42).

Rysunek 3.42. Konfiguracja funkcji Automatycznego tworzenia skryptów Zauważ, że lista zawiera informacje o używanych językach. Przewijasz listę w poszukiwaniu instrukcji If dla języka VBScript. Następnie kliknij Edytuj (Edit). Wyświetli się ekran pokazany na rysunku 3.43. Tutaj możesz uzupełnić instrukcję If instrukcją Else lub dokonać jakiejkolwiek innej modyfikacji. Zwróć uwagę, że słowo expression jest wyróżnione. Kiedy wpisałeś If w kodzie strony, właśnie słowo expression było zaznaczone.

ASP – Kompendium programisty

89

Rysunek 3.43. Edycja kodu w Automatycznym tworzeniu skryptów Możesz również dodać swoje własne bloki kodu poprzez funkcję Automatycznego tworzenia skryptów, naciskając przycisk Nowy (New) w oknie dialogowym. Ukaże się ten sam dialog, co w wypadku edycji. Musisz tutaj wpisać słowo kluczowe, instrukcję, po pojawieniu się której ma wystąpić odpowiedni kod. Oprócz tego określasz język programowania dla tego kodu oraz oczywiście sam kod. Możesz również użyć tej funkcji programu, aby zastosować skróconą metodę tworzenia kodu. Jak się dowiesz z kolejnego rozdziału, często na przykład będziesz włączał do kodu wiersz Option Explicit, aby ułatwić usuwanie błędów. Możesz zapewnić sobie skrót dla tej instrukcji dzięki stworzeniu odpowiedniej pozycji w oknie Automatycznego tworzenia skryptów. Najpierw wpisz następującą kluczową frazę: ooo

Poniżej, w polu Wstawiany tekst (Text to Insert), wpisz: Option Explicit

oraz nowy wiersz. Teraz, kiedy podczas tworzenia kodu wprowadzisz ooo, pojawi się na ekranie instrukcja Option Explicit, a po niej nowy wiersz. W menu Skrypt (Script), a następnie pozycji Menu dostępna jest opcja Blok serwera (Server Block), której wybór powoduje wpisanie następującego kodu:

Tworzony jest więc blok serwera. Kiedy wybierzesz menu Narzędzia (Tools), Opcje (Options) oraz przejdziesz do zakładki Kod (Code), ukaże się ekran pokazany na rysunku 3.44. W tej zakładce możesz dokonać zmiany używanej składni bloku kodu przez ustawienie jej w polu o nazwie Typ znacznika (Tag Type).

Rozdział 3 – Narzędzia pracy

90

Rysunek 3.44. Opcje ustawień kodu W tym samym dialogu znajduje się punkt Bloki funkcji (Function Blocks). W odpowiednim polu wpisujesz tekst, który ma pojawiać się w bloku komentarza wstawianej procedury. Jeśli chcesz, aby pojawiało się twoje imię, wpisz je w pole Nazwa użytkownika (Username). Następnie możesz zaznaczyć, że twoje imię wraz z aktualną datą chcesz włączyć do nagłówka komentarza funkcji. Ta informacja jest wykorzystywana w oknie dialogowym pokazanym na rysunku 3.45, które pojawi się kiedy wybierzesz opcję Bloki funkcji (Function Blocks) z menu Skrypt (Script).

Rysunek 3.45. Wstawianie bloku funkcji Wpisujesz nazwę funkcji, a następnie opis jej działania. Kiedy naciśniesz OK, wprowadzone tutaj dane są łączone z danymi wprowadzonymi w dialogu Opcji i wytwarzany jest następujący, przykładowy blok kodu: '************************************************************* '

SampleFunction ()

' '

Tutaj wpisz szczegóły dotyczące twojej funkcji

' '

Autor: Greg Buczek

'

Data utworzenia: 8/4/99

'************************************************************* */ Function SampleFunction () End Function

Jak więc widzisz, ScriptBuilder nie jest narzędziem wizualnego projektowania stron. Możesz w prosty sposób uruchomić podgląd strony, ale nie możesz umieszczać na niej elementów metodą przeciągania i upuszczania. W programie ScriptBuilder pracujesz jedynie z kodem oraz czystym HTML.

ASP – Kompendium programisty

91

Pasek narzędziowy Znaczniki HTML (HTML Tags) pomaga jednak wstawiać znaczniki. Pasek ten pokazany jest na rysunku 3.46. Po naciśnięciu wybranego przycisku, odpowiedni znacznik jest wstawiany do twojego dokumentu w miejscu, gdzie znajduje się kursor, jeśli więc naciśniesz przycisk B, znaczniki oraz staną się częścią dokumentu. Jeśli najpierw wyróżnisz tekst do pogrubienia, a dopiero potem wybierzesz przycisk z paska, znaczniki będą umieszczone wokoło zaznaczonego tekstu.

Rysunek 3.46. Pasek narzędziowy Znaczniki HTML Naciśnięcie jednego z przycisków wyrównania tekstu powoduje wytworzenie odpowiednich znaczników akapitu. Na przykład naciśnięcie przycisku wyrównania do lewej, tworzony jest następujący HTML:



Po ikonach wyrównania w pasku umieszczono ikony wypunktowania, numerowania, akapitu, wiersza podziału oraz linii poziomej, których naciśnięcie również spowoduje pojawienie się odpowiedniego znacznika. Przyciski od H1 do H6 wytwarzają odpowiadające im znaczniki nagłówka, tak więc naciśnięcie przycisku H1 wywoła następujący HTML:

Kursor będzie znajdował się pomiędzy znacznikami, tak więc możesz od razu zacząć wpisywać tekst. Ostatnie dwa przyciski związane są odpowiednio ze znacznikami obrazu i łącza. Naciśnięcie tych przycisków spowoduje pojawienie się odpowiedniego dialogu, w którym podasz konieczne informacje. Kiedy wybierzesz ikonę Obraz (Image), zobaczysz okno pokazane na rysunku 3.47.

Rysunek 3.47. Wstawianie znacznika obrazu Wpisujesz w nim ścieżkę dostępu do obrazu, tekst pojawiający się wraz z obrazkiem lub zamiast niego, sposób wyrównania tekstu, granice, rozmiar obrazu oraz rozstaw. Znacznik obrazu tworzony jest na podstawie wprowadzonych zapisów. Kiedy naciśniesz przycisk Łącze (Link), ujrzysz dialog pokazany na rysunku 3.48. Uzupełniasz go lokalizacją, do której łącze będzie odsyłało, tekstem pojawiającym się na stronie jako łącze oraz, opcjonalnie, nazwę łącza i jego cel. Pole tekstowe Cel (Target) odnosi się do przeglądarki lub ramki, do której wysyłana jest strona. Kiedy wprowadzisz już informacje i naciśniesz OK, utworzony zostanie odpowiedni znacznik.

Rozdział 3 – Narzędzia pracy

92

Rysunek 3.48. Wstawianie znacznika łącza ScriptBuilder posiada również pasek narzędziowy elementów formularza (rysunek 3.49.). Użycie każdego ze znajdujących się w nim przycisków spowoduje wyświetlenie dialogu, w który należy wpisać odpowiednie informacje potrzebne do stworzenia pożądanego znacznika. Pierwszy przycisk służy do tworzenia samego formularza. Kiedy go naciśniesz, dialog zapyta cię o nazwę formularza, okno wyjściowej przeglądarki lub ramki, typ kodowania oraz położenie strony, do której należy odesłać użytkownika po wypełnieniu i wysłaniu formularza. Określasz również metodę przesyłania formularza, GET lub POST. Różnice pomiędzy tymi metodami omówione zostały w rozdziale 5.

Rysunek 3.49. Pasek narzędziowy Elementy formularza Rezultatem wypełnienia okna dialogowego jest stworzenie znacznika formularza w miejscu kursora, który może być podobny do tego:



Przy wyborze przycisków poświęconych elementom strony zostaniesz poproszony o podanie nieco innych informacji, zależnych od typu elementu, który wybrałeś. Przykładowo przy wyborze pola tekstowego będziesz musiał podać nazwę pola, jego wartość, długość oraz czy jest to pole z hasłem. Rezultatem może być następujący znacznik:

Jeśli jednak naciśniesz przycisk obszaru tekstowego, zostaniesz poproszony o określenie nazwy pola, domyślnego tekstu, jego rozmiaru oraz sposobu jego obramowania.

Weryfikacja kodu w programie ScriptBuilder ScriptBuilder posiada również parę narzędzi wspierających sprawdzanie napisanego przez ciebie kodu. Są to: Korektor składni (Syntax Checker) i Kontroler skryptu (Script Inspector). Jednym z błędów, które często zdarzają mi się podczas tworzenia stron ASP, jest opuszczanie nawiasów, jak w wierszu kodu poniżej: If isempty(Request.Form(" OK") then

ASP – Kompendium programisty

93

Ładuję stronę na serwer myśląc, że wszystko jest w porządku, a kiedy ją uruchamiam okazuje się, że wystąpił błąd w wierszu kodu. Wiem, w czym leży problem, ale muszę najpierw edytować tą stronę, a następnie ponownie umieścić ją na serwerze. Korektor składni jest w tym względzie bardzo pomocny. Nie znajdzie on błędów związanych z użyciem niewłaściwej metody czy właściwości obiektu i pewnie nie rozpozna błędów logicznych, ale błędy składni, podobne do tego zaprezentowanego powyżej, zostaną przez program odnalezione. Powiedzmy, że twój blok kodu wygląda następująco:

Jesteś już gotów do wysłania twojej strony do serwera, ale przedtem chcesz sprawdzić, czy nie ma w niej jakichś błędów składni. Z menu Narzędzia (Tools) wybierz opcję Korektor składni (Syntax Checker). W rezultacie tego wyboru w oknie programu ScriptBuilder pojawi się dodatkowy panel, który pokazany jest na rysunku 3.50.

Rysunek 3.50. Rezultat uruchomienia Korektora składni Zwróć uwagę na panel, który znajduje się a dole okna. Wyszczególnia on błąd w stronie w szóstym jej wierszu. Panel ten pokaże listę wszystkich błędów składni znalezionych w stronie. Jeśli klikniesz dwa razy wiadomość o błędzie, program przeniesie cię do tego wiersza, który ten błąd wywołał. Korektor składni wyszuka wiele błędów podobnych do tego. Poinformuje cię o tym, że użyłeś instrukcji If bez End If lub instrukcji For bez Next. Zauważyłem jednak, że czasami korektor widzi błędy składni tam, gdzie ich nie ma. Weźmy następując fragment kodu, który w stronie ASP jest pojedynczym wierszem kodu:

Ta linia spowoduje wystąpienie błędu, chociaż błędu nie ma. Taką reakcję programu ScriptBuilder wywoła pojawienie się kodu ASP wraz z HTML. Innym narzędziem weryfikacji jest Kontroler skryptu. Przeglądnie on twój HTML, kod strony serwera i strony klienta i poda wersje przeglądarek Navigator i Explorer, które będą mogły rozpoznać twój kod. Aby skorzystać z tego narzędzia, otwórz stronę, którą chcesz przetestować i wybierz opcję Kontroler skryptu (Script Inspector) z menu Narzędzia (Tools). W wyniku tego na dole okna ukażą się panele, które pokazane zostały na rysunku 3.51. Jeśli drugi panel nie został wyświetlony, kliknij prawym przyciskiem w obszarze panelu widocznego i wybierz Pokaż szczegóły (Show Details).

Rysunek 3.51. Wynik uruchomienia Kontrolera skryptu Zauważ, że Kontroler skryptu zgłosił znalezienie znacznika VBScript strony klienta, który nie jest obsługiwany przez większość obecnych wersji przeglądarek Navigatora. Jeśli klikniesz podwójnie wiadomość o błędzie wyświetloną w najniżej położonym panelu, program przeniesie cię do tego wiersza kodu, który jest źródłem wystąpienia problemu.

Microsoft Visual InterDev 6.0 Kolejnym pomocnym narzędziem, którego możesz użyć do tworzenia stron ASP jest Microsoft Visual InterDev 6.0. Ponieważ jest o produktem firmy Microsoft, łączą go bliskie relacje z Internetowym serwerem informacyjnym (IIS) oraz systemem NT. Z perspektywy twórcy stron najważniejszymi cechami tego programu są: wyróżnianie wizualne oraz automatyczne zakańczanie kodu. Rysunek 3.52. pokazuje stronę ASP otwartą przy użyciu Visual InterDev. Program, dzięki zastosowaniu kolorowych czcionek, kolorów tła oraz pogrubienia tekstu, czyni stronę bardzo czytelną. W prosty sposób można wtedy dostrzec, gdzie się zaczyna, a gdzie kończy blok kodu; instrukcje w blokach kodu są pogrubione.

ASP – Kompendium programisty

95

Rysunek 3.52. Okno programu Visual InterDev 6.0 Zauważ, że na dole okna znajdują się trzy zakładki odnoszące się do strony: Projekt (Design), Źródło (Source) i Szybki podgląd (Quick View). Niestety jeśli uruchomisz stronę zawierającą kod ASP wraz z HTML — czyli prawie każdą — zakładka Projekt (Design) nie zadziała; natomiast zakładka Szybki podgląd (Quick View) nie będzie funkcjonowała, ponieważ program nie przetwarza kodu strony serwera. Tak więc jedynym widokiem, który mamy do dyspozycji przez cały czas jest Źródło (Source). Inną nadzwyczaj pomocną funkcją Visual InterDev są listy zakańczania kodu, generowane w chwili użycia kropki w składni kodu dla jednego z wbudowanych obiektów ASP. Na przykład jednym z najważniejszych obiektów ASP jest Response. Używany jest do komunikowania się z przeglądarką, która wywołała twoją stronę ASP. Obiekt ma liczne właściwości i metody, które pozwalają na podjęcie działań. Jeżeli w oknie Visual InterDev wpiszesz następujący kod: Response.

pojawi się lista pokazana na rysunku 3.53. Będzie ona zawierała wszystkie właściwości i metody obiektu Response. Możesz zacząć wpisywać wybraną metodę albo po prostu przewinąć listę i wybrać z niej odpowiedni punkt.

Rozdział 3 – Narzędzia pracy

96

Rysunek 3.53. Lista rozwijana zakończenia kodu dla obiektu Response

Ostatnie słowo o narzędziach Bez względu na to, na które narzędzie się zdecydujesz, pamiętaj, że to tylko narzędzie — jeśli użyjesz właściwego, ułatwisz sobie pracę. Powinieneś przeanalizować ich pełne możliwości, ponieważ większość najciekawszych funkcji często bywa zagrzebana na samym dnie menu. Postaraj się nie zadowalać jednym tylko produktem. Nowe produkty i programy usługowe przez cały czas pojawiają się na rynku, a ich zastosowanie często zaoszczędzi ci mnóstwa czasu.

Rozdział 4. Podstawy ASP Konstrukcja kodu ASP Strony ASP złożone są ze statycznego HTML-a oraz dynamicznego kodu ASP. Te dwa składniki mogą być łączone ze sobą na różne sposoby, które zostaną omówione w tym podrozdziale: HTML może być umieszczony w kodzie, kod w HTML oraz skrypty strony serwera mogą być zawarte w skryptach kodu klienta.

Znacznik Aby odróżnić początek od końca kodu, będziesz potrzebował pewnego rodzaju znacznika. Najprostszy znacznik przedstawia się następująco:

Nakazuje on kompilatorowi wypisanie wyniku wyrażenia X. Na przykład, jeśli chcesz stworzyć stronę WWW wyświetlającą aktualną datę oraz czas, stwórz kod podobny do tego:

Simple Tag Page

Witam na stronie z zegarem

Teraz jest:



Strona jest napisana przy użyciu standardowego HTML-a aż do wiersza:

Teraz jest:



Pierwszą częścią wiersza jest standardowy HTML, ale pojawia się tutaj podstawowy znacznik ASP. Ponieważ po otwarciu Kod Jeśli już pracowałeś ze skryptami po stronie klienta, to prawdopodobnie jesteś zaznajomiony ze znacznikiem



Strona wygląda jak zwykła strona HTML aż do znacznika . Obliczonym przez kod wynikiem uwidocznionym w przeglądarce jest: 30

Wyjściowa strona pokazana jest na rysunku 4.3.

ASP – Kompendium programisty

101

Rysunek 4.3. Strona ASP używająca znacznika

Wpisz ilość, aby określić cenę







Pierwszy blok kodu jest kodem ASP strony serwera napisanym w VBScripcie. Rozpoznajemy to po użytych znacznikach:

Kod sprawdza zmienną sesji, która została omówiona dalej, w rozdziale 8. W zmiennej TheRate kod ustawia odpowiednią wartość w oparciu o typ klienta (CustomerType). Następnie blok wstawia wynik kodu strony serwera w blok kodowy strony klienta.

Znacznik Script bez zaznaczenia, że należy go uruchomić na serwerze, jest zinterpretowany jako kod strony klienta. Zauważ, że wewnątrz bloku kodu znajduje się kod ASP strony serwera:

Kod strony serwera jest uruchamiany przed wysłaniem bloku kodu do przeglądarki. Jeśli więc odwiedzający nie jest stałym klientem, jego przeglądarka otrzyma następujący HTML:

Client and Server

Wpisz ilość, aby określić cenę







Na wstępie powinieneś zauważyć, że brak jest pierwszego bloku kodu. Jest tak, ponieważ brakujący blok jest blokiem kodu strony serwera, a my teraz obserwujemy to, co jest wysyłane do klienta. Zauważ również, że

ASP – Kompendium programisty

105

zmienna TheRate w znacznikach skryptu została zastąpiona wartością 50, tak więc cały kod strony serwera zniknął, a przeglądarka otrzymała dostosowaną do klienta wersję procedury CheckPrice. Rysunek 4.6. pokazuje wygląd tej strony, a rysunek 4.7. przedstawia okno wiadomości prezentujące obliczoną cenę.

Rysunek 4.6. Strona kodu klienta i serwera

Rysunek 4.7. Okno pojawiające się po naciśnięciu przycisku Pokaż cenę Jeśli odwiedzający stronę jest stałym klientem, jego cena będzie ustalona na poziomie 25 $ za jednostkę produktu. Skrypt strony klienta będzie wtedy zawierał nieco inny wiersz kodu określającego cenę pojawiającą się w wiadomości: TheMessage = 25 * document.sampleform.Quantity.value

Dyrektywa przetwarzania Domyślnie ustawionym językiem kodu ASP w serwerze IIS jest VBScript. Możesz też wyraźnie stwierdzić, że będziesz używał VBScripta jako twojego kodu poprzez umieszczenie na górze strony następującej dyrektywy przetwarzania:

Zapamiętaj, że ten wiersz musi znaleźć się na stronie jako pierwszy. Informuje on kompilator o tym, że używanym w stronie językiem programowania będzie VBScript. Jeśli chcesz użyć języka JScript, dyrektywa będzie wyglądała następująco:

Rozdział 4 – Podstawy ASP

106

Pliki Include Po co ich używać W miarę jak twoja strona ASP będzie się rozbudowywała zobaczysz, że jej bloki kodu rozrastają się do bardzo dużych rozmiarów, a ty przez cały czas wpisujesz do nich te same procedury. Pliki Include pomagają radzić sobie z takimi problemami, dzięki nim można bowiem wstawić kod do pliku, a następnie wywołać ten kod w stronie ASP. Załóżmy na przykład, że posiadasz standardowe procedury zatwierdzania danych, które odwiedzający wprowadza do formularza na stronie. W formularzu może znajdować się sprawdzane w jakiś sposób pole daty, kilka pól, których wypełnienie jest wymagane oraz sprawdza się w nim liczby i ich zakres. Ten rodzaj kodu prawdopodobnie znalazłby zastosowanie w wielu stronach. Jeśli chciałbyś zmodyfikować działanie którejś z procedur, musiałbyś dokonać zmian na każdej ze stron, która z procedury korzysta. Lepiej więc umieścić kod zatwierdzania w osobnym pliku tekstowym, a następnie po prostu połączyć z plikiem te strony, które z niego korzystają. Pliki Include pomagają oczyścić nadmiernie rozbudowane strony, czyniąc je w ten sposób łatwiejszymi do uruchomienia. Jest tak, ponieważ kod jest położony w centralnym punkcie, przez co w prostszy sposób można go modyfikować. Kolejnym powodem umieszczania kodu w plikach Include jest ochrona programistów przed nadmierną złożonością kodu. Możesz mieć w firmie programistę, który jest ekspertem od obiektów danych współpracujących (CDO — Collaborative Data Objects). Obiekty CDO są używane do wysyłania poczty elektronicznej poprzez twoją stronę ASP oraz do współpracy z Microsoft Exchange. Taki programista może mieć klika skomplikowanych procedur zarządzającymi kalendarzami Exchange. Jeśli przekazał on swój kod innym pracownikom, aby go umieścili na swoich stronach ASP, istnieje ryzyko, że będą oni używali tego kodu w sposób niepoprawny, ponieważ mogą go nie rozumieć. Jeśli programista CDO umieściłby swój kod w pliku Include, inni pracownicy firmy nie musieliby rozumieć zawiłości kodu w nim zawartego. Mogliby po prostu włączyć w stronę plik CDO i wywoływać jego procedury. Włączanie pliku Aby włączyć plik w zawartość strony ASP, użyj po prostu znacznika Include:

Wiersz Include jest otoczony znacznikami skryptu. Plik Include nosi nazwę FieldValidation.inc i musi być położony w tym samym katalogu, co strona ASP, która go wywołuje. Możesz jednak użyć ścieżki względnej do zaznaczenia położenia pliku Include:

W tym przykładzie plik Include musi być umieszczony w katalogu o nazwie Lib, który jest położony o jeden poziom wyżej niż bieżący katalog. Włączenie pliku powoduje efekt umieszczenia całego znajdującego się w nim kodu dokładnie w tym miejscu, gdzie pojawił się wiersz Include. Każdy wiersz włączonego pliku nie staje się jednak fizycznie częścią strony ASP.

ASP – Kompendium programisty

107 Plik Include — struktura i przykład

Plik Include jest prostym plikiem tekstowym zawierającym twój kod. Tak jak w przypadku każdej strony ASP, kod ma następującą strukturę:

Nagłówek będzie wypisywany po każdych dziesięciu rekordach, to znaczy kiedy wynikiem operacji RecordsPrinted MOD 10 będzie zero. Łączenie ciągów znaków w jeden pojedynczy ciąg nazywane jest składaniem, a realizuje się je przez operator &. Wynikiem poniższego kodu

będzie pojawienie się tekstu "Hello World!" w przeglądarce. Składania można dokonać również przekazując więcej niż jeden ciąg znaków jako pojedynczy parametr:

Zaokrąglania liczb w kodzie dokonuje się przez parę różnych mechanizmów. Możesz użyć funkcji Int, która w prosty sposób obcina część ułamkową liczby:

Wynikiem powyższego kodu będzie wysłanie do przeglądarki cyfry 3. Możesz również zaokrąglać liczby przy użyciu funkcji Round. Przekazujesz funkcji liczbę do zaokrąglenia oraz ilość miejsc po przecinku, do ilu należy zaokrąglić liczbę. Jeśli nie określisz ilości pozycji po przecinku, liczba zostanie zaokrąglona do wartości całkowitej.

Zwróć uwagę na instrukcję If. Żadne wartości nie są tutaj porównywane, obliczane jest natomiast wyrażenie. Funkcją używaną podczas obliczania jest Instr, która sprawdza obecność określonego ciągu znaków w innym ciągu. Jeśli ciąg zostanie znaleziony, zwracane jest miejsce jego pierwszego pojawienia się. Następujące wywołanie: Instr("Hello", "l")

ASP – Kompendium programisty

117

zwróci liczbę 3, ponieważ szukana litera „l” pojawia się w słowie po raz pierwszy na trzecim miejscu. Jeśli będziemy chcieli znaleźć w słowie literę „z”, wynikiem poprzedniego wywołania będzie zero, ponieważ ta litera nie pojawia się w testowanym ciągu znaków. Tak więc w powyższej procedurze zamiany znaków, instrukcja If zinterpretuje swój warunek jako prawdę, jeśli funkcja Instr zwróci niezerową wartość, co będzie oznaczało znalezienie znaku w ciągu. Jeśli poszukiwany znak nie zostanie znaleziony, wyrażenie zinterpretowane będzie jako fałsz, ponieważ funkcja Instr zwróci wartość zero. Ważną sprawą do zapamiętania jest możliwość użycia prostego porównania w instrukcji If, ale również to, że możesz użyć obliczonego wyrażenia do określenia zachowania się instrukcji If. Instrukcji If możesz używać na kilka różnych sposobów. Po pierwsze, instrukcja może być użyta w jednym wierszu:

Po pierwsze zwróć uwagę na znak „_” w pierwszej linii. Spotkałeś się już z nim wcześniej. Jest on nazywany znakiem kontynuacji i używa się go do umieszczenia jednego wiersza kodu w kilku wierszach tekstu, aby uczynić kod bardziej czytelnym. W poprzednim przykładzie instrukcja If zawarta jest w jednym wierszu. Ocenia ona wyrażenie, a jeśli wyniesie ono 5, warunek instrukcji interpretowany jest jako prawda, a wtedy w oknie przeglądarki pojawi się napis Zgadza się!, co pokazano na rysunku 4.8.

Rysunek 4.8. Rezultat wpisania poprawnej cyfry Zauważ, że przeglądający stronę widzi również tekst kolejnego wiersza kodu — To wszystko. Jeśli odwiedzający wpisze inną cyfrę niż pięć, nie zobaczy wiadomości Zgadza się!, lecz jedynie tekst To wszystko, ponieważ ten wiersz kodu znajduje się poza instrukcją If. Do pojedynczego wiersza instrukcji If możesz dodać również instrukcję Else Kod tego wiersza będzie uruchomiony wtedy, gdy wartość wyrażenia instrukcji If zinterpretowana zostanie jako fałsz. Poniższy kod jest przykładem zastosowania instrukcji Else:

Ten sam tekst będzie wysłany do przeglądarki, jeśli odwiedzający wpisze właściwą liczbę. W przeciwnym wypadku ujrzą inny tekst, Źle!, jak to pokazano na rysunku 4.9.

Rysunek 4.9. Rezultat wpisania niepoprawnej cyfry Nie musisz ograniczać się do pojedynczego tylko wiersza kodu uruchamianego przez instrukcję If. Możesz tworzyć całe bloki kodowe zarówno dla części If, jak i części Else.

Zauważ, że zniknęły znaki kontynuacji. Każda z linii jest jednym wierszem kodu. Zwróć również uwagę na podwójny cudzysłów wokół +2. Jest to sposób na umieszczenie cudzysłowu w ciągu znaków. Teraz rozpoznanie warunku jako prawdy przez instrukcję If spowoduje wykonanie wszystkich wierszy kodu, które znajdują się ponad instrukcją Else. W przeciwnym wypadku wykonane zostaną trzy wiersze kodu znajdujące się poniżej instrukcji Else. Następnie bez względu na warunek, wykonany zostanie kod ostatniego wiersza. Wynik udzielenia nieprawidłowej odpowiedzi jest pokazany na rysunku 4.10.

ASP – Kompendium programisty

119

Rysunek 4.10. Rezultat udzielenia niepoprawnej odpowiedzi w przykładzie z blokiem kodu W obrębie instrukcji If może znaleźć się również instrukcja ElseIf, która sprawdza dodatkowy warunek, jeśli pierwszy warunek If nie został spełniony. Spójrz na poniższy blok kodu:

Ten blok wyświetla wiadomość w oparciu o wprowadzony wiek danej osoby. Na wstępie obliczana jest pierwotna instrukcja If. Jeśli wartość TheAge jest mniejsza od 13, wyświetlona zostanie pierwsza wiadomość i kod przeskoczy do instrukcji End If bez sprawdzania pozostałych warunków. Jeśli pierwszy warunek instrukcji If nie jest prawdziwy, oznacza to, że zmienna TheAge musi mieć wartość większą lub równą 13. Wtedy brany pod uwagę jest drugi warunek: ElseIf Request.QueryString("TheAge") < 20 then

W tym momencie kod sprawdza, czy dana osoba ma więcej niż 12, a mniej niż 20 lat. Jeśli tak nie jest, kod wprowadzi następną instrukcję warunkową. Jeśli wartość zmiennej TheAge jest mniejsza od 20, to przed przejściem do End If wykonany zostanie blok kodu poniżej instrukcji warunkowej. Kod przechodzi w ten sposób przez wszystkie instrukcje ElseIf. Jeśli żaden z warunków instrukcji If i ElseIf nie okaże się prawdą, kod przejdzie do bloku Else. Pamiętaj, że nie musisz używać instrukcji Else. Jeśli jej nie będzie i żaden z warunków nie okaże się prawdziwy, kod po prostu wychodzi z instrukcji If. Możesz również zagnieżdżać instrukcje If, to znaczy jedna instrukcja If może znajdować się w kolejnej:

Rozdział 4 – Podstawy ASP

120

Kod ten podobny jest do poprzedniego przykładu, ale użyto tutaj dodatkowej instrukcji If. Teraz jeśli pierwszy warunek będzie prawdziwy, w przeglądarce ukaże się tekst Jesteś małym/ą. Następnie szacowany jest kolejny warunek. W efekcie wyświetlany jest dodatkowy tekst, którego treść zależna jest od tego, czy dana osoba jest płci męskiej czy żeńskiej. Bez względu na wprowadzoną wartość, do przeglądarki wysyłana jest również kropka. Tak więc przy zastosowaniu wewnętrznej instrukcji If masz możliwość uruchomienia najpierw jednej części kodu , a po przerwie zależnej od warunku zagnieżdżonej instrukcji, wykonania jego dalszej części. Instrukcje If mogą być umieszczone bardzo głęboko w kodzie, przez co istnieje dla nich wiele możliwych zastosowań. W instrukcjach If możesz również stosować operatory And i Or. Jeśli użyty zostanie And, obydwa warunki muszą zostać spełnione. Przykładowo: If Request.QueryString("TheAge") < 13 and _ Request.QueryString("Sex") = "Female" then

Obydwa warunki muszą być prawdziwe. Dana osoba musi być płci żeńskiej i musi mieć mniej niż 13 lat. Inaczej jest w wypadku tego kodu: If Request.QueryString("TheAge") < 13 or _ Request.QueryString("Sex") = "Female" then

Ta instrukcja If obejmuje wszystkie osoby płci żeńskiej, a także wszystkich, którzy mają mniej niż 13 lat. Aby jej kod został wykonany, przynajmniej jeden z tych warunków musi być spełniony. Możesz łączyć ze sobą warunki And i Or w celu tworzenia warunków złożonych, ale w tym wypadku należy korzystać z nawiasów, aby określić kolejność sprawdzania warunków. Przykładowo: If (LastName = "Flintstone" and FirstName = "Fred") _ Or FirstName = "Wilma" then

Zwróć uwagę na to, że wyrażenie w nawiasie będzie ocenione jako prawda, gdy imię i nazwisko osoby będzie brzmiało Fred Flintstone. Warunek instrukcji będzie prawdziwy również w wypadku, gdy imię danej osoby, bez względu na jej nazwisko, będzie brzmiało Wilma. To co innego niż:

ASP – Kompendium programisty

121 If LastName = "Flintstone" and (FirstName = "Fred" _ Or FirstName = "Wilma") then

Jedyną różnicą między dwoma ostatnimi przykładami kodu polega na innym rozmieszczeniu nawiasów. Warunek tej instrukcji będzie uznany za prawdę tylko dla dwóch osób: Freda Flintstone’a i Wilmy Flintstone. Inną instrukcją warunkową, którą możesz wykorzystać, jest Select Case, która zachowuje się bardzo podobnie do If uzupełnionej o instrukcje ElseIf. Spójrz na ten przykład:

Pierwszy wiersz instrukcji Select

Case

zawiera testowany warunek:

Select Case Request.QueryString("Quantity")

Potem następuje seria możliwych wartości warunku oraz odpowiedzi na nie. Pierwsza z nich odpowiada wpisaniu liczby 1: Case 1 Response.Write "$50"

Jeśli tekst zmiennej równy będzie jeden, wykonany zostanie blok znajdujący się poniżej instrukcji. Tak samo będzie w wypadku innych pozycji listy. Podobnie jak to było z instrukcją If, kiedy jeden z bloków jest wykonywany inne są pomijane, a kod przeskakuje do instrukcji End Select. Jeśli pierwszy warunek nie jest spełniony, kod przechodzi do następnego. Jeśli żaden z warunków nie jest rozpoznany jako prawdziwy, kod przechodzi do instrukcji Case Else, która jest odpowiednikiem części Else instrukcji If.

Pętle Mianem pętli określa się fragment kodu, który jest wykonywany wielokrotnie. W tym podrozdziale przyjrzymy się trzem mechanizmom tworzenia pętli: Do Until, For...Next oraz For Each. W pętli Do Until zadanie wykonywane jest dopóki wyrażenie nie będzie zinterpretowane jako prawda. Na przykład: X = 4 Do Until X = 5 Response.Write X X = X + 1

Rozdział 4 – Podstawy ASP

122

Loop

Ten kod przejdzie przez pętlę jeden raz. Kiedy kod wejdzie w pętlę, zmienna X będzie porównana do piątki. Ponieważ podczas pierwszego przejścia przez pętlę ma ona wartość 4, wyrażenie potraktowane zostanie jako fałsz. Wtedy kod w pętli zostanie wykonany. W bloku kodu do zmiennej X dodaje się 1, więc kolejną wartością zmiennej będzie 5.Przy następnym przejściu przez wiersz Do Until, wartość zmiennej X będzie po raz kolejny sprawdzana. Tym razem jednak kod pominie całą pętlę. Tutaj na przykład kod pętli nigdy nie będzie wykonany: X = 5 Do Until X = 5 Response.Write X X = X + 1 Loop

Ponieważ X ma wartość 5 już na samym wstępie, wyrażenie w wierszu Do wypadku kod przechodzi od razu do instrukcji Loop. W następnym przykładzie kod przejdzie przez pętlę trzy razy:

Until

jest prawdą, a w takim

X = 3 Do Until X > 5 Response.Write X X = X + 1 Loop

Podczas pierwszego przejścia wartość X zmieniana jest na cztery, za drugim razem na pięć. Ponieważ pięć jest ostatnią liczbą spełniającą warunek X > 5, kod ponownie przejdzie przez pętlę zmieniając wartość X na sześć. Wtedy po raz pierwszy kod pominie pętlę. Często będziesz używał instrukcji Do Until do przejścia kolejno przez zbiór rekordów bazy danych. Tak samo często będziesz wybierał poszczególne rekordy z bazy danych, aby nimi operować w różnorodny sposób bądź prezentować je użytkownikowi. Zwróć uwagę na następujący blok pokazujący wszystkie produkty, które odwiedzający sklep wirtualny umieścił w koszyku na zakupy. Application ("MinShip") then TopShipping = RSTotal("TheTotal") * Application("ShipPercent") else TopShipping = Application("MinShip") end if ''''''''''' Response.Redirect "https://www.netstats2000.com/bud/html/"_ & shopping_cart.asp?SessionID=" & Session(SessionID")

W pierwszej części kodu sprawdzamy, czy zmienna sesji o nazwie SessionID jest pusta: if isempty(Session("SessionID")) then

Jeśli zmienna sesji jest pusta oznacza to, że gość umieścił w koszyku swój pierwszy wybrany produkt i należy stworzyć dla niego odpowiedni rekord. Aktualna data i godzina systemowa będzie częścią rekordu koszyka: CurrentDateTime = Now

Rekord jest dodawany do bazy danych: conn.Execute "insert into WICustomers (SessionDateTime) values ('"_ & CurrentDateTime & "')"

Numer identyfikacyjny nowo utworzonego rekordu koszyka jest wyszukiwany w bazie danych: set RSSession = conn.Execute("select SessionID from WICustomers "_ & "where SessionDateTime = '" & CurrentDateTime & "'")

ASP – Kompendium programisty

265 W zmiennej sesji SessionID ustawiana jest wartość z rekordu koszyka: Session("SessionID") = RSSession("SessionID")

Następna część kodu oblicza koszty wysyłki zamówionych produktów. Po pierwsze obliczany jest całkowity koszt zamówienia na bazie wyszukanych kosztów poszczególnych produktów w koszyku znajdujących się w zmiennej SessionID: set RSTotal = conn.Execute("select Sum(TotalPrice) as TheTotal from WIOrderItems "_ & "where SessionID = " & Session("SessionID"))

Następnie zmienne aplikacji wykorzystywane są do porównania kosztu wysyłki z minimalną wartością tego kosztu: if RSTotal("TheTotal") * Application("ShipPercent") > Application ("MinShip") then

Jeśli procentowa wartość kosztu wysyłki jest większa od dwóch, wykorzystujemy ją: TopShipping = RSTotal("TheTotal") * Application("ShipPercent")

W innym wypadku używamy minimalnego kosztu wysyłki: TopShipping = Application("MinShip")

Widzisz więc, że dobrze rozplanowana, złożona aplikacja ASP w pełni wykorzystuje funkcje obiektów Application i Session.

Rysunek 8.12. Kreator zamówień

Rozdział 9. Obiekty CDO dla Windows NT Server Uzupełnienie strony ASP o funkcję wysyłania wiadomości email Obiekt danych współpracujących dla Windows NT Server (Collaborative Data Objects, CDONTS, CDO dla NTS) pozwala na tworzenie kopii umożliwiających wysyłanie wiadomości e-mail z twoich stron lub aplikacji ASP. Biblioteka CDONTS ukazuje główną klasę, którą możemy stworzyć, NewMail, dostarczającą łatwych w użyciu metod i właściwości pozwalających na wysyłanie wiadomości e-mail z twoich stron ASP. Treść tego rozdziału koncentruje się na tym obiekcie. CDONTS zaprojektowano tak, aby działał w systemie Windows NT Server dysponującym serwerem IIS wersji 4.0 lub późniejszej. Biblioteka nie wymaga uruchomienia serwera wymiany (Exchange Server). Jeśli posiadasz serwer wymiany w twoim systemie, musi on być zainstalowany po IIS, aby również biblioteka CDONTS była poprawnie zainstalowana. Jeśli nie posiadasz serwera wymiany, będziesz musiał korzystać z serwera SMTP dostarczanego wraz z IIS w celu poprawnego funkcjonowania biblioteki CDONTS. Powinieneś zobaczyć witrynę SMTP w serwerze IIS, co pokazano na rysunku 9.1.

Rysunek 9.1. Witryna SMTP w serwerze IIS Jeśli nie posiadasz Microsoft Exchange’a, możesz tutaj skonfigurować witrynę SMTP przeglądając jej właściwości. Jeśli nie jest ona widoczna w IIS, to prawdopodobnie nie wybrałeś tego składnika w czasie instalacji IIS. Uruchom ponownie instalację i dodaj ten składnik.

ASP – Kompendium programisty

267

Obiekt NewMail W kilku przykładach użytych już w tej książce mogłeś widzieć obiekt NewMail w działaniu. Przy jego użyciu możesz wysyłać podstawowe wiadomości e-mail w trzech prostych wierszach kodu twojej strony ASP: Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.Send "[email protected]", "[email protected], "Witamy!", _ "Witamy w naszej firmie Julio. Cieszymy się, że tu jesteś — Bob" Set objMail = Nothing

To wszystko, trzy wiersze. Najpierw tworzysz obiekt NewMail z biblioteki CDONTS: Set objMail = Server.CreateObject("CDONTS.NewMail")

Następnie używasz metody Send w celu wysłania wiadomości e-mail. Pierwszy parametr metody Send określa wysyłającego wiadomość; drugi parametr to adresat wiadomości; trzeci to temat wiadomości; ostatni to sama jej treść: objMail.Send "[email protected]", "[email protected], "Witamy!", _ "Witamy w naszej firmie Julio. Cieszymy się, że tu jesteś! — Bob"

W końcu zwalniasz zasoby obiektu NewMail: Set objMail = Nothing

Wiadomość e-mail wysyłana jest do odbiorcy. Powyższy kod wygeneruje wiadomość pokazaną na rysunku 9.2. Dzięki zastosowaniu obiektu NewMail możesz jednak zrobić znacznie więcej niż to, co pokazano na tym prostym przykładzie. W dalszej części tego rozdziału przyjrzymy się dokładnie właściwościom i metodom obiektu NewMail.

Rysunek 9.2. Wiadomość e-mail wysłana przy użyciu metody Send obiektu NewMail

Rozdział 9 – Obiekt CDO dla Windows NT Server

268

Właściwości obiektu NewMail Właściwości obiektu NewMail pozwalają na dostosowanie do potrzeb klienta sposobu wysyłania wiadomości email. Tabela 9.1. przedstawia sumarycznie te właściwości, które zostały tutaj omówione. Tabela 9.1. Właściwości obiektu NewMail Właściwość Przeznaczenie To Adres e-mail odbiorcy From Adres e-mail nadawcy Subject Temat wiadomości Body Treść wiadomości CC Odbiorcy listu typu DW BCC Odbiorcy zamaskowanego listu typu DW (UDW) Importance Ustawia poziom ważności wiadomości BodyFormat Określa format tekstu wiadomości, zwykły tekst lub HTML MailFormat Określa kodowanie wiadomości, tekstowe lub MIME ContentBase Baza adresu URL dla wszystkich łącz w wiadomości ContentLocation Określa ścieżkę dostępu do wszystkich łączy URL w treści wiadomości Value Dodaje nagłówki do wiadomości Version Zwraca wersję biblioteki CDONTS

Właściwość To Właściwość To pozwala na określenie adresu e-mail odbiorcy. Właściwość ta ma następującą formę: ObjMail.To = ListOfRecipients

w tym kodzie musi być obiektem klasy NewMail biblioteki CDONTS. Zmienna ListOfRecipients jest adresem poczty elektronicznej osoby lub osób, do których chcesz wysłać wiadomość. Możesz zaadresować wiadomość do jednej osoby w następujący sposób:

ObjMail

ObjMail.To = "[email protected]"

Możesz również wysłać wiadomość do wielu odbiorców, oddzielając każdy z adresów średnikiem, jak to pokazano poniżej: ObjMail.To = "[email protected];[email protected];[email protected]"

W tym momencie e-mail wysłany zostanie pod trzy adresy. Zwróć uwagę na to, że możemy określić odbiorcę wiadomości za pomocą właściwości To lub używając parametru metody Send, tak więc poprzedni wiersz mógłby być zastąpiony przez taki kod: objMail.Send "[email protected]", "[email protected];[email protected];[email protected]", _ "Witamy!", "Witamy wszystkich w firmie. Cieszymy się z waszej obecności! –—- Bob"

Jeśli korzystasz z właściwości To, po prostu nie wpisuj drugiego parametru metody Send: ObjMail.To = "[email protected];[email protected];[email protected]" objMail.Send "[email protected]", , "Witamy!", _ "Witamy wszystkich w firmie. Cieszymy się z waszej obecności! –—- Bob"

ASP – Kompendium programisty

269

Jeśli używasz zarówno właściwości To, jak i parametru metody Send, wiadomość zostanie wysłana pod wszystkie adresy z obu list. Tak więc ten kod: ObjMail.To = "[email protected];[email protected];[email protected]" objMail.Send "[email protected]", "[email protected]", "Witamy!", _ "Witamy wszystkich w firmie. Cieszymy się z waszej obecności! –—- Bob"

wysłałby e-mail do czterech odbiorców: trzech z nich określono we właściwości To i jednego w drugim parametrze metody Send. Właściwość From Właściwość From zapamiętuje adres poczty elektronicznej nadawcy. Właściwość ta ma następującą formę: ObjMail.From = EmailAddressOfSender

musi być tutaj ważnym obiektem NewMail biblioteki CDONTS. Zmienna EmailAddressOfSender musi być pełnym adresem e-mail, na przykład: ObjMail

ObjMail.From = "[email protected]"

W tej właściwości możesz określić jednego tylko nadawcę. Innymi słowy nie możesz zastosować średników w celu określenia wielu nadawców; jeśli tak zrobisz, wystąpi błąd w przeglądarce, który prezentuje rysunek 9.3.

Rysunek 9.3. Wiadomość o wystąpieniu błędu, który wywołany został określeniem wielu nadawców Do określenia nadawcy możesz użyć właściwości From lub zamiennie parametru metody Send. Tak więc ten kod: objMail.To = "[email protected];[email protected]" objMail.From = "[email protected]" objMail.Send , , "Wiadomość próbna", _ "Ta wiadomość została wysłana do wszystkich z listy."

Rozdział 9 – Obiekt CDO dla Windows NT Server

270

jest funkcjonalnym zamiennikiem tego kodu: objMail.To = "[email protected];[email protected]" objMail.Send "[email protected]", , "Wiadomość próbna", _ "Ta wiadomość została wysłana do wszystkich z listy."

Jeśli podasz parametr zarówno w metodzie Send, jak i właściwości From, w wysłanej wiadomości pojawi się nadawca określony poprzez metodę Send. Właściwość Subject Właściwości Subject możesz użyć do określenia tematu wiadomości. Ma ona następujący format: ObjMail.Subject = TheSubject

musi być ważnym obiektem NewMail serwera CDONTS. TheSubject jest ciągiem reprezentującym temat wiadomości. Użycie takiego kodu: ObjMail

ObjMail.Subject = "Witamy!"

spowoduje, że tematem wiadomości będzie tekst "Witamy!". Temat wiadomości możesz określić przy użyciu właściwości Subject, jak również wykorzystując w tym celu trzeci parametr metody Send. Tak więc taki kod: objMail.To = "[email protected];[email protected]" objMail.From = "[email protected]" objMail.Subject = "Witamy!" objMail.Send , , , _ "Ta wiadomość została wysłana do wszystkich z listy."

można zastąpić takim, wywołującym te same rezultaty: objMail.To = "[email protected];[email protected]" objMail.From = "[email protected]" objMail.Send , , "Witamy!", _ "Ta wiadomość została wysłana do wszystkich z listy."

Jeśli zastosujesz zarówno właściwość Subject, jak i trzeci parametr metody Send, użyty zostanie ten określony przez metodę Send. Właściwość Body Właściwość Body określa tekst wiadomości lub jej HTML, jak będziesz mógł się przekonać nieco później. Właściwość ta ma następującą formę: ObjMail.Body = BodyText

ObjMail

musi być ważnym obiektem NewMail biblioteki CDONTS. BodyText jest treścią wiadomości. Taki kod:

ObjMail.Body = "Ta wiadomość została wysłana do wszystkich z listy."

spowoduje, że wiadomość będzie zawierała powyższy tekst. Do określenia treści wiadomości możesz użyć właściwości Body lub czwartego parametru metody Send, tak więc to: objMail.To = "[email protected];[email protected]"

ASP – Kompendium programisty

271 objMail.From = "[email protected]" objMail.Subject = "Witamy!" objMail.Body = "Dziękujemy za odwiedzenie naszej witryny!" ObjMail.Send

jest funkcjonalnie tożsame z tym: objMail.To = "[email protected];[email protected]" objMail.From = "[email protected]" objMail.Subject = "Witamy!" ObjMail.Send , , , "Dziękujemy za odwiedzenie naszej witryny!"

Kiedy tworzysz wiadomości e-mail w twoim kodzie przekonasz się, że musisz je sformatować przy użyciu nowych wierszy w celu zaznaczenia przerw w tekście. Możesz to zrobić wykorzystując funkcję Chr, której parametrem jest liczba, a wartością zwracaną znak odpowiadający tej liczbie. Jeśli chciałbyś wstawić nowy wiersz, kod będzie taki: Chr(13)

Jeśli chcesz wstawić znak tabulacji: Chr(9)

Kolejnym znakiem, który być może będziesz chciał wstawić w tekst wiadomości to cudzysłów. Możesz to zrobić wstawiając tekst w cudzysłowie w cudzysłów podwójny. Weź pod uwagę następujący blok kodu, zawierający cudzysłowy i nowe wiersze w treści wiadomości:

Po pierwsze zaznaczamy, że będziemy deklarować nasze zmienne: Option Explicit

Następnie tworzona jest zmienna, która będzie przechowywała nasz obiekt NewMail: Dim objMail

Rozdział 9 – Obiekt CDO dla Windows NT Server

272

Kolejna zmienna przeznaczona jest do przechowywania tekstu wiadomości: Dim TheMessage

Następnie wykorzystujemy metodę CreateObject obiektu Server do stworzenia kopii obiektu NewMail: Set objMail = Server.CreateObject("CDONTS.NewMail")

Określamy adresata wiadomości: objMail.To = "[email protected];[email protected]"

nadawcę: objMail.From = "[email protected]"

i temat wiadomości: objMail.Subject = "Witamy!"

Tekst wiadomości zapamiętywany jest w zmiennej TheMessage. Zauważ, że użyto tutaj funkcji Chr do stworzenia nowych wierszy, a poza tym podwójnego cudzysłowu dla zaznaczenia cudzysłowu w cudzysłowie: TheMessage = "Cześć:" & chr(13) & chr(13) _ & "Dziękujemy za odwiedzenie naszej witryny!" & chr(13) & chr(13) _ & """Cenimy sobie Twoją firmę!"""

Dla właściwości Body ustawiana jest wartość zmiennej TheMessage: objMail.Body = TheMessage

Wiadomość jest wysyłana: objMail.Send

a obiekt zwalnia pamięć: Set objMail = Nothing

Stworzony w ten sposób e-mail przedstawiono na rysunku 9.4. Zwróć uwagę na położenie cudzysłowu oraz nowych wierszy.

ASP – Kompendium programisty

273

Rysunek 9.4. E-mail zawierający znaki specjalne Właściwość CC Właściwość CC pozwala określić odbiorców wiadomości, nie będących odbiorcami głównymi. Odbiorcy listu typu DW (ang. CC — Carbon Copy) widzą tą samą wiadomość, co odbiorcy główni, są jednak wyszczególnieni w nagłówku wiadomości jako adresaci drugorzędni. Właściwość przyjmuje następującą formę: ObjMail.CC = CCList

ObjMail musi być zatwierdzoną kopią klasy NewMail biblioteki CDONTS. CCList jest ciągiem zawierającym listę adresów poczty elektronicznej. Możesz określić pojedynczego odbiorcę listu typu DW: ObjMail.CC = "[email protected]"

lub większą ich liczbę oddzielając każdego z nich średnikiem: ObjMail.CC = "[email protected];[email protected]"

Właściwość BCC Poprzez właściwość BCC możesz określić odbiorców zamaskowanego listu typu DW (UDW, ang. BCC — Blind Carbon Copy). Adresat UDW otrzymuje tą samą wiadomość, co odbiorca główny i odbiorca DW, ale ci dwaj ostatni nie są powiadamiani o adresie e-mail odbiorców listu UDW. Dzięki tej właściwości możesz chronić prywatność poszczególnych osób. Właściwość ma następującą formę: ObjMail = BCCList

musi być zatwierdzoną kopią klasy NewMail biblioteki CDONTS. BCCList to ciąg łączący w sobie listę adresów e-mail odbiorców zamaskowanego listu typu DW. Możesz określić pojedynczego odbiorcę listu UDW:

ObjMail

Rozdział 9 – Obiekt CDO dla Windows NT Server

274

ObjMail.BCC = "[email protected]"

lub, przy użyciu średników, wielu odbiorców: ObjMail.BCC = "[email protected];[email protected]"

Właściwość Importance Różne aplikacje poczty elektronicznej pozwalają określać poziom ważności wysyłanych przez ciebie wiadomości. Sposób wyświetlania tego znacznika ważności różni się w zależności od systemu. Za pomocą właściwości Importance możesz określić w kodzie ważność wiadomości. Składnia właściwości przedstawia się następująco: ObjMail.Importance = Value

ObjMail musi być ważną kopią obiektu NewMail. Dopuszczalne wartości Value przedstawia tabela 9.2. Tabela 9.2. Wartości właściwości Importance Wartość Znaczenie 0 Niska ważność 1 Normalna ważność (domyślna) 2 Wysoka ważność

Możemy więc włączyć właściwość Importance do naszego bloku kodu:

Kiedy ważność wiadomości jest wysoka, program obsługujący pocztę odbiorcy zazwyczaj czyni taką wiadomość bardziej widoczną. Zwróć uwagę na zmianę, jaka zaszła w wyglądzie wiadomości prezentowanej przez program Outlook z powodu nadania jej priorytetu ważności, co pokazano na rysunku 9.5.

ASP – Kompendium programisty

275

Rysunek 9.5. Wiadomość wykorzystująca właściwość Importance Właściwości BodyFormat i MailFormat Wszystkie omówione do tej pory wiadomości miały format tekstowy. Możemy jednak wysyłać również wiadomości e-mail w formacie HTML, korzystając przy tym z właściwości BodyFormat i MailFormat. Właściwość BodyFormat ma następującą składnię: ObjMail.BodyFormat = Value

jest obiektem NewMail serwera CDONTS. Wartość (Value) może wynosić domyślnie 1 co oznacza, że treść wiadomości jest zwykłym tekstem. Wartość właściwości ustawiona na 0 oznacza, że treść wiadomości zawiera HTML. Aby wysłać wiadomość w formacie HTML, musisz również użyć właściwości MailFormat, która określa typ kodowania wiadomości. Składnia właściwości przedstawia się następująco: ObjMail

ObjMail.MailFormat = Value

ObjMail musi być obiektem NewMail. Wartość (Value) może wynosić 0 lub 1. Domyślną wartością jest 1, co oznacza, że zastosowano kodowanie tekstowe. Dla wiadomości HTML musisz użyć wartości 0 co oznacza, że zastosowano kodowanie MIME. Poniższy przykładowy kod wysyła wiadomość HTML o wysokiej ważności.

Po pierwsze stwierdzamy, że będziemy deklarować nasze zmienne: Option Explicit

Następnie deklarujemy zmienną obiektu NewMail: Dim objMail

oraz zmienną, która będzie przechowywała treść wiadomości HTML: Dim TheMessage

Tworzymy kopię zmiennej objMail: Set objMail = Server.CreateObject("CDONTS.NewMail")

a następnie określamy odbiorcę wiadomości: objMail.To = "[email protected]"

Następnie określamy nadawcę wiadomości poprzez właściwość From: objMail.From = "[email protected]"

Wiadomości nadawany jest tytuł: objMail.Subject = "Zwariowaliśmy!"

Następnie budujemy treść naszej wiadomości w postaci czystego HTML-a. Używamy tutaj rozmaitych znaczników HTML. Zwróć uwagę na użyte w tekście cudzysłowy: TheMessage = "" _ & "" _ & "Mamy wyprzedaż" _ & "" _ & "" _

276

ASP – Kompendium programisty

277

& "Wszystko tańsze o30% 50% !" _ & "" _ & "

Stój więc! kliknij tutaj!

" _ & "" _ & ""

Dalej ustalamy treść wiadomości HTML: objMail.Body = TheMessage

Ustawiamy ważność wiadomości: objMail.Importance = 2

Zaznaczamy, że treścią jest HTML: objMail.BodyFormat = 0

Użyty format kodowania to MIME: objMail.MailFormat = 0

Metoda Send wysyła wiadomość e-mail: objMail.Send

W końcu uwalniamy zasoby wiadomości: Set objMail = Nothing

Odbiorca powinien otrzymać wiadomość pokazaną na rysunku 9.6.

Rozdział 9 – Obiekt CDO dla Windows NT Server

278

Rysunek 9.6. Wiadomość HTML Pamiętaj jednak, że nie wszystkie programy poczty elektronicznej potrafią przeglądać wiadomości HTML. Niektóre z nich mogą wyświetlić jedynie tekst wiadomości podobny do tego pokazanego na rysunku 9.7. Program próbuje tutaj pokazać tekst wiadomości, zauważ jednak jak zmieniło się jej znaczenie. W dokumencie HTML skreśliliśmy 30% na rzecz 50%. Tutaj nie widać tej różnicy.

Rysunek 9.7. Wiadomość HTML przeglądana przez klienta nie obsługującego HTML-a Właściwości ContentBase i ContentLocation Właściwości ContentBase i ContentLocation pozwalają ci określić w HTML-u położenie względnych odwołań. Właściwość ContentBase normalnie zapamiętuje wyższy poziom lokalizacji adresów URL, a właściwość ContentLocation zapamiętuje ścieżkę katalogu. Właściwość ContentBase ma następującą składnię: ObjMail.ContentBase = Path

ObjMail musi być ważną kopią klasy NewMail. Wartość Path jest zazwyczaj ścieżką domeny. Zapis może więc być następujący: ObjMail.ContentBase = "http://www.whatever.com/"

Jeśli wpisałbyś tylko taką wartość, to ścieżki w twojej wiadomości HTML wykorzystają ją jako odniesienie względne podczas lokalizacji obrazków i łącz. Możesz również użyć właściwości ContentLocation w celu określenia katalogu poniżej nazwy domeny, gdzie ulokowano łącza i pliki. Składnia właściwości ContentLocation przedstawia się tak: ObjMail.ContentLocation = Path

jest kopią klasy NewMail. Wartość Path określa ścieżkę do plików i łącz. Jeśli na przykład napiszesz taki kod:

ObjMail

ObjMail.ContentLocation = "emailreports/December/"

to znacznik obrazka w treści wiadomości HTML wykorzysta obydwie właściwości, ContentBase i ContentLocation, w celu określenia fizycznego położenia obrazka.

ASP – Kompendium programisty

279 Właściwość Value

W zależności od posiadanego przez odbiorcę programu obsługującego pocztę, istnieje wiele rozmaitych ustawień wiadomości. Możesz dodać te ustawienia przy użyciu właściwości Value. Właściwość Value uzupełnia wiadomość e-mail o dodatkowy nagłówek i ma następujący format: ObjMail.Value(HeaderName) = HeaderValue

musi być zatwierdzonym obiektem NewMail. HeaderName jest kopią nagłówka, którego chcesz użyć w wiadomości, a HeaderValue jest wartością tego nagłówka. Na przykład wiele klientów poczty uwzględnia adres e-mail nadawcy, jak również zwrotny adres odpowiedzi Reply-To. Jeśli odbiorca kliknie przycisk Odpowiedz (Reply) w swojej aplikacji poczty, program użyje adresu wskazanego przez tą funkcję zamiast adresu nadawcy z właściwości From. Zwróćmy na przykład uwagę na następujący kod: ObjMail

Po pierwsze informujemy kompilator o deklaracji naszych zmiennych: Option Explicit

Następnie deklarujemy zmienną NewMail: Dim objMail

Tworzymy kopię obiektu NewMail: Set objMail = Server.CreateObject("CDONTS.NewMail")

Ustawiana jest właściwość To: objMail.To = "[email protected]"

jak również właściwość From: objMail.From = "[email protected]"

Dalej określany jest temat i treść wiadomości: objMail.Subject = "Zwariowaliśmy!" objMail.Body = "Wyślij mi e-mail ze szczegółami!"

Rozdział 9 – Obiekt CDO dla Windows NT Server

280

Zaznaczamy, że ważność wiadomości jest wysoka: objMail.Importance = 2

Następnie, przed wysłaniem wiadomości, dodajemy nagłówek Reply-To: objMail.Value("Reply-To") = "Sprzedaż"

i uwalniamy zasoby wiadomości: objMail.Send Set objMail = Nothing

Kiedy goście klikną przycisk Odpowiedz (Reply) znajdujący się w ich kliencie poczty, wiadomość zostanie wysłana pod adres Reply-To, a nie adres nadawcy określony właściwością From, co pokazano na rysunku 9.8.

Rysunek 9.8. Wiadomość wykorzystująca nagłówek Reply-To Właściwość Version Pozostała do omówienia ostatnia właściwość obiektu NewMail, właściwość Version, która zwraca wersję biblioteki CDONTS. Ta właściwość, przeznaczona tylko do odczytu, przyjmuje następującą formę: ObjMail.Version

ObjMail musi być ważnym obiektem NewMail. Zwracaną przez funkcję wartością jest wersja biblioteki, tak więc poniższy kod:

ASP – Kompendium programisty

281 wyświetli używaną wersję CDONTS, jak to pokazano na rysunku 9.9.

Rysunek 9.9. Wyświetlenie właściwości Version

Metody obiektu NewMail Metody obiektu NewMail umożliwiają podjęcie odpowiednich działań związanych z tym obiektem. Metody te są omówione poniżej, a ich podsumowanie przedstawia tabela 9.3. Tabela 9.3. Metody obiektu NewMail Metoda Przeznaczenie Send Wysyła wiadomość e-mail. AttachFile Pozwala na załączenie pliku do wysyłanej wiadomości. AttachURL Załącza pliki, które są częścią wiadomości HTML. SetLocaleIDs Określa informację o lokalizacji. Metoda Send Jak mogłeś przekonać się z treści tego rozdziału, metoda Send wykorzystywana jest do wysyłania wiadomości e-mail. Ma ona następującą składnię: ObjMail.Send From, To, Subject, Body, Importance

musi być obiektem NewMail. Wszystkie parametry tej metody są fakultatywne. Jak widziałeś, każdemu z parametrów odpowiada właściwość, dzięki której możesz określić jego wartość. Wobec tego kod: ObjMail

jest funkcjonalnie tożsamy z tym kodem:

Możesz określić każdy z parametrów w metodzie lub we właściwościach. Jeśli chcesz określić wartość właściwości Importance w metodzie, a wszystkie inne parametry osobno jako właściwości, wykorzystaj przecinki w celu zaznaczenia pustych pozycji, tak jak tutaj:

Z wyjątkiem parametru To, wszystkie parametry tej metody unieważniają wartości określone we właściwościach. Jeśli użyta została zarówno właściwość To, jak i parametr metody, wiadomość wysłana zostanie pod adresy znajdujące się w obydwu miejscach. Metoda AttachFile Metoda AttachFile łączy w sobie mechanizmy, które pozwolą ci dołączyć pliki do wiadomości e-mail. Metoda ta ma następującą składnię: ObjMail.AttachFile FileLocation, FileName, EncodingType

ObjMail musi być zatwierdzonym obiektem NewMail biblioteki CDONTS. Parametr FileLocation jest wymagany i określa fizyczne położenie pliku, natomiast parametr FileName jest dodatkowy. Jeśli został podany, stanowi wyświetlaną w programie poczty nazwę załącznika. Jeśli nie wpiszesz tego parametru, wyświetlana będzie nazwa pliku. Parametr EncodingType również nie jest obowiązkowy, a używa się go do zaznaczenia typu

ASP – Kompendium programisty

283

kodowania. Domyślnie ustawioną wartością 0, co oznacza kodowanie UUEncode. Jeśli ustawisz tutaj wartość 1, wykorzystane zostanie kodowanie Base 64. Przykładowy kod przedstawiony poniżej załącza do wiadomości plik, któremu nadano nazwę Company Logo.

Na wstępie używamy instrukcji Option

Explicit,

wymaganej podczas deklaracji zmiennych:

Option Explicit

Następnie deklarowany jest obiekt NewMail i tworzona jest jego kopia: Dim objMail Set objMail = Server.CreateObject("CDONTS.NewMail")

Ustawiane są właściwości To i From: objMail.To = "[email protected]" objMail.From = "[email protected]"

Następnie ustawiane są właściwości Subject i Body: objMail.Subject = "Twój plik" objMail.Body = "Dołączono żądany plik."

Używamy metody AttachFile, aby dołączyć plik do wiadomości. Pierwszy parametr to ścieżka fizyczna do załączanego pliku. Drugi jest nazwą, którą przydzielamy plikowi: objMail.AttachFile "e:\inetpub\logo.gif", "Company Logo"

Wiadomość jest wysyłana i zasoby wykorzystywane przez obiekt są zwalniane: objMail.Send Set objMail = Nothing

Wiadomość, którą otrzymuje odbiorca pokazana jest na rysunku 9.10. Zwróć uwagę na nazwę załączonego pliku.

Rozdział 9 – Obiekt CDO dla Windows NT Server

284

Rysunek 9.10. E-mail z załącznikiem Metoda AttachURL Jeśli wysyłasz wiadomość HTML, możesz chcieć włączyć w jej treść grafiki lub inne pliki. Jednym ze sposobów na dokonanie tego jest określenie ścieżki do pliku w Internecie przy użyciu odpowiedniego znacznika, na przykład Image. Innym sposobem jest włączenie pliku wprost do samej wiadomości. Robi się to poprzez metodę AttachURL, która pozwala na dodanie pliku do wiadomości tak, że staje się on częścią treści HTML. Metoda ta ma następującą składnię: ObjMail.AttachURL PathToFile, FileName, ContentBase, EncodingType

musi być ważnym obiektem NewMail biblioteki CDONTS. Parametr PathToFile jest wymagany i określa fizyczne położenie pliku. Parametr FileName jest użytą w HTML nazwą pliku i on również jest w metodzie wymagany. Wpisanie ContentBase nie jest wymagane, a stanowi ono bazę adresu URL dla załącznika. Podobnie nie musisz wpisywać wartości dla EncodingType. Jego wartość domyślna wynosi 0, co oznacza kodowanie UUEncode. Możesz jednak wykorzystać kodowanie Base 64, ustawiając dla tego parametru wartość 1. Powiedzmy, że stworzyłeś wiadomość, której treścią jest poniższy HTML: ObjMail

TheMessage = "" _ & "" _ & "Mamy wyprzedaż" _ & "" _ & "" _ & & "Wszystko tańsze o30% 50% !" _ & "" _ & "

Stój więc! kliknij tutaj!

" _ & "" _ & ""

Zauważ, że HTML zawiera znacznik Image. Możesz wykorzystać metodę AttachURL, aby załączyć tą grafikę do wiadomości e-mail: ObjMail.AttachURL "e:\inetpub\logo.gif", "logo.gif"

ASP – Kompendium programisty

285 Od tej pory grafika jest częścią wiadomości HTML. Metoda SetLocaleID

Metoda SetLocaleID jest używana do określenia odpowiednich formatów liczb, waluty, daty i innych, obowiązujących dla wiadomości. Metoda ma następującą składnię: ObjMail.SetLocaleID LocaleID

ObjMail musi być obiektem typu NewMail. LocaleID jest liczbą typu long i reprezentuje format wyświetlania wiadomości w zależności od lokalizacji.

Obiekt NewMail w działaniu Jeśli przeczytałeś ten rozdział, to wpadłeś już zapewne sam na wiele zastosowań obiektu NewMail. Umiejętność uzupełnienia twojej witryny WWW o wiadomości e-mail może podnieść jej jakość na wiele różnych sposobów. Wiele witryn WWW używa obiektu NewMail w celu przenoszenia prośby gości o udzielenie informacji. Narzędzie, którego ja używam, prezentuje odwiedzającym formularz, w który mogą wpisać swój adres e-mail, imię i nazwisko, numer telefonu i inne dane oraz swoją wiadomość. Następnie narzędzie zachęca gości do wybrania z listy tematu pasującego do ich wiadomości. Lista jest elementem formularza wyboru. Gościom wyświetlana jest tekstowa lista tematów, ale adres e-mail dla danego tematu przesyłany jest razem z formularzem. Tak więc inna osoba może odpowiadać za każdy z tematów. E-mail może być wysłany również do wielu osób, w tym wypadku ich adresy należy oddzielić od siebie średnikiem. Jeśli więc element formularza nosiłby nazwę Topic, mógłbyś ustawić według niego właściwość To: ObjMail.To = Request.Form("Topic")

Często również wykorzystuje się obiekt NewMail w celu wysłania powiadomienia o wystąpieniu określonego zdarzenia. Na przykład w witrynach handlowych konieczne jest zapamiętanie w bazie danych informacji o zamówieniu, ale może również okazać się, że należy wysłać wiadomość do osoby odpowiedzialnej za sklep, aby poinformować ją o konieczności przetworzenia zamówienia. Pewnie nie będziesz chciał wysyłać pocztą całego zamówienia, ponieważ może ono zawierać informacje zastrzeżone, jak choćby numery kart kredytowych. W rozdziale 7. przyjrzeliśmy się tworzeniu dokumentu Word przy użyciu kopii tego obiektu, wykorzystując przy tym metodę CreateObject obiektu Server. Dokument był tam generowany na bazie formularza w postaci listu wyświetlanego następnie odwiedzającemu. Mógłbyś jednak zmodyfikować ten kod w taki sposób, aby otrzymywał on dokument pocztą elektroniczną. Pamiętaj, że twoi goście mogą dysponować rozmaitymi systemami, na których zainstalowano różnego rodzaju narzędzia, tak więc wykorzystanie szerokiej gamy metod dla jednego zadania może być w tym względzie bardzo użyteczne. Zastanów się nad wykorzystywaniem wiadomości HTML zamiast zwykłego tekstu. Jest to o wiele lepsze, zwłaszcza jeśli chodzi o materiały reklamowe, a nie wymaga przecież dużej pracy. Użyj jedynie prostego narzędzia HTML podczas projektowania strony. Następnie przeglądnij źródło strony i skopiuj oraz wklej je do twojej strony ASP. Zamień je na ciąg i wpisz go do właściwości Body. Ta prosta zmiana może spowodować, że twój e-mail będzie się wyróżniał spośród wielu innych, które otrzymał odbiorca. Obiekt NewMail można wykorzystywać również do rozrywki, tworząc strony z kartkami pocztowymi lub kartami urodzinowymi. Te strony pozwalają gościowi wysyłać wiadomości do przyjaciół lub kolegów. E-mail informuje odbiorcę o tym, że otrzymali kartę urodzinową, kartkę pocztową lub jakąś inną, którą mogą odebrać na twojej witrynie. Następnie klikają łącze znajdujące się w treści wiadomości e-mail, które przenosi ich na twoją witrynę. Tam widzą wiadomość pozostawioną przez pierwszego jej gościa. Technika ta nie tylko pozwala gościom powrócić na witrynę, ale również wprowadza na nią nowych gości — a wszystko, czego przy tym potrzebuje, to formularz dla pierwszego gościa, gdzie mógłby wybrać typ kartki i jej tekst. Następnie użyć

Rozdział 9 – Obiekt CDO dla Windows NT Server

286

można obiektu NewMail w celu wysłania wiadomości do odbiorcy kartki. Kiedy goście powrócą na witrynę, ujrzą stronę ASP zawierającą informacje przekazane przez pierwszego przeglądającego. Łącząc ze sobą omówione do tej pory obiekty dysponujesz prawie nieograniczonymi możliwościami tworzenia aplikacji ASP.

Rozdział 10. Składniki ASP Obiekty zwiększające możliwości stron ASP Serwer IIS posiada rozmaite składniki, które wspierają proces tworzenia stron ASP. Jeden z nich, obiekt CDO, poznaliśmy w poprzednim rozdziale. Ale IIS wyposażono również w zbiór mniejszych składników, z których możesz skorzystać w kodzie podczas realizacji różnego rodzaju zadań. W tym rozdziale skoncentrujemy się na tych pomniejszych składnikach. Tabela 10.1. prezentuje te składniki oraz to, gdzie można je wykorzystać. Tabela 10.1. Składniki ASP Składnik Przeznaczenie Browser Dostarcza informacji o używanej przez gościa przeglądarce Capabilities oraz o jej możliwościach. Ad Rotator Dostarcza metod pozwalających na umieszczanie banerów w witrynie. Page Counter Pozwala na wyświetlanie i śledzenie liczby gości strony. Counters Dostarcza mechanizmów pozwalających na zachowywanie liczby, która ma być inkrementowana poprzez aplikację ASP. Content Linking Pozwala na stworzenie serii stron zorganizowanych na kształt książki i zaspokaja wszystkie potrzeby związane z poruszaniem się po tych stronach. Content Rotator Pozwala na włączenie do strony lub do jej elementu zawartości losowej. MyInfo Dostarcza obiektu wraz z licznymi właściwościami, których możesz użyć w celu zapamiętania informacji o tobie i twojej firmie.

Składnik Browser Capabilities Składnik Browser Capabilities dostarcza informacji o przeglądarce gościa oraz o systemie, którym dysponuje. Poniżej zaprezentowano proste wywołanie tego składnika: set BC = server.createobject("MSWC.BrowserType") Browser = BC.Browser & " " & BC.Version FramesSupport = BC.Frames Platform = BC. Platform

Kopia składnika Browser

Capabilities

jest tworzona przy użyciu metody CreateObject:

Rozdział 10 – Składniki ASP

288

set BC = server.createobject("MSWC.BrowserType")

Wywołanie tworzy kopię klasy BrowserType serwera MSWC i wpisuje ją do zmiennej obiektowej BC. Po wywołaniu w zmiennej Browser ustawiana jest nazwa i wersja przeglądarki używanej przez gościa: Browser = BC.Browser & " " & BC.Version

W zmiennej FramesSupport ustawiana jest wartość informująca o tym, czy przeglądarka gościa obsługuje ramki: FramesSupport = BC.Frames

Dodatkowo w zmiennej Platform zapisywana jest nazwa systemu operacyjnego gościa. Jest to realizowane przy użyciu właściwości Platform obiektu Browser Capabilities: Platform = BC.Platform

Składnik Browser Capabilities działa w bardzo prosty sposób. Wyszukuje zmienną nagłówka HTPP o nazwie User Agent, która zawiera kodowany w pewnym stopniu wiersz z informacjami o gościu. Wyszukana wartość jest następnie wykorzystywana do połączenia w pliku .ini o nazwie browscap.ini, który jest plikiem tekstowym zawierającym informacje konfiguracyjne dla wielu rozmaitych systemów operacyjnych i przeglądarek. Plik browscap.ini musi znajdować się w tym samym katalogu, co plik biblioteki składnika browscap.dll. Jeśli używasz Internet Explorera w systemie Windows NT, zawartość twojej zmiennej User Agent może wyglądać tak: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)

Składnik przegląda plik browscap.ini w poszukiwaniu takiego zapisu: [Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)*]

Poniżej znajduje się następująca informacja o konfiguracji systemowej: parent=IE 4.0 minorver=01 platform=WinNT

Zwróć uwagę na pierwszy wiersz określający przodka (parent). Informuje on o obecności w pliku browscap.ini pozycji o nazwie IE 4.0. Biblioteka użyje informacji zapisanych tutaj, a w przypadku braku którejś z nich, użyje wartości w przodku tego typu. W katalogu nadrzędnym zapisana zostanie konfiguracja dla tego jednego systemu: browser=IE Version=4.0 majorver=#4 minorver=#0 frames=TRUE tables=TRUE cookies=TRUE backgroundsounds=TRUE vbscript=TRUE javascript=TRUE javaapplets=TRUE

ASP – Kompendium programisty

289 ActiveXControls=TRUE Win16=False beta=False AK=False SK=False AOL=False crawler=False CDF=True

Jeśli korzystałeś z przeglądarki Netscape Navigator w systemie Windows 95, nagłówek zwróci tą wartość: Mozilla/4.0 * (Win95; U)

Składnik Browser

Capabilities

będzie szukał tej wartości w pliku browscap.ini i znajdzie taki zapis:

parent=Netscape 4.0 platform=Win95

Zauważ, że w pozycji przodka znajduje się teraz nazwa Netscape 4.0. Składnik poszuka tej wartości dla innych właściwości i znajdzie następujące pozycje: browser=Netscape version=4.0 majorver=#4 minorver=#0 frames=TRUE tables=TRUE cookies=TRUE backgroundsounds=FALSE vbscript=FALSE javascript=TRUE javaapplets=TRUE ActiveXControls=FALSE beta=False

Możesz użyć składnika Browser Spójrz na ten przykładowy kod:

Capabilities

przy pisaniu kodu, który określa możliwości systemu gościa.

Na wstępie kod stwierdza, że deklarowane będą zmienne: Option Explicit

Następnie tworzymy zmienną o nazwie BC: Dim BC

W zmiennej BC tworzona jest kopia składnika Browser

Capabilities:

set BC = server.createobject("MSWC.BrowserType")

Do przeglądarki wpisywana jest nazwa i wersja przeglądarki gościa: Response.Write "Przeglądarka: " & BC.Browser & " " & BC.Version & "
"

Dalej do przeglądarki wpisywana jest platforma, system operacyjny gościa: Response.Write "Platforma: " & BC.Platform & "
"

Teraz z kolei do przeglądarki wpisywana jest informacja o tym, czy przeglądarka obsługuje dynamiczny HTML. Możliwe dla tej właściwości wartości to prawda (True), fałsz (False) oraz nieznany (Unknown): Response.Write "DHTML: " & BC.dhtml & "
"

Następny zapis odpowiada na pytanie, czy przeglądarka wyświetla ramki. Możliwe wartości dla tej właściwości to True, False i Unknown: Response.Write "Ramki: " & BC.frames & "

"

Tutaj składnik Browser True, False i Unknown:

Capabilities

informuje o tym, czy przeglądarka wyświetla tabele. Możliwe wartości to

Response.Write "Tabele: " & BC.tables & "
"

Czy przeglądarka gościa obsługuje znaczniki cookie? Możliwe wartości dla tej właściwości to True, False i Unknown. Pamiętaj, że przeglądarka może obsługiwać cookies, ale gość może dysponować narzędziem blokującym te znaczniki: Response.Write "Cookies: " & BC.cookies & "
"

Czy przeglądarka potrafi odtwarzać dźwięki tła? Możliwe wartości dla tej właściwości to True, False i Unknown: Response.Write "Dźwięki tła: " & BC.backgroundsounds & "
"

ASP – Kompendium programisty

291

Czy przeglądarka potrafi przetwarzać VBScript po stronie klienta? Zwróć uwagę na to, że mówimy tutaj o stronie klienta, co nie ma nic wspólnego ze stronami ASP, które są przetwarzane przez twój serwer. Możliwe wartości dla tej właściwości to True, False i Unknown: Response.Write "VBScript: " & BC.vbscript & "

"

To samo pytanie tyczy się JavaScriptu. Ponownie odnosimy się do możliwości po stronie klienta. Możliwe wartości dla tej właściwości to True, False i Unknown: Response.Write "JavaScript: " & BC.javascript & "
"

Czy przeglądarka obsługuje dodatki Javy? Odpowiedź na to pytanie zawarta jest we właściwości JavaApplets składnika Browser Capabilities: Response.Write "Dodatki Javy: " & BC.javaapplets & "
"

Czy przeglądarka może współpracować ze składnikami ActiveX po stronie klienta? Możliwe wartości dla tej właściwości to True, False i Unknown: Response.Write "Obiekty sterujące ActiveX: " & BC.activexcontrols & "
"

Czy gość używa AOL? Możliwe wartości dla tej właściwości to True, False i Unknown: Response.Write "AOL: " & BC.AOL & "

"

Czy przeglądarka jest wersji beta? Możliwe wartości dla tej właściwości to True, False i Unknown: Response.Write "Beta: " & BC.Beta & "
"

I wreszcie, czy przeglądarka obsługuje format CDF? Możliwe wartości dla tej właściwości to True, False i Unknown: Response.Write "CDF: " & BC.cdf

Rysunek 10.1. przedstawia wyjście tej strony w systemie Windows 98 używającym przeglądarki Netscape Navigator 4.0.

Rozdział 10 – Składniki ASP

292

Rysunek 10.1. Wyjście kodu wykorzystującego składnik Browser

Capabilities

Rysunek 10.2. Wyjście kodu wykorzystującego składnik Browser

Capabilities

Rysunek 10.2 prezentuje wyjście kodu w systemie Windows NT z uruchomionym Internet Explorerem 5.0. Najważniejszą możliwością wykorzystania tego kodu jest kierowanie gości do właściwej wersji twojej witryny WWW. Może ona zawierać witrynę optymalizowaną dla Internet Explorera, drugą dla Netscape Navigatora, trzecią dla WebTV i kolejną dla pozostałych typów przeglądarek. Możesz to zrobić wykorzystując kod taki jak ten:

Na wstępie wymagana jest deklaracja zmiennych: Option Explicit

Tworzona jest zmienna o nazwie BC: Dim BC

Zmienna wykorzystana jest do stworzenia kopii obiektu Browser

Capabilities:

set BC = server.createobject("MSWC.BrowserType")

Następnie zapytujemy właściwość Browser obiektu Browser Internet Explorer:

Capabilities,

czy używana przeglądarka to

If BC.Browser = "IE" then

Jeśli tak, to gość jest readresowany do podkatalogu zawierającego strony dla tej przeglądarki: Response.redirect "./IE/index.asp"

W innym wypadku kod sprawdza, czy używana przeglądarka to Netscape Navigator: ElseIf BC.Browser = "Netscape" then

Jeśli to prawda, gość odsyłany jest do katalogu Netscape: Response.redirect "./Netscape/index.asp"

Coraz bardziej popularną przeglądarką staje się WebTV. Jeśli szerokie grono twych gości korzysta z tego narzędzia, stanowczo musisz dysponować witryną w wersji odpowiadającej ich potrzebom: ElseIf BC.Browser = "WebTV" then

Jeśli jest to ich typ przeglądarki, są readresowani do podkatalogu WebTV: Response.redirect "./WebTV/index.asp"

w przeciwnym razie gości odsyła się do domyślnego widoku twojej witryny:

Rozdział 10 – Składniki ASP

294

Response.redirect "./other/index.asp"

Kolejnym powodem do readresowania twoich gości do określonej wersji witryny są różnice w technologiach. Jeśli martwisz się o to, czy starsze przeglądarki będą mogły korzystać z twojej witryny, to metodą na zróżnicowanie wyglądu twojej witryny jest sprawdzenie obsługi tabel i ramek. Zwróć uwagę na ten kod:

Jak zwykle wymagana jest deklaracja zmiennych: Option Explicit

Tworzona jest zmienna BC: Dim BC

i ustawiany jest w niej obiekt Browser

Capabilities:

set BC = server.createobject("MSWC.BrowserType")

Zaczynamy od pytania podstawowego. Czy przeglądarka obsługuje tabele i ramki? If BC.Tables = "True" and BC.Frames = "True" then

Jeśli przeglądarka obsługuje zarówno jedno, jak i drugie, gość odsyłany jest tutaj: Response.Redirect "./full/index.asp"

Następnie cofamy się o jeden poziom w technologii. Ramki pojawiły się później niż tabele, usuwamy więc z równania pytanie o ramki i sprawdzamy, czy przeglądarka obsługuje przynajmniej tabele: ElseIf BC.Tables = "True" then

Jeśli tak jest, wykorzystujemy metodę Redirect obiektu Response w celu odesłania gości do odpowiedniego miejsca: Response.Redirect "./noframes/index.asp"

W innym wypadku przeglądarka gościa nie obsługuje żadnej z tych technologii i wtedy odsyłamy go do podstawowej wersji naszej witryny:

ASP – Kompendium programisty

295 Else Response.Redirect "./none/index.asp"

Pamiętaj, że składnik szuka pozycji User Agent w pliku .ini i dopasowuje ją do wartości zmiennej User Agent zwróconej przez nagłówek HTPP. Plik .ini jest jedynie plikiem tekstowym zawierającym zbiór różnego rodzaju wydruków, co oznacza, że jeśli nie będziesz się nim zajmował — plik szybko stanie się przestarzały. Faktycznie, jeśli instalujesz nowy IIS, prawdopodobnie będzie on dysponował przestarzałą wersją pliku .ini. Jeśli więc korzystasz z tego narzędzia, musisz dokładać starań, aby plik był stale aktualny. Jednym z miejsc, w których możesz otrzymać uaktualnienie jest cyScape, Inc. (http://www.cyscape.com/browscap). Firma często udostępnia nową wersję pliku browscap.ini wraz z dodatkami i poprawkami. Możesz zgłosić chęć otrzymywania uaktualnienia przez e-mail, wtedy firma powiadamia cię o pojawieniu się nowych wersji pliku. cyScape dysponuje również własną wersją składnika Browser Capabilities, która zawiera dodatkowe właściwości, inne niż te omówione w bieżącym podrozdziale.

Modyfikacja pliku browser.ini Możesz również sam uaktualnić plik. Pamiętaj, że jest to tylko plik tekstowy, który musi mieć określony format. Jeśli chcesz go zmodyfikować, najpierw stwórz sobie jego kopię zapasową. Wtedy możesz wykorzystać poniższy opis w celu modyfikacji poszczególnych sekcji pliku. Komentarzem w pliku jest każdy wiersz rozpoczynający się średnikiem: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Definicja mojej przeglądarki ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Każda część pliku zawiera albo nagłówek User Agent, albo definicję przodka. Mógłbyś na przykład zdefiniować przeglądarkę, której nie było na liście, a dla której zwracany byłby następujący ciąg w User

Agent:

[My Browser/1.2.2beta (Windows 95)]

Zwróć uwagę na to, że definicja sekcji jest umieszczona w nawiasie kwadratowym. W następnej kolejności pojawiają się właściwości sekcji. Kontynuuj ich wypisywanie dopóki nie pojawi się kolejny nagłówek sekcji. Mógłbyś zdefiniować właściwości twojej sekcji w następujący sposób: parent=MyBrowser 1.0 platform=Win95 beta=True

Zwróć uwagę na szczególną pozycję o nazwie parent (przodek), która informuje o tym, że gdzieś w pliku .ini znajduje się pozycja MyBrowser 1.0. Przejdź do tej pozycji i użyj wszystkich właściwości o ile nie określiłem jakiejś w tej sekcji. W następnej kolejności określona została platforma oraz typ przeglądarki, beta. Gdzieś w pliku .ini musimy dodać sekcję określającą przodka. Pasuje ona dokładnie do nazwy użytej tutaj, a wygląda następująco: [MyBrowser 1.0] browser=MyBrowser version=1.0 majorver=#1 minorver=#0 frames=FALSE tables=TRUE cookies=TRUE backgroundsounds=FALSE

Rozdział 10 – Składniki ASP

296

vbscript=TRUE javascript=FALSE javaapplets= FALSE Platform=Windows95 beta=False

Zauważ, że niektóre pozycje są powtórzone tutaj, w przodku. Te, których użyto w rzeczywistej definicji unieważniają pozycje przodka, który po prostu zapamiętuje domyślne wartości nie zdefiniowane ponownie przez pozycję potomka.

Składnik Ad Rotator Składnik Ad Rotator udostępnia narzędzi do zarządzania paskami reklamowymi (banerami) pojawiającymi się na stronie WWW. Składnik będzie losowo wyświetlał pasek na stronie ASP za każdym razem, kiedy ktoś uzyskuje do niej dostęp. Składnik używa oddzielnego pliku harmonogramu, który stworzony jest w celu określenia częstości wyświetlania jednych banerów względem drugich. Wywołanie składnika Ad Rotator wygląda następująco: set objAdRot = server.createobject("MSWC.AdRotator") Response.Write objAdRot.GetAdvertisement("./html/AdFiles/AdFile.txt)

Pierwszy wiersz tworzy kopię klasy AdRotator będącej klasą MSWC, umieszczając ją w zmiennej obiektowej o nazwie objAdRot: set objAdRot = server.createobject("MSWC.AdRotator")

Następnie wywoływana jest metoda GetAdvertisement w celu wyszukania informacji o pasku reklamowym, który będzie wyświetlany. Zwracana wartość wpisana zostaje do przeglądarki przy użyciu metody Write obiektu Response: Response.Write objAdRot.GetAdvertisement("./html/AdFiles/AdFile.txt)

A oto ta wpisywana do przeglądarki wartość:

Metodzie GetAdvertisement przekazywany jest jeden parametr, ścieżka do pliku Schedule, zawierającego listę wyświetlanych banerów oraz informacje o częstości wyświetlania każdego z nich. Plik Schedule zawiera również działania, jakie należy podjąć w chwili, gdy gość kliknie baner, a także rozmiar prezentowanego obrazka. Metoda GetAdvertisement sprawdza wszystkie wartości pliku Schedule i wytwarza pokazane powyżej wyjście. Zawartość pliku Schedule w tym autentycznym przykładzie zaprezentowano tutaj: Redirect http://www.netstats2000.com/nmaha/html/AdFiles/AdRedirect.asp width 468 height 60 border 0

ASP – Kompendium programisty

297 * http://www.netstats2000.com/nmaha/html/AdFiles/ha.gif http://www.netstats2000.com/nmaha/html/AdFiles/HA.html Get your organization online 10 http://www.netstats2000.com/nmaha/html/AdFiles/sgianim.gif http://www.silkgraph.com Silkscreen Graphics Inc. 10 http://www.netstats2000.com/nmaha/html/AdFiles/forrent.gif mailto:[email protected] Space For Rent 10

Pierwsza sekcja pliku Schedule zawiera informacje konfiguracyjne. Pierwszy wiersz określa ścieżkę do strony, do której goście są odsyłani po kliknięciu paska reklamowego: Redirect http://www.netstats2000.com/nmaha/html/AdFiles/AdRedirect.asp

Za pomocą zbioru QueryString stronie przekazywana jest nazwa klikniętego obrazka oraz adres, do którego należy po tej akcji przejść. Drugi i trzeci wiersz pierwszej sekcji określa szerokość i wysokość paska reklamowego: width 468 height 60

Czwarty wiersz określa jego obwódkę: border 0

Spójrz na poprzedni HTML wytworzony przez metodę GetAdvertisement, a zobaczysz w nim informacje konfiguracyjne. Pojedyncza gwiazdka zakańcza sekcję konfiguracyjną: *

Dalej w pliku znajduje się lista banerów z ich harmonogramem. Pierwszy wiersz każdej pozycji banera jest ścieżką dostępu do niego: http://www.netstats2000.com/nmaha/html/AdFiles/ha.gif

Potem pojawia się lokalizacja WWW, do której ostatecznie goście będą readresowani po kliknięciu banera: http://www.netstats2000.com/nmaha/html/AdFiles/HA.html

W trzecim wierszu znajduje się tekst etykietki: Get your organization online

Czwarty wiersz zawiera proporcjonalną liczbę określającą częstość wyświetlania jednego banera w stosunku do innych: 10

Rozdział 10 – Składniki ASP

298

Wyjście wytworzone przez tą pozycję pliku obrotu banera pokazane jest na rysunku 10.3. Zwróć uwagę na baner znajdujący się na szczycie tego rysunku. Jest on tworem pierwszej pozycji pliku obrotu, tak więc tekst etykiety zgadza się z tym, co pokazano na rysunku, a na pasku statusu widać adres URL, z którym łączy się baner.

Rysunek 10.3. Pierwszy obrót paska reklamowego Jeśli spojrzysz wstecz na całość pliku Schedule, zauważysz, że opisana wyżej struktura się powtarza. Następny punkt wyświetli grafikę: http://www.netstats2000.com/nmaha/html/AdFiles/sgianim.gif

Jeśli gość kliknie tą grafikę, zostaje odesłany do następującego adresu URL: http://www.silkgraph.com

Tekst etykietki dla grafiki: Silkscreen Graphics Inc.

Relatywna liczba wyświetleń tej grafiki w porównaniu z innymi jest taka: 10

Ta pozycja wyświetli widok strony pokazany na rysunku 10.4. Zauważ, że grafika odpowiada treści pliku obrotu. Poza tym zwróć uwagę, że jest to ta sama strona, na której prezentowany był poprzedni baner. Za każdym razem, gdy strona jest przeglądana, pojawia się na niej inna grafika, mianowicie ta, która dawno nie była wyświetlana.

ASP – Kompendium programisty

299

Rysunek 10.4. Drugie ogłoszenie z pliku obrotu Ponadto każda strona miała zaplanowaną tą samą proporcję wyświetleń, 10, ale tak być nie musi. Możesz dla jednej strony ustawić wartość 20, a dla pozostałych dwóch 10. Oznaczałoby to, że pierwsza strona ukazywałaby się dwa razy częściej niż dwie pozostałe. Pamiętaj, że pierwszy wiersz pliku Schedule określa miejsce, do którego odsyłani są goście, gdy klikną pasek reklamowy: Redirect http://www.netstats2000.com/nmaha/html/AdFiles/AdRedirect.asp width 468

Ta strona ASP normalnie nie zawiera wyjścia. Daje ci ona możliwość zapisywania kliknięć banera (clickthrough) w bazie danych w celu dalszej analizy. Poniżej przedstawiono przykład takiego kodu.

Na początku kod łączy się z bazą danych: set conn = server.createobject ("adodb.connection") conn.open "EmpDir", "sa", "yourpassword"

Następnie kod dodaje rekord do tabeli o nazwie Referrals, zawierający nazwę banera klikniętego przez gościa: conn.execute "insert into Referrals (ReferredTo) values ('" _ & Request.QueryString("url") & "')"

Rozdział 10 – Składniki ASP

300

W końcu goście są readresowani do miejsca położenia klikniętego banera w witrynie WWW: response.redirect(Request.QueryString("url"))

Pomyśl o innych polach, które chciałbyś zawrzeć w tej pozycji. Na przykład prawdopodobnie będziesz chciał zapisywać datę i godzinę kliknięcia banera przez gościa. Możesz również wykorzystać składnik Browser Capabilities, omówiony we wcześniejszym podrozdziale, w celu zapisywania obszernych informacji na temat narzędzi gościa, który kliknął pasek reklamowy. Z drugiej strony może chciałbyś dysponować stroną, na której reklamujący się mogliby sprawdzić ile razy ich baner był kliknięty. Taką stronę prezentuje rysunek 10.5.

Rysunek 10.5. Przykładowa strona raportu kliknięć Domyślnie strona ładuje się wyświetlając datę w skali rocznej. Kiedy goście klikną przycisk Wyświetl raport, zobaczą wynik ich zapytania pokazany na rysunku 10.6.

ASP – Kompendium programisty

301

Rysunek 10.6. Wynik zapytania o ilość kliknięć Kod strony wyśle zapytanie do bazy danych o oparciu o informacje przesłane w formularzu. Kod strony również musi wyświetlać informacje w skali rocznej. Główny blok kodowy jest następujący:

Na wstępie wykorzystujemy dyrektywę Option

Explicit:

Rozdział 10 – Składniki ASP

302

Option Explicit

Następne deklarujemy zmienną zapamiętującą połączenie z bazą danych: Dim conn

Dalej deklarujemy zmienną przechowującą informacje z bazy danych: Dim RSHits

Zmienna wiadomości będzie wyświetlała w przeglądarce instrukcje lub wynik zapytania: Dim TheMessage

Kolejne dwie zmienne będą przechowywały domyślną datę początkową: Dim StartDate

i datę końcową: Dim EndDate

Strona ma dwa stany. W stanie początkowym strona właśnie została wyświetlona i goście muszą ujrzeć instrukcje postępowania. W stanie przesyłania goście wysyłają formularz, a my musimy go przetworzyć. Stan strony określamy sprawdzając w zbiorze Form, czy przycisk wyświetlający raport (DisplayReport) został naciśnięty. If Not IsEmpty(Request.Form("DisplayReport")) Then

Jeśli element zbioru formularza nie jest pusty, formularz został przesłany. W tym wypadku musimy połączyć się z bazą danych, aby ustalić liczbę kliknięć. Tworzony jest obiekt Connection: set conn = server.createobject ("adodb.connection")

który łączy się z żądaną bazą danych: conn.open "EmpDir", "sa", "yourpassword"

Uruchamiane jest zapytanie, które zwraca liczbę rekordów dla poszczególnego użytkownika pomiędzy wybranymi przez niego datami: set RSHits = conn.Execute("select Count(ReferralID) as TheCount " _ & "from Referrals " _ & "where UserName = '" & Request.Form("UserName") & "' " _ & "and HitDate >= '" & Request.Form("StartDate") & "' " _ & "and HitDate