R_18_07.PDF

(649 KB) Pobierz
Wstêp
Rozdział 18.
Skrypty CGI
dla początkujących
CGI (ang. Common Gateway Interface ) jest interfejsem umożliwiającym uruchamianie
programów na serwerze WWW, w odpowiedzi na dane pochodzące z przeglądarki.
Skrypty CGI pozwalają odwiedzającemu na interakcję z Twoimi stronami WWW —
wyszukiwanie rekordów w bazach danych, komentowanie wprowadzonego tekstu,
wybieranie kilku elementów na stronie w celu otrzymania szczegółowej odpowiedzi.
Niegdyś skrypty CGI były sporadycznie wykorzystywane. WWW była wtedy
przeważnie używana do prezentowania statycznych informacji umieszczanych w
standardowych dokumentach HTML. Aktualnie skrypty CGI bądź inne technologie
tworzenia aplikacji WWW są wykorzystywane niemal we wszystkich aspektach
projektowania witryny. Wiele witryn prezentuje zawartość dostosowaną do zainteresowań
użytkowników, a umieszczone na nich informacje są przechowywane w bazach danych, a
nie w statycznych plikach. Aplikacje WWW stały się także coraz szerzej
rozpowszechnione. Za pośrednictwem WWW można czytać listy poczty elektronicznej,
sprawdzać harmonogram zajęć i kalendarz, sprawdzać stan portfela akcji. Wszystkie te
aplikacje zostały stworzone przy wykorzystaniu programów CGI bądź technologii
stanowiących rozwinięcie CGI.
W
tym rozdziale nauczysz się prawie wszy
co to jest skrypt CGI i jak działa,
stkiego na temat skryptów CGI, w tym:
jak wygląda rezultat działania skryptu,
jak pisać skrypty CGI z parametrami i bez,
jak pisać skrypty zwracające specjalne odpowiedzi,
jak pisać skrypty przetwarzające dane z formularzy,
o najważniejszych problemach związanych ze skrypta
o zmiennych CGI, których można użyć w skryptach,
mi CGI,
o skryptach działających bez
przetwarza nagłówków ( non-parsed headers ),
nia
o przeszukiwaniu z użyciem <ISINDEX> .
518
Część 6. Mapy odsyłaczy i formularze
Rozdział ten koncentruje się głównie na serwerach WWW działających na systemach Unix, a
większość przykładów i instrukcji będzie dotyczyć jedynie tego systemu. Jeśli korzystasz z
innego systemu operacyjnego, niektóre informacje, zawarte w części dotyczącej pisania
skryptów CGI, mogą go nie dotyczyć. Ten rozdział pozwoli Ci przynajmniej poznać ideę
działania CGI, a informacje w nim zawarte będziesz mógł wykorzystać wraz z dokumentacją
CGI dla używanego serwera WWW.
Co to jest skrypt CGI?
Skrypt CGI jest to, najprościej mówiąc, program, który działa na serwerze WWW, uru-
chamiany poprzez dane pochodzące z przeglądarki. Skrypt jest zazwyczaj łącznikiem
pomiędzy serwerem WWW i innymi programami działającymi w systemie, na
przykład, bazami danych.
Skrypty CGI właściwie nie muszą być skryptami. W zależności od możliwości naszego
serwera mogą to być skompilowane programy, pliki wsadowe lub inne pliki
wykonywalne. Dla uproszczenia terminologii będziemy je w tym rozdziale nazywać
skryptami .
Skrypt CGI to dowolny program wykonywany na serwerze WWW. CGI to akronim słów
Common Gateway Interface . Jest to standaryzow
any interfejs wymiany informacji pomiędzy
serwerem WWW a programami zewnętrznymi.
Skrypty CGI są zazwyczaj wywoływane na dwa sposoby: bezpośrednio (za pomocą
połączenia) oraz jako atrybut ACTION formularzy. Skrypt do przetwarzania formularzy
używany jest nieco inaczej niż zwykły skrypt CGI, ale oba wyglądają i działają
podobnie. W pierwszej części tego rozdziału poznas
Jak działają skrypty?
Skrypty CGI są wywoływane przez serwer na podstawie informacji z przeglądarki.
Rysunek 18.1 pokazuje
oniżej znajduje się skrócony opis tego, co się dzieje.
URL wskazuje na skrypt CGI. Taki URL może pojawić się wszędzie tam, gdzie
można użyć zwykłego URL-a, na przykład, w odnośniku lub obrazku. Zazwycza
wykorzystywany jest w polu ACTIO
z serwerem za pomocą tego URL-a.
Serwer odbiera zlecenie, zauważa, że URL wskazuje na skrypt (na podstawie
lokalizacji pliku lub jego rozszerzenia, w zależności od serwera) i wykonuje go.
Skrypt wykonuje pewne działania w oparciu o dane z przeglądarki, jeśli takowe
wystąpiły. Może to być wyszukanie rekordów w bazie d
j
N formularza. Przeglądarka kontaktuje się
2.
3.
anych, obliczenie wartości
lub po prostu wywołanie innego programu w systemie.
z ich ogólne właściwości, a później
zajmiemy się skryptami przetwarzającymi formularze.
sposób, w jaki informacja jest przetwarzana pomiędzy
przeglądarką, serwerem i skryptem.
P
1.
27145125.005.png 27145125.006.png 27145125.007.png
Rozdział 18. Skrypty CGI dla początkujących
519
Rysunek 18.1.
Przeglądarka, serwer,
skrypt
4. Skrypt generuje pewną odpowiedź, którą serwer WWW jest w stanie zrozumieć.
5. Serwer WWW odbiera odpowiedź od skryptu i odsyła ją do przeglądarki,
która formatuje dane i wyświetla je.
Proste? Nie? Nie martw się, cały ten proces może wydawać się nieco złożony. Czytaj
dalej. Dzięki kilku przykładom będzie go łatwiej zrozumieć.
Prosty przykład
Poniżej znajduje się prosty przykład, objaśniający krok po kroku, co się dzieje po obu
stronach całego procesu. W przeglądarce możemy napotkać stronę, która wygląda po-
dobnie do przedstawionej na rysunku 18.2.
Rysunek 18.2.
Strona z odnośnikiem do
skryptu
Odnośnik Wyświetl datę jest odnośnikiem do skryptu CGI. Jest zawarty wewnątrz
kodu HTML strony, tak jak dowolny inny odnośnik. Jeśli przyjrzymy się źródłu strony,
możemy tam znaleźć następujący kod:
<A href="http://www.serwer.com/cgi-bin/getdate">Wyświetl datę</a>
27145125.008.png 27145125.001.png
520
Część 6. Mapy odsyłaczy i formularze
Fakt, że cgi-bin pojawia się w ścieżce jest ważną podpowiedzią, że patrzymy na skrypt
CGI. W przypadku wielu serwerów, cgi-bin jest jedynym miejscem, gdzie mogą być
przechowywane skrypty CGI.
Kiedy wybierzesz odnośnik, przeglądarka odwołuje się do URL-a z serwera www.jser-
wer.com. Serwer odbiera zlecenie i wnioskuje na podstawie swojej konfiguracji, że URL
odnosi się do skryptu o nazwie getdate . Następnie serwer wykonuje skrypt.
Skrypt getdate w tym przypadku jest prostym skryptem powłoki Uniksowej wyglądają-
cym następująco:
#!/bin/sh
echo Content-type: text/plain
echo
/bin/date
Skrypt ten ma dwojakie działanie. Najpierw wyświetla nagłówek Content-type:
text/plain , a za nim pustą linię. Następnie wywołuje standardowy program Unikso-
wy date , który wyświetla datę i czas. Rezultat działania skryptu wygląda więc
następująco:
Content-type: text/plain
Tue May 25 16:15:57 EDT 1997
Co oznacza ten zapis Content-type ? Jest to specjalny kod, który serwer WWW prze-
syła do przeglądarki, aby powiedzieć jej, z jakiego typu dokumentem ma do czynienia.
Przeglądarka następnie używa go do określenia, czy potrafi wyświetlić dokument takie-
go typu i czy należy wykonać w tym celu dodatkowy, zewnętrzny program. W dalszej
części tego rozdziału poznamy specyfikę tej linii.
Po zakończeniu wykonywania skryptu, serwer odbiera rezultat i przesyła go z powro-
tem do przeglądarki poprzez sieć. Przeglądarka dotychczas czekała cierpliwie na odpo-
wiedź. Kiedy otrzymuje dane z serwera, po prostu je wyświetla, tak jak to pokazano na
rysunku 18.3.
Rysunek 18.3.
Rezultat działania
skryptu wyświetlającego
datę
Tak wygląda cała idea. Mimo że proces może być dużo bardziej złożony, taka interak-
cja pomiędzy przeglądarką, serwerem i skryptem jest główną zasadą działania CGI.
27145125.002.png 27145125.003.png
Rozdział 18. Skrypty CGI dla początkujących
521
Czy mogę używać skryptów CGI?
Nim użyjesz skryptów CGI na swojej witrynie, będziesz musiał sprawdzić, czy dyspo-
nujesz uprawnieniami pozwalającymi instalować skrypty na serwerze WWW. Jeśli
prowadzisz własny serwer, to zazwyczaj nie będzie to stanowiło żadnego problemu.
W takim przypadku możesz robić dosłownie wszystko, czyli także instalować i wyko-
nywać skrypty CGI. Jeśli jednak Twoja witryna znajduje się na serwerze prowadzonym
przez dostawcę usług internetowych, to będziesz musiał sprawdzić, czy dysponujesz
prawami do instalowania skryptów.
Przed przystąpieniem do lektury dalszej części rozdziału upewnij się, że jesteś w stanie
odpowiedzieć na poniższe pytania.
Czy Twój serwer jest skonfigurowany
w sposób pozwalający na wykonanie skryptów CGI?
Aby pisać i uruchamiać skrypty CGI, potrzebny jest serwer WWW. W odróżnieniu od
zwykłych plików HTML, skryptów CGI nie można pisać i testować na własnym kom-
puterze, potrzebny jest do tego serwer WWW. Na szczęście serwery WWW są dostępne
niemal dla wszystkich istniejących platform komputerowych, a zatem zazwyczaj bę-
dziesz w stanie skonfigurować swój system w taki sposób, iż będziesz w stanie testować
skrypty CGI bez konieczności umieszczania ich na produkcyjnym serwerze WWW.
Jednak, jeśli nawet masz serwer WWW, musi on być specjalnie skonfigurowany, aby
pozwalał na wykonanie skryptów CGI. Oznacza to zazwyczaj, że wszystkie skrypty są
przechowywane w specjalnym katalogu o nazwie cgi-bin . To zwyczajny katalog, który
zgodnie z informacjami konfiguracyjnymi serwera służy do przechowywania skryptów
CGI. Jeśli tylko dysponujesz dostępem do pliku konfiguracyjnego serwera WWW, to
możesz sam wybrać katalog, który będzie pełnił funkcję katalogu CGI.
Zanim zaczniesz wypróbowywać jakiekolwiek skrypty, zapytaj swojego administratora,
czy możesz je instalować i uruchamiać, a jeśli tak, to gdzie należy je umieszczać.
Jeśli korzystasz z własnego serwera, musisz utworzyć odpowiedni katalog cgi-bin
i skonfigurować serwer, tak aby rozpoznawał go jako katalog ze skryptami (należący do
konfiguracji serwera, która oczywiście zależna jest od typu serwera). Musisz również
pamiętać o następujących zagadnieniach, które wiążą się z zastosowaniem skryptów CGI:
każdy skrypt CGI jest programem i zostaje uruchomiony, kiedy przeglądarka tego
zażąda, zużywając podczas wykonania czas procesora i pamięć. Co się stanie
z systemem, jeśli dziesiątki lub setki takich skryptów zostaną jednocześnie
uruchomione? System może nie wytrzymać takiego obciążenia i zawiesić się
lub uczynić dalszą pracę niemożliwą,
jeśli nie będziesz wystarczająco ostrożny przy pisaniu własnych skryptów, możesz
przypadkowo otworzyć dostęp do systemu poprzez wykorzystanie parametrów,
których skrypt nie oczekiwał; ktoś się do niego włamie lub go uszkodzi.
27145125.004.png
Zgłoś jeśli naruszono regulamin