Aplikacje WWW

26
Aplikacje WWW Aplikacje WWW Prowadzący: Dr inż. Tomasz Molik Materiały dostępne na stronie: http://bazy.kil.swspiz.pl/~moliktom/ Hasło: ...........

description

Aplikacje WWW. Prowadzący: Dr inż. Tomasz Molik. Materiały dostępne na stronie: http://bazy.kil.swspiz.pl/~moliktom/ Hasło:. Przekazywanie parametrów żądania HTTP. - PowerPoint PPT Presentation

Transcript of Aplikacje WWW

Page 1: Aplikacje WWW

Aplikacje WWWAplikacje WWW

Prowadzący:Dr inż. Tomasz Molik

Materiały dostępne na stronie:http://bazy.kil.swspiz.pl/~moliktom/

Hasło: ...........

Page 2: Aplikacje WWW

Przekazywanie parametrów żądania HTTP

Często w przypadku gdy żądanie klienta HTTP dotyczy uruchomienia aplikacji znajdującej się po stronie serwera HTTP, klient HTTP przekazuje parametry wywołania takiej aplikacji. Parametry wywołania mogą być przekazane za pośrednictwem protokołu HTTP na dwa sposoby:1. Rozkaz GET, parametry dołączone do adresu URL skojarzonego z aplikacją.2. Rozkaz POST, parametry przekazywane w ciele żądania HTTP.

Na slajdzie przedstawiono obie metody przekazywania parametrów wywołania aplikacji znajdującej się po stronie serwera HTTP. W pierwszym przypadku zależnie od klienta HTTP zwykle istnieje ograniczenie na łączny rozmiar łańcucha znakowego zawierającego parametry żądania HTTP. W drugim przypadku rozmiary parametrów nie są ograniczone.

Page 3: Aplikacje WWW

Uwierzytelnianie w HTTP – Basic AuthenticationNie wszystkie dokumenty zgromadzone po stronie serwera HTTP powinny być udostępniane każdemu użytkownikowi. Jedną z najprostszych metod ochrony dostępu jest uwierzytelnianie użytkowników za pomocą nazwy i hasła.

Protokół HTTP obsługuje prostą metodę uwierzytelniania użytkowników nazwaną Basic Authentication. Jeżeli serwer HTTP wymaga uwierzytelnienia użytkownika, wtedy odpowiedź na żądanie HTTP zawiera kod zwrotny 401 (Authorization Required), oznaczający, że klient HTTP powinien zażądać od użytkownika wprowadzenia nazwy i hasła.

W takiej sytuacji klient HTTP pobiera od użytkownika jego nazwę i hasło, łączy je w jeden łańcuch znakowy, koduje za pomocą algorytmu Base64, a następnie zapisuje w polunagłówka „Authorization” ponowionego żądania HTTP. Jeżeli wynik weryfikacji nazwy/hasła użytkownika przez serwer HTTP jest negatywny, serwer HTTP ponownie przesyła kod zwrotny 401 (Authorization Required) – aż do skutku. Wprowadzone przez użytkownika dane uwierzytelniające są przez klienta HTTP automatycznie dołączane do kolejnych żądań HTTP.

Należy zauważyć, że metoda HTTP Basic Authentication nie zapewnia ochrony przekazywanych danych uwierzytelniających. Kodowanie Base64 jest odwracalne, dzięki czemu ewentualny podsłuch połączenia HTTP umożliwia intruzowi przejęcie nazwy i hasła użytkownika. Pewniejsze metody uwierzytelniania użytkowników opierają się na formularzach HTML, których dane są przekazywane za pośrednictwem szyfrowanego protokołu HTTPS.

Page 4: Aplikacje WWW

HTTPSWadą podstawowego protokołu HTTP jest brak zabezpieczenia poufności komunikacji pomiędzy klientem HTTP a serwerem HTTP. Komendy, parametry, dane z formularzy, zmienne Cookie i dokumenty są przesyłane w postaci czytelnego tekstu. Hasła uwierzytelniające są kodowane w prymitywny sposób.

