|
Wymiana danych
Aby uzyskać pełną funkcjonalność programistyczną, CGI musi umożliwiać
wprowadzanie danych przez użytkownika, które będą mogły być wykorzystane
przy wykonaniu programu. Rozwiązanie to musi mieścić się w specyfikacji
HTMLa.
Najprostszym sposobem przekazywania danych są formularze.
Formularz HTML (statyczny, lub generowany dynamicznie), zawiera
pola o pewnych identyfikatorach (name=), a wpisane (lub
wybrane) dane stają się wartościami tych pól.
- Formularz musi mieć wpisaną akcję wskazującą na URL skryptu, który
otrzyma dane z formularza. Wygląda to mniej więcej tak:
<form action='skrypt.cgi'> ... </form>
- Formularz musi mieć przycisk typu Submit, chyba, że składa się
z dokładnie jednego pola tekstowego. Wtedy naciśnięcie klawisza
Enter spowoduje wysłanie danych formularza.
- Dane z formularza są kodowane (URL encode) i przesyłane do skryptu.
Wysyłane są pary identyfikator=wartość rozdzielone znakiem
'&', spacje zmienione są na znak '+', a inne znaki niealfanumeryczne na
kody szesnastkowe poprzedzone znakiem '%'
- Dane opisane powyżej mogą być przekazane w jeden z dwóch sposobów: GET -
dane przekazane za pomocą zmiennej środowiska QUERY_STRING, lub
POST - dane przekazane na standardowe wejście programu.
Metodę przekazywania danych wybieramy w tagu from
(domyślnie GET):
<form action='skrypt.cgi' method='get'> ... </form>
lub:
<form action='skrypt.cgi' method='post'> ... </form>
Parametry wywołania mogą też być przekazywane bezpośrednio do skryptu
jako parametry jego wywołania. Należy je zakodować tak jak byłby zakodowany
QUERY_STRING i powstały ciąg umieścić w URLu po nazwie skryptu i
znaku '?'.
Przykład: http://www/cgi-bin/skrypt.cgi?nazwisko=Slupski&imiona=Jan+Lukasz
Przekazywanie danych możesz przetestować na stronie z przykładami (skrypt formularz.cgi).
Prostym działającym przykładem jest sklep.cgi.
Zmienne
Serwer WWW uruchamiając skrypt ustawia wiele zmiennych systemowych, które
mogą być wykorzystane (jako źródło informacji) w naszym programie.
Wartami zainteresowania mogą być np.:
- REMOTE_ADDR
- REMOTE_PORT
- REQUEST_METHOD
- SERVER_NAME
- itp.
Wartości zmiennych można zobaczyć na stronie z przykładami
(skrypt zmienne_systemowe.cgi).
Jan Słupski, jslupski@email.com
| |