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/