W celu zapewnienia bezpieczeństwa komunikacji w środowisku WWW powszechnie stosuje się protokół HTTPS, który w przeciwieństwie do HTTP, opartego bezpośrednio na TCP, wykorzystuje warstwę komunikacyjną SSL. SSL obsługuje szyfrowanie transmisji, kontrolę jej integralności oraz uwierzytelnianie serwera, a opcjonalnie także klienta. Dzięki temu komunikaty żądań HTTP i odpowiedzi HTTP nie są narażone na łatwy podsłuch lub ingerencję osób trzecich.

Podczas nawiązywania połączenia HTTPS klient HTTP otrzymuje od serwera HTTP certyfikat klucza publicznego, na podstawie którego potwierdza się tożsamość serwera HTTP. Aby certyfikat ten został uznany przez klienta HTTP, wystawiający go urząd certyfikacyjny powinien zostać uprzednio zarejestrowany w aplikacji klienta HTTP. W przeciwnym razie certyfikat serwera HTTP będzie uznany za nielegalny.

Page 5: Aplikacje WWW

HTTPSW pewnym uproszczeniu, połączenie HTTPS przebiega w następujących krokach:1. Klient HTTP wysyła do serwera HTTP sygnał otwarcia połączenia SSL. W tym celu użytkownik końcowy posługuje się symbolem "https" (zamiast "http") w adresie URL.2. Serwer HTTP wysyła do klienta HTTP swój certyfikat klucza publicznego, stanowiący poświadczenie tożsamości serwera. 3. Klient HTTP dokonuje weryfikacji otrzymanego certyfikatu:• czy nazwa właściciela zgadza się z nazwą DNS serwera HTTP?• czy wystawca certyfikatu należy do zbioru zaufanych urzędów certyfikacyjnych?• czy data ważności certyfikatu nie wygasła?Jeżeli wynik weryfikacji certyfikatu jest negatywny, aplikacja klienta HTTP zwraca się do użytkownika końcowego z pytaniem o kontynuowanie połączenia.4. Klient HTTP wymienia z serwerem HTTP klucz szyfrujący.5. Klient HTTP szyfruje komunikat żądania HTTP i przesyła go do serwera HTTP.6. Serwer HTTP szyfruje komunikat odpowiedzi HTTP i przesyła go do klienta HTTP. Połączenie jest zamykane.

Page 6: Aplikacje WWW

Zmienne CookiesProtokół HTTP został zaprojektowany jako bezstanowy, co oznacza, że serwer HTTP nie potrafi rozpoznać czy określone żądania HTTP pochodzą od tego samego użytkownika końcowego, czy od użytkowników niezależnych. Ponieważ wiele zastosowań aplikacyjnych wymaga korelowania żądań HTTP, dlatego zaproponowano rozszerzenie funkcjonalności protokołu o obsługę niewielkich zmiennych o czasie życia dłuższym od czasu trwania połączenia HTTP. Zmienne te nazwano Cookies.

Zmienna Cookie jest powoływana do życia przez aplikację pracującą po stronie serwera HTTP, a następnie przesyłana do klienta HTTP. Zadaniem klienta HTTP jest przechować tę zmienną, a następnie wysyłać ją do serwera HTTP wraz z kolejnymi żądaniami HTTP.

Dzięki temu serwer HTTP ma możliwość tymczasowego przechowywania zmiennych w pamięci klienta HTTP, a co się z tym wiąże, podtrzymywać stan aplikacji obsługującej klienta.

Każda zmienna Cookie posiada nazwę, wartość będącą łańcuchem znakowym, wartość, czas życia określający jak długo klient HTTP powinien ją przechowywać, oraz zasięg rozumiany jako dziedzinę adresów URL (domena+ścieżka), którym zmienna ta będzie udostępniana. Jeżeli czas życia zmiennej Cookie wynosi 0, to zmienna jest przechowywana do momentu zamknięcia przeglądarki. Zmienne Cookies są zapisywana na dysku przez klienta HTTP.

Page 7: Aplikacje WWW

Zmienne CookiesPrzesyłanie Cookies pomiędzy klientem a serwerem HTTP przebiega następująco:1. Klient HTTP wysyła do serwera HTTP żądanie uruchomienia aplikacji.2. Serwer HTTP wysyła do klienta HTTP odpowiedź wygenerowaną przez aplikację. W nagłówku odpowiedzi HTTP znajduje się pole Set-Cookie, zawierające m.in. nazwę i wartość zmiennej Cookie: v1=ABC. Przekazywane zmienne oddzielone są średnikiem.3. Klient HTTP pobiera zmienną Cookie z otrzymanego nagłówka odpowiedzi HTTP i zapisuje na dysku lokalnym.4. Podczas wysyłania każdego następnego żądania HTTP klient umieszcza w jego nagłówku pole Cookie, zawierające nazwę i wartość zmiennej Cookie. W ten sposób zmienna powraca do serwera HTTP i może być wykorzystywana przez jego aplikacje.

Page 8: Aplikacje WWW

Buforowanie dokumentówW celu skrócenia czasu odpowiedzi na żądanie użytkownika, a także w celu redukcji obciążenia serwerów HTTP i łączy, klient HTTP buforuje pobierane dokumenty na dysku i wykorzystuje je do uproszczonej obsługi nowych żądań.

Gdy użytkownik formułuje nowe żądanie, bufor ten jest przeszukiwany w celu znalezienia kopii żądanego dokumentu. Jeżeli taka kopia zostanie znaleziona, klient HTTP rezygnuje z połączenia z serwerem HTTP i natychmiast przedstawia posiadaną kopię użytkownikowi.Ten rodzaj buforowania stwarza zagrożenie, iż kopia dokumentu znajdująca się w buforze nie jest już identyczna z oryginalnym dokumentem znajdującym się po stronie serwera HTTP, który mógł ulec modyfikacjom.

Aby uniknąć ryzyka niespójności, klient HTTP stosuje jeden z algorytmów kontroli spójnościbufora:1. Kopie dokumentów są przechowywane w buforze wyłącznie przez czas ważności zadeklarowany przez serwer HTTP.2. Klient HTTP każdorazowo odpytuje serwer HTTP, czy kopia dokumentu utworzona w podanym momencie czasowym jest nadal identyczna z oryginałem.3. Klient HTTP każdorazowo odpytuje serwer HTTP, czy identyfikator wersji kopii dokumentu jest nadal identyczny z identyfikatorem wersji oryginału.

Page 9: Aplikacje WWW

Formularze HTMLFormularz HTML jest fragmentem dokumentu HTML zawierającym kontrolkiumożliwiające wprowadzanie danych. Formularz HTML jest de facto jedynymmechanizmem umożliwiającym użytkownikowi przekazanie danych do aplikacjiinternetowej.

Dane przekazywane z formularza mogą mieć różne zastosowanie, mogąto być np. kryteria wyszukiwania przekazane do wyszukiwarki, dane osobowerejestrowane w formularzu zgłoszeniowym, czy numer konta i hasło podawanepodczas logowania do banku internetowego.

Kontrolki umieszczane w formularzach HTML obejmują: pola tekstowe, pola haseł, pola wyboru, listy rozwijane i przyciski. Dodatkowo, formularz może zawierać pola ukryte.Dzięki bogatemu zestawowi kontrolek użytkownik wprowadza dane w sposóbprzypominający pracę z tradycyjnymi aplikacjami. Formularz przesyła danewprowadzone przez użytkownika do aplikacji działającej po stronie serwera HTTP. Wzależności od wybranej metody przesłania formularza dane mogą być jeszczedodatkowo zakodowane za pomocą kodowania URL (ang. URL-encoding).

Page 10: Aplikacje WWW

Formularze HTML – przykład

Page 11: Aplikacje WWW

Elementy formularza w HTMLCała zawartość formularza jest ujęta w znaczniki <form>...</form>. Najczęściej dokonstruowania elementów formularza wykorzystujemy znacznik <input>.

W zależności od wartości atrybutu type możemy utworzyć następujące elementy formularza:• type="text": pole tekstowe• type="radio": element grupy przycisków radiowych, do jednej grupy trafiają wszystkieprzyciski o tej samej wartości atrybutu name• type="password": pole z hasłem, znaki wpisywane do pola nie są widoczne• type="checkbox": pole wyboru• type="file": pole służące do wyboru pliku i jego wysłania na serwer• type="submit": przycisk służący do wysyłania formularza• type="reset": przycisk służący do czyszczenia zawartości formularza• type="button": przycisk• type="image": graficzny przycisk wysłania formularza

Oprócz znacznika <input> elementy formularza można również utworzyć za pomocąnastępujących znaczników:• <textarea rows="n" cols="m">: tworzy pole tekstowe typu memo o podanej liczbie wierszy ikolumn• <select>: tworzy listę rozwijaną, kolejne pozycje na liście są tworzone za pomocąznaczników <option>• <hidden>: tworzy element ukryty, który nie jest wyświetlany w formularzu

Page 12: Aplikacje WWW

Atrybuty elementów formularza w HTMLWygląd i zachowanie formularza można modyfikować za pomocą atrybutów elementów formularza.

Do najczęściej używanych atrybutów należą:• name: nazwa elementu formularza, wymagany dla wszystkich elementów pozaprzyciskami typu submit i reset• value: dla pól tekstowych i pól z hasłami zawiera domyślną wartość pola, dlaprzycisków zawiera etykietę przycisku, dla pól wyboru i przycisków radiowych zawierawartość elementu przesyłaną do aplikacji• size: rozmiar elementu• readonly: flaga oznaczająca, czy dany element może być modyfikowany• checked: flaga oznaczająca, czy dany element jest początkowo wyświetlonyjako zaznaczony (dotyczy przycisków radiowych i pól wyboru), np. checked="checked"• disabled: element wyłączony, np. disabled="disabled"

Page 13: Aplikacje WWW

Wysłanie formularzaAtrybut action znacznika <form> określa adres URI (ang. Uniform Resource Identifier)serwera/skryptu, który zajmie się przetwarzaniem danych wysłanych z formularza.

<form action="http://domain.com/form.cgi" method=„GET">

Zawartość formularza jest przesyłana za pomocą protokołu HTTP do serwera HTTP i tam przetwarzana.

Dane z formularza mogą być przesłane wg. jednej z dwóch metod:

• method="GET": dane są kodowane w postaci łańcucha znaków i doklejane doadresu URL podanego w atrybucie action w postaci par: nazwa atrybutu=wartośćatrybutu, poszczególne atrybuty są odseparowane od siebie znakiem &, a spacje sąreprezentowane przez znak +, np.

http://domain.com/form.cgi?osoba=Mikolaj+Morzy&miasto=New+York

• method="POST": dane są przesyłane wewnątrz komunikatu protokołu HTTP

Page 14: Aplikacje WWW

PHPPHP (ang. Hypertext Preprocessor) to język skryptowy ogólnego przeznaczenia, ale opracowany z myślą o aplikacjach WWW do dynamicznej generacji stron WWW po stronie serwera.

PHP jest bardzo łatwy do opanowania w stopniu umożliwiającym tworzenie rzeczywistych aplikacji. Stąd m.in. jego bardzo duża popularność.

Składnia PHP przypomina składnię języka C z elementami Perla. PHP jest szybki i oszczędza zasoby serwera. Jest szczególnie popularny w systemie Linux, w połączeniu z serwerem HTTP Apache, ale dostępny jest dla wielu systemów operacyjnych (w tym MS Windows) i serwerów HTTP.

PHP jest rozwijany na zasadach Open Source. Jest darmowy, rozszerzalny, pojawiającesię w nim błędy są szybko wykrywane i poprawiane. Wsparcie, rozwiązania typowychproblemów i przykłady kodu można bez problemu znaleźć w Internecie.

Page 15: Aplikacje WWW

PHPPHP jest językiem zaprojektowanym z myślą o zagnieżdżaniu w HTML. Przejście dotrybu PHP jest określane jako wyskakiwanie z HTML.

Cztery sposoby wyskakiwania z HTML zilustrowane na slajdzie:1. Podstawowy i zalecany sposób zagnieżdżania kodu PHP.2. Sposób, który umożliwia pracę z edytorami HTML, które nie wspierają PHP.3. Składnia z krótkim znacznikiem otwierającym. Nie może być stosowana przy generacjidokumentów XML i XHTML ze względu na kolizję z instrukcjami przetwarzania XML.4. Składnia wypisująca wartość zmiennej.Dwa pierwsze sposoby zagnieżdżania kodu PHP w HTML są zawsze automatyczniedostępne. Dwa ostatnie trzeba jawnie uaktywnić w pliku konfiguracyjnym PHP (php.ini).

Page 16: Aplikacje WWW

PHPSerwer HTTP otrzymując żądanie, odwołujące się do pliku o rozszerzeniu .php wskazującym, że jest to dokument PHP, zleca przetworzenie tego pliku modułowi PHP.

PHP przetwarzając plik, w niezmienionej postaci wysyła na wyjście kod HTML, a po napotkaniu znacznika przejścia w tryb PHP interpretuje zagnieżdżone instrukcje PHP. W przypadku przykładowego dokumentu test.php, w trybie PHP funkcją echo() wypisany na wyjście jest tekst ‘Hi. PHP works!’.

Z prawej strony pokazany jest fragment dokumentu PHP w pełni ilustrujący swobodę przeplatania kodu HTML i PHP. W blokach kodu instrukcji if PHP następuje powrót do trybu HTML. Taki przeplot jest poprawny, ponieważ PHP traktuje tekst pomiędzy „?>” i „<?php” jak gdyby był on argumentem funkcji echo().

Page 17: Aplikacje WWW

PHP – zmienneNazwy zmiennych w PHP poprzedzane są znakiem $. Wielkość liter w nazwach maznaczenie. Podobnie jak w wielu innych językach skryptowych, w PHP zmiennych niedeklaruje się przed użyciem. Nie ma konieczności ustalania typu zmiennej, choćwewnętrznie PHP pamięta dla zmiennej jej typ.

Zmienne mogą być typów prostych (boolean, integer, float, string) albo złożonych (tablice, obiekty). Typ zmiennych nie jest deklarowany, PHP ustala go na podstawie kontekstu, w miarę potrzeby dokonując automatycznych konwersji typów.

U dołu slajdu pokazano przykład przypisania wartości zmiennej, a następnie jejwyświetlenia. Podwójny ukośnik rozpoczyna komentarz jednoliniowy.

Page 18: Aplikacje WWW

PHP – łańcuchy znakówŁańcuchy znaków w PHP mogą być ograniczone apostrofami lub cudzysłowami. To jakiogranicznik zostanie użyty ma znaczenie.

W łańcuchach ograniczonych apostrofami nie są rozwijane odwołania do zmiennych, nie obowiązują też tzw. sekwencje specjalne jak np. znak nowej linii.

W łańcuchach ograniczonych cudzysłowami przy ich przetwarzaniu napotkane nazwy zmiennych są zastępowane aktualną wartością, można też w nich stosować sekwencje specjalne. Różnice między obydwoma notacjami ilustruje przykład na slajdzie.

PHP umożliwia konkatenację łańcuchów znaków operatorem kropki, posiada wsparciedla wyrażeń regularnych, a także bogaty zestaw funkcji bibliotecznych do przetwarzaniałańcuchów znaków.

Page 19: Aplikacje WWW

PHP – tabliceTablica w PHP jest uporządkowaną mapą przyporządkowującą wartości do kluczy.

Kluczami w tablicach PHP mogą być nieujemne liczby całkowite lub łańcuchy znaków.

Tablice w PHP mogą bezpośrednio być używane jako tablice indeksowane liczbowo i tablice asocjacyjne, co ilustruje przykład na slajdzie.

Można też wykorzystywać tablice jako listy, kolejki, czy stosy dzięki funkcjom bibliotecznym umożliwiającym np. dodawanie elementu na początku lub na końcu tablicy oraz usuwanie elementu z początku lub końca tablicy.

Page 20: Aplikacje WWW

PHP – instrukcje sterująceSlajd pokazuje instrukcje sterujące dostępne w PHP. W miejscu gdzie spodziewana jest w danej konstrukcji składniowej instrukcja, może wystąpić pojedyncza instrukcja lub blok instrukcji w nawiasach klamrowych. Większość konstrukcji przypomina te znane z języka C. W instrukcjach pętli można używać instrukcji break i continue. Instrukcją, której nie ma w języku C a jest w PHP jest pętla foreach, umożliwiająca przejście po wszystkich elementach tablicy niezależnie od tego w jaki sposób jest ona indeksowana. Forma pętli foreach u dołu różni się od tej powyżej tym, że podczas iteracji po elementach udostępnia nie tylko wartość, ale również i klucz elementu.

Page 21: Aplikacje WWW

PHP – zmienne predefiniowanePHP każdemu działającemu skryptowi udostępnia wiele zmiennych pochodzących zzewnątrz, czyli np. ze środowiska serwera, z formularzy HTML itp. Zmienne te są zorganizowane w tablice o nazwach rozpoczynających się od „$_”. Tablice te są„superglobalne” tzn. automatycznie dostępne w każdym zasięgu (każdym miejscu kodu PHP). Jest to istotne, gdyż zwykłe zmienne globalne w PHP nie są automatycznie widoczne w funkcjach i muszą być w nich zadeklarowane słowem kluczowym „global”.

Superglobalne tablice PHP to:$GLOBALS – referencje do zmiennych globalnych skryptu (nazwa wyjątkowo bez „_”),$_SERVER – zmienne tworzone przez serwer,$_GET – zmienne dostarczone do skryptu metodą GET protokołu HTTP,$_POST – zmienne dostarczone do skryptu metodą POST protokołu HTTP,$_COOKIE – zmienne cookies dostarczone do skryptu,$_FILES – zmienne dostarczone do skryptu przez przesłanie plików do serwera (fileupload) metodą POST protokołu HTTP,$_ENV – zmienne dostarczone do skryptu przez środowisko systemu operacyjnego,$_REQUEST – zmienne z tablic $_GET, $_POST i $_COOKIE zebrane w jednej tablicy,$_SESSION – zmienne aktualnie zarejestrowane jako sesyjne.

W starszych wersjach PHP zmienne przychodzące z zewnątrz były automatycznie rejestrowane jako zmienne globalne w skrypcie bez pośrednictwa tablic. Później rozwiązanie to zarzucono ze względów bezpieczeństwa. Choć nie jest to zalecane, można takie zachowanie przywrócić włączając opcję konfiguracyjną PHP register_globals.

Page 22: Aplikacje WWW

PHP – przetwarzanie danych z formularzy HTMLNa slajdzie pokazano przykład prostej aplikacji ilustrującej przetwarzanie danych z formularzy HTML w PHP. Aplikacja składa się z formularza HTML (mnoz.html) służącego do wprowadzenia pary liczb, które mają być przemnożone i dokumentu PHP (mnoz.php), który ma za zadanie wykonać mnożenie po stronie serwera i wygenerować stronę HTML z wynikiem. Formularz HTML wywołuje skrypt PHP metodą GET (1), więc skrypt odczytuje parametry z tablicy superglobalnej $_GET (2). Nazwy parametrów odpowiadają oczywiście nazwom pól w formularzu (3 i 4).

Page 23: Aplikacje WWW

PHP – sesjeSesja umożliwia zachowywanie danych na czas wykraczający poza obsługę jednego żądania. Protokół HTTP jest bezsesyjny, więc PHP emuluje sesję dla użytkownika.

Sesja jest identyfikowana przez identyfikator propagowany domyślnie przez zmienną cookie lub zakodowany w adresie URL gdy zmienne cookie są niedostępne.

Zmienne sesji są dostępne poprzez tablicę superglobalną $_SESSION. Rejestracja nowej zmiennej w sesji polega na dodaniu nowego klucza do tej tablicy.

Dane sesji są inicjalizowane funkcją session_start(). Funkcja ta kontynuuje bieżącą sesję lub rozpoczyna nową gdy nie ma bieżącej sesji. Wszystkie dane sesji można usunąć funkcją session_destroy().

Page 24: Aplikacje WWW

PHP – sesjeZmienne sesyjne mogą być wykorzystane do przekazywania informacji między kolejnymi wywołaniami tej samej strony (jak w przykładzie na slajdzie) lub różnych stron, pozwalając na implementację złożonej logiki aplikacji, obejmującej sekwencję żądań.

Przykład przedstawiony na slajdzie zlicza odwiedziny użytkownika na stronie (w czasiebieżącej sesji). Znaczenie wyróżnionych fragmentów kodu jest następujące:1. Rozpoczęcie lub kontynuacja sesji. Funkcja session_start() musi być wywołana przed wysłaniem jakiejkolwiek zawartości HTML.

2. Sprawdzenie czy zmienna sesyjna „licznik” jest ustawiona.

3. Jeśli zmienna sesyjna „licznik” nie jest ustawiona, jej wartość jest ustawiana na 0, gdyż oznacza to, że strona musiała być wywołana po raz pierwszy w sesji.

4. Jeśli zmienna sesyjna „licznik” jest ustawiona, jej wartość jest zwiększana o jeden.

5. Wyświetlenie wartości zmiennej sesyjnej „licznik”.

Page 25: Aplikacje WWW

PHP – organizacja kodu aplikacji WWWW przypadku tworzenia w PHP złożonych aplikacji, zawierających duże ilości wykonywalnego kodu, pojawia się się potrzeba sensownej organizacji kodu.

PHP umożliwia programowanie strukturalne poprzez tworzenie funkcji, a od wersji PHP 4 również programowanie obiektowe oparte o klasy. Mechanizmy programowania obiektowego w wersji PHP 5 obejmują m.in. dziedziczenie, konstruktory, destruktor, składowe statyczne i możliwość specyfikowania widzialności składowych (public, protected i private).

Zdefiniowane w aplikacji funkcje i klasy mogą być zachowane w odrębnych plikach i włączane tam, gdzie są potrzebne instrukcją include(). Instrukcja ta włącza fragment kodu źródłowego (HTML i/lub PHP), umożliwiając również np. włączanie standardowych nagłówków i stopek.

Page 26: Aplikacje WWW

PHP – organizacja kodu aplikacji WWWZnaczenie wyróżnionych fragmentów kodu ilustrującego programowanieobiektowe w PHP jest następujące: 1. Definicja klasy Konto.2. Definicja zmiennej prywatne klasy reprezentującej numer konta, z podaniem wartości początkowej.3. Definicja funkcji składowej klasy (metody) wyświetlającej numer konta.4. Utworzenie obiektu (instancji) klasy Konto.5. Wywołanie metody utworzonego obiektu.6. Przypisanie wartości null do zmiennej reprezentującej obiekt. Ponieważ jest to jedyne odwołanie do obiektu, to obiekt jest niszczony.