PHP, ASP i CGI jako skrypty wykonywane po stronie serwera
Transkrypt
PHP, ASP i CGI jako skrypty wykonywane po stronie serwera
Mgr inż. Marcin Solka – [email protected] Blok 6 PHP, ASP i CGI jako skrypty wykonywane po stronie serwera. Budowa dynamicznych stron WWW w technologii PHP Czym są i do czego są wykorzystywane języki skryptowe wykonywane po stronie serwera Języki skryptowe wykonywane po stronie serwera są wykorzystywane do dynamicznego generowania stron, które najczęściej pobierają informacje z baz danych. Kodowane są w języku HTML i CSS, zawierają elementy graficzne, aktywne formularze, wyszukiwarkę, itp. CGI Pierwsze rozwiązania dynamicznego generowania stron opierały się na technologii (Common Gateway Interface). CGI nie jest odrębnym językiem programowania lub środowiskiem programistycznym. To zbiór reguł i zasad komunikowania się serwera HTTP z zewnętrznym programem wykonywalnym, który de facto tworzy dynamiczne strony i generuje kod HTML. Programy i skrypty mogą być pisane w dowolnym języku programowania, np. C/C++, Delphi, Java czy Visual Basic. Bardzo popularnym językiem opierającym się na technologii jest skryptowy język Perl. W tym przypadku rola interfejsu sprowadza się do pośrednictwa w wymianie komunikatów i informacji między serwerem HTTP a programem interpretera języka Perl, który przetwarza polecenia zawarte w skrypcie. Przeglądarka internetowa wysyła zapytanie do serwera HTTP z poleceniem przetworzenia konkretnego pliku (plik , EXE, itp.). Serwer uruchamia wskazany w poleceniu przeglądarki zewnętrzny program i, uwzględniając przekazane zmienne i parametry, generuje kod w języku HTML. Tak wygenerowana strona przesyłana jest do przeglądarki. W powszechnej opinii technologia uważana jest za stosunkowo trudną do opanowania. Dzieje się tak za sprawą języków programowania wykorzystywanych do projektowania aplikacji . Są to języki uniwersalne, projektowane nie z myślą o zastosowaniach internetowych, przez co trudno pisze się w nich programy współpracujące z serwerami HTTP. Poza tym, każdorazowe uruchomienie zewnętrznego programu lub programu interpretera wiąże się z koniecznością utworzenia przez serwer nowego procesu, co pochłania cenne zasoby systemowe i jest bardzo czasochłonne. O ile ułomność ta nie ma zasadniczego znaczenia dla szybkości pracy mało obciążonych serwerów, o tyle ma kluczowe znaczenie, gdy serwer HTTP z wykorzystywany jest do obsługi bardzo popularnych serwisów internetowych. Na szczęście dla mniej zaawansowanych webmasterów, wraz z momentem pojawienia się na rynku dwóch konkurencyjnych wobec siebie technologii, pisanie programów dynamicznie generujących strony WWW stało się zdecydowanie łatwiejsze i bardziej dostępne. ASP Active Server Pages to technologia dynamicznego tworzenia stron WWW opracowana przez firmę Microsoft. Technologia ta charakteryzuje się wyjątkowo łatwą w implementacji i wydajną w działaniu współpracą z bazami danych. Dzieje się tak za sprawą wbudowanych obiektów ADO (ActiveX Data Objects). To właśnie ta cecha w dużym stopniu przyczyniła się do dużej popularności technologii , co zaowocowało próbami adaptacji tej technologii na inne płaszczyzny systemowe, np. Linuksa. Ze zrozumiałych względów, wysiłek ten nie był podejmowany przez Microsoft, tylko przez inne niezależne firmy i grupy programistów. Jak na razie bez większych efektów. Do projektowania witryn internetowych opartych na technologii można wykorzystać dowolny skryptowy języka programowania, oczywiście pod warunkiem, że system będzie dysponował odpowiednią biblioteką interpretera. Standardowa dystrybucja rozpowszechniana jest z dwoma językami: VBScript, który jest skryptową odmianą Visual Basica i JScript skryptową odmianą Javy. Na rynku dostępne są również interpretery innych popularnych języków, np. interpreter języka Perl czy REXX, które dostarczane są przez niezależnych producentów. Bezproblemowe funkcjonowanie technologii wymaga współpracy z serwerem Personal Web Serwer (Windows 95/98, Windows NT Workstation) lub Internet Information Server (Windows NT Server, Windows 2000). PHP Personal Home Pages lub Hypertext Preprocessor to alternatywna wobec CGI i ASP technika dynamicznego tworzenia stron, która cieszy się wielkim zainteresowanie wśród internetowych projektantów. Jest to projekt typu "open source”, tworzonym przede wszystkim z przeznaczeniem na platformy linuksowe. Jednak twórcy tej nowoczesnej technologii nie zapomnieli o użytkownikach Windows i jest też wersja do 32-bitowych systemów Microsoftu. Skrypty mogą być obsługiwane przez serwer HTTP w dwóch trybach. W pierwszym trybie zasada działania skryptu jest identyczna jak zewnętrznego programu uruchamianego przez interfejs . W tym przypadku serwer uruchamia zewnętrzny program interpretera poleceń języka . W drugim możliwym trybie pracy, polecenia języka wykonywane są przez rezydujący w obszarze pamięci serwera moduł interpretera. Drugie rozwiązanie jest efektywniejsze, ponieważ rezydentny moduł może obsłużyć większą liczbę żądań i nie wymaga każdorazowego tworzenia nowego procesu przez serwer WWW. Przeglądarka internetowa wysyła zapytanie do serwera HTTP z poleceniem przetworzenia konkretnego pliku. Serwer uruchamia rezydentny moduł interpretera, który przetwarza polecenia zawarte w skrypcie i generuje stronę WWW opartą wyłącznie na znacznikach HTML. Wygenerowana strona przesyłana jest do przeglądarki. PHP a ASP – porównanie Obydwie technologie dynamicznego tworzenia stron WWW - ASP i PHP - są nowoczesne i dobrze dopracowane. W praktyce trudno wskazać, która z nich jest lepsza i bardziej przydatna w pracy webmastera. Możliwości techniczne oferowane przez obydwie techniki są bardzo zbliżone, podobnie jest z szybkością i efektywnością przetwarzania skryptów. PHP z pewnością jest elastyczniejsze, ponieważ dystrybucje tego systemu dostępne są w wersjach odpowiednich do większości płaszczyzn sprzętowych i systemowych, w tym do najpopularniejszych - Linuksa i Windows. Warto zwrócić uwagę na fakt, że obie technologie są zupełnie bezpłatne, zatem czynnik finansowy nie powinien być uwzględniany na etapie projektowania i testowania serwisu. Zupełnie inaczej jest z kosztami związanymi z eksploatacją i utrzymaniem serwisu na serwerze HTTP. Większość polskich serwerów internetowych funkcjonuje w oparciu o system operacyjny Linux i pracujący w tym środowisku serwer Apache. Udział rynkowy serwerów bazujących na Windows NT/2000 i IIS jest zdecydowanie mniejszy, głównie za sprawą wysokich kosztów wdrożenia takiej konfiguracji. Układ ten ma bezpośredni wpływ na kształt oferty rynkowej polskich firm świadczących usługi hostingowe. Nietrudno znaleźć firmę oferującą dzierżawę powierzchni dyskowej na linuksowym serwerze internetowym za stosunkowo niewielkie pieniądze. Gorzej jest z ofertą handlową bazującą na rozwiązaniach Microsoftu - nie dość, że trudno odnaleźć firmę oferującą usługi na tej platformie systemowej, to ich koszt jest absurdalnie wysoki. Dochodzi nawet do tak paradoksalnych sytuacji, w których roczny koszt utrzymania serwisu internetowego bazującego na Linuksie, Apachu, PHP i MySQL jest porównywalny z miesięcznym kosztem utrzymania identycznego pod względem funkcjonalnym serwisu, ale bazującego na technologii Windows, IIS, ASP i SQL Server. Siłą rzeczy, mało którego twórcę prywatnych stron internetowych lub niewielkich serwisów stać na ponoszenie tak wysokich kosztów miesięcznych i chcąc nie chcąc, nie mogą skorzystać z technologii ASP, która współpracuje jedynie z systemami i serwerami Windows. Na szczęście dla tej grupy użytkowników, konkurencyjna wobec ASP technologia PHP jest równie wydajna, równie efektywna i łatwo dostępna. Dodatkowo ma niezwykle istotną zaletę - cały serwis internetowy można przygotować i przetestować w środowisku Windows, a opublikować go na tanich serwerach Linuksa i Apacha. Zarówno ASP, jak i PHP należą do technologii stosunkowo łatwych do opanowania w podstawowym zakresie, chociaż bardziej przejrzysta - szczególnie na początku - wydaje się technologia ASP. Być może jest to tylko wrażenie wynikające z łatwego dostępu do obszernej dokumentacji ASP, która zawiera dużą liczbę praktycznych przykładów, komentarzy i wyjaśnień. Technologia PHP udokumentowana jest równie dobrze, chociaż lepiej w formie elektronicznej niż drukowanej. Poza tym w Internecie są olbrzymie zasoby gotowych skryptów w PHP, oraz listy dyskusyjne na których można uzyskać odpowiedź na każde pytanie (oczywiście dopiero jak już wyczerpiemy inne możliwości uzyskania informacji czyli: dokumentację, strony WWW, archiwa grup dyskusyjnych). Korzystanie z technologii dynamicznego generowania stron WWW ma sens wówczas, gdy oparty na nich serwis internetowy jest bardzo rozbudowany i często odwołuje się do zmiennych danych. Strony statyczne, oparte na zwykłych znacznikach HTML, wciąż pozostają najlepszym wyborem dla twórców niewielkich witryn domowych i korporacyjnych. W obu przypadkach wciąż należy jednak pamiętać, że finalnie zawsze najważniejsza jest treść - niezależnie od technik ją prezentujących. Budowa dynamicznych stron WWW w technologii PHP Dlaczego PHP: 1. Jest darmowy 2. Zestaw apache+PHP+MySQL działa świetnie na niezbyt mocnym sprzęcie, w przypadku którego nawet nie można myśleć o zestawie IIS+ASP+SQL Server. 3. PHP jest łatwy, dużo prostszy niż ASP czy Java Script 4. PHP jest niezależny, działa na różnych rodzajach Unixa, Linuxa i Windows. 5. PHP jest stabilny. 6. PHP jest co najmniej tak szybki jak ASP. 7. Dużo informacji w Internecie: gotowe skrypty, listy dyskusyjne, fora, strony WWW. Co potrafi: 1. instrukcje warunkowe, pętle, własne funkcje, tablice 2. funkcje include i require pozwalające dołączyć dowolny plik 3. obsługa baz danych (MySQL, MS Access, MS SQL Server, mSQL, ORACLE, PostgreSQL, i wiele innych). 4. obsługa systemu plików 5. funkcje matematyczne i kalendarza 6. klasy/obiekty 7. obsługa ftp, e-mail, 8. funkcje graficzne (generowanie grafiki w czasie rzeczywistym) 9. szyfrowanie, generowanie sum kontrolnych plików 10. funkcje PDF (generowanie dokumentów PDF) obsługa sesji i wiele innych Podstawy PHP PHP jest językiem skryptowym wbudowanym w strony WWW, wykonywanym na serwerze. Jest on zgodny z większością najważniejszych serwerów WWW (najbardziej z Apache). PHP pozwala na wbudowanie fragmentów kodu w normalne strony HTML – kodu, który jest interpretowany, gdy strony są przesyłane do użytkownika. PHP spełnia rolę „kleju” ułatwiającego łączenie stron WWW z bazami danych umieszczonymi po stronie serwera. Chcąc wstawić komendy PHP w jakimś miejscu w swoim dokumencie należy to zasygnalizować, wchodząc w "tryb PHP": <?PHP ?> Instrukcje są oddzielane tak samo jak w języku C czy Perl - należy kończyć każde wyrażenie średnikiem. $ - znak dolara oznacza zmienną. Wielkość liter w nazwie zmiennej jest rozróżniana. // - komentarz jednej linii /* .... */ - komentarz wielu linii tekstu echo (arg1, [arg2], ...)– wyświetla jeden lub kilka łańcuchów znaków Składnia dla instrukcji if jest następująca: If (test) { Wyrażenie_1; } Else { Wyrażenie_2; } Istnieją trzy rodzaje pętli w PHP: while (warunek) instrukcja do instrukcja while (wyrażenie) for (wyrażenie_początkowe; warunek_zakończenia; wyrażenie_końcowe) instrukcja Przerwanie wykonywania skryptu: Exit – nie posiada argumentów Die() – ma ciąg znaków jako argument. Kończy przetwarzanie skryptu, wysyłając na wyjście ciąg znaków podany jako agrument. Operatory Operatory Arytmetyczne Przykład Nazwa Opis $a + $b Dodawanie Suma $a i $b. $a - $b Odejmowanie Różnica $a od $b. $a * $b Mnożenie Iloczyn $a i $b. $a / $b Dzielenie Iloraz $a przez $b. $a % $b Dzielenie Modulo Reszta z dzielenia $a przez $b. Operatory Przypisania Podstawowym operatorem przypisania jest "=". Oznacza to, że operand z lewej strony operatora "=" otrzymuje wartość wyrażenia stojącego po prawej stronie. Wartością całego wyrażenia przypisania jest wartość przypisywana do zmiennej stojącej po lewej. Na przykład wartością "$a = 3" jest 3. To pozwala na wykonywanie bardziej skomplikowanych przypisań: $a = ($b = 4) + 5; // teraz $a jest równe 9, a $b jest równe 4. Operatory Porównania Przykład Nazwa Opis $a == $b Równy TRUE jeśli $a === $b Identyczny TRUE jeśli $a != $b Różny TRUE jeśli $a nie jest równy $b. $a <> $b Różny TRUE jeśli $a nie jest równy $b. $a !== $b Nie identyczny $a jest równe $b $a jest równe $b, i obydwa operandy są tego samego typu. (tylko w PHP 4) TRUE jeśli $a nie jest równy $b, lub nie są tego samego typu. (tylko w PHP 4) $a < $b Mniejszy niż TRUE jeśli $a > $b Większy niż TRUE, jeśli $a jest większy od $b. $a <= $b Mniejszy lub równy TRUE, jeśli $a jest mniejszy lub równy $b. $a >= $b Większy lub TRUE, jeśli $a jest większy lub równy $b. $a jest mniejszy od $b. Operatory Inkrementacji i Dekrementacji Przykład Nazwa Opis ++$a Pre-inkrementacja Najpierw zwiększa wartość $a o jeden, potem zwraca $a. $a++ Post-inkrementacja Najpierw zwraca $a, potem zwiększa $a o jeden. --$a Pre-dekrementacja Najpierw zmniejsza wartość $a o jeden, potem zwraca $a. $a-- Post-dekrementacja Najpierw zwraca $a, potem zmniejsza $a o jeden. PHP posiada olbrzymią ilość wbudowanych funkcji (do obsługi baz danych, plików, grafiki, kalendarza, itp.), których kompletny spis można znaleźć w dokumentacji. Pomoce: 1. Software 2.0 Extra – PHP, nr. 6 2. “PHP 4 Biblia” – Tim Converse, Joyce Park 3. Dokumentacja PHP 4. http://www.php.net/ 5. http://php.faq.pl/ 6. www.php.pl 7. pl.comp.lang.php 8. http://ygreg.and.pl/