J_FORMS.TXT

(7 KB) Pobierz
Tworzenie formularzy HTML, mechanizm CGI
Opracowaţ: mgr inţ. Jarosţaw Flak
Gliwice 05.1996
ost.popr.6.12.1996


     Wprowadzenie

     Specyfikacja HTTP (Hypertext Transfer Protocol) okreţla ţţdania, jakie
mogţ byţ przesyţane do portu (80). Sţ to: GET (ţciţgnij informacjţ
identyfikowanţ przez url), HEAD, PUT, POST (dostarcz serwerowi dodatkowe
informacje), DELETE, LINK, UNLINK.

     Specyfikacja HTML umoţliwia tworzenie dynamicznych dokument˘w, tzn.
takich, w kt˘rych klient wprowadza pewne dane, kt˘re sţ nastţpnie
przetwarzane za pomocţ program˘w wykonywanych na serwerze. Odbywa siţ to
nastţpujţco:
-    serwer wysyla dokument HTML;
-    po wprowadzeniu danych przez klienta, dane sţ kodowane i przesyţane do
     serwera (metodţ GET lub POST);
-    serwer uruchamia program CGI i przekazuje mu dane wedţug specyfikacji
     CGI;
-    wyniki programu sţ odsyţane do klienta jako strona HTML.

     Sţ 3 sposoby przesyţania informacji do serwera WWW:
-    Keyword queries - za pomocţ ISINDEX (jedno pole do wprowadzania).
     <ISINDEX prompt="podaj dana">. Po wypeţnieniu pola wywoţywany jest ten
     sam dokument, kt˘ry wygenerowaţ stronţ zawierajţcţ ISINDEX. Dane sţ
     wczytywane przez program CGI z linii komend (jako parametry);
-    Image maps - moţna kliknţc w r˘ţne miejsca obrazka, przekazywane sţ
     wsp˘ţrzţdne klikniţcia.
-    Fill-out forms - formularze, wiele moţliwoţci.

     Numery port˘w dla niekt˘rych usţug:
http: 80, ftp: 21, telnet: 23, news: 119, mailto: 25, gopher: 70.
     Znaki zastrzeţone w url (+, &, =, /, ~, %, spacja, <, >, :) koduje siţ
podajţc znak % i dwie liczby heksadecymalne (np. %2B).


     Fill-out forms (formularze)

     Formularze definiuje siţ za pomocţ <FORM atrybuty> .. </FORM>.
Mogţ wystţpiţ nastţpujţce atrybuty: 
-    ACTION - url do kt˘rego majţ byţ przekazane dane, z reguţy wskazanie na
     skrypt CGI. Na serwerze WWW skrypty sţ lokowane w oddzielnych
     katalogach, serwer rozpoznaje wiţc, czy ma przesţaţ dokument, czy
     wykonaţ skrypt.
-    METHOD - metoda uţyta do przekazania danych (GET, POST).
-    ENCTYPE - spos˘b kodowania transmitowanych danych. Domyţlnie:
     application/x-www-form-urlencoded.
-    SCRIPT - moţe byţ uţyte do okreţlenia skryptu, kt˘ry bţdzie przesţany
     do klienta i wykonany lokalnie.

     Teksty, listy, tabele itp. sţ oznaczane za pomocţ tzw. input fields.
Tworzy siţ je za pomocţ tag˘w INPUT, TEXTAREA, SELECT. Najczţţciej stosuje
siţ tag INPUT w postaci: <INPUT NAME=nazwa TYPE=typ .. inne atrybuty>. Tag
ten nie ma odpowiednika koţczţcego (</INPUT>). Dane sţ przekazywane metodţ
GET lub POST w postaci: nazwa1=wartoţţ1&nazwa2=wartoţţ2, gdzie 'nazwa' jest
nazwţ pola zdefiniowanţ w poleceniu INPUT.

     HTML 3.0 udostţpnia nastţpujţce pola formularza:

<INPUT NAME="text-field"      prosty tekst
     SIZE=40                  szerokoţţ pola w przeglţdarce
     MAXLENGTH=80             max. iloţţ znak˘w
     VALUE="cos">             wartoţţ inicjujţca


<INPUT NAME="password-field"  hasţo (znaki wyţwietlane jako *)
     TYPE=password
     SIZE=20>


<INPUT NAME="range-field"     liczby
     TYPE=range
     MIN=1                    minimalna moţliwa do wprowadzenia
     MAX=10              maksymalna moţliwa do wprowadzenia
     VALUE=5>            wartoţţ inicjujţca


<INPUT NAME="check"      pole dwustanowe (wybrane - nie_wybrane)
     TYPE=checkbox
     VALUE="Tak"              wartoţţ inicjujţca
     CHECKED>            jeţli jest ta opcja, to na poczţtku wybrane


<INPUT NAME="radiobutton"     radio button, jeţli kilka o tej samej nazwie,
to sţ zgrupowane                        w caţoţţ
     TYPE=radio
     VALUE=Red           wartoţţ inicjujţca
     CHECKED>            jeţli jest ta opcja, to na poczţtku wybrane


<INPUT NAME=nazwa             scribble on image
     TYPE=scribble
     SRC=url             url do obrazka
     VALUE=init>              jeţli przeglţdarka nie wyţwietla obrazk˘w


<INPUT NAME=nazwa             lista plik˘w na lokalnym komputerze
     TYPE=file
     ACCEPT=mime-types>  dozwolone typy plik˘w oddzielone comma (ţrednik?)


<INPUT TYPE=submit       przycisk wyslania danych do serwera
     VALUE="OK"               napis na przycisku
     SRC=url>            url do obrazka, kt˘ry bţdzie przyciskiem


<INPUT NAME=nazwa             image fields (obrazek-submit), wysyţane sţ teţ
                         wsp˘ţrzţdne klikniţcia
     TYPE=image
     SRC=url>            url do obrazka


<INPUT TYPE=reset>       stan poczţtkowy ustawieţ formularza


<INPUT NAME=nazwa             pola ukryte, nie wyţwietlane, ale przekazywane
do serwera
     TYPE=hidden
     VALUE=value>        wartoţţ pola


<TEXTAREA NAME="textarea-field"    pole tekstowe wielowierszowe
     ROWS=4                   iloţţ wyţwietlanych wierszy
     COLS=40>                 iloţţ wyţwietlanych kolumn
tutaj jest tekst pojawiajţcy siţ standardowo,
tekst wpisany jest przesyţany jako jeden ciţg,
przejţcie do nowej linii jako '%0D%0A'
</TEXTAREA>


<SELECT NAME="option-fields"       selection box, wyb˘r z kilku
     MULTIPLE>           jeţli jest ta opcja, to moţliwych kilka wybor˘w
<OPTION VALUE="Y"             wartoţţ
     SELECTED>           jeţli jest ta opcja, to na poczţtku wybrane
     yellow              napis
<OPTION VALUE="R">       wartoţţ
     red                 napis
<OPTION>
     cyan                wartoţţ taka jak napis


Specyfikacja CGI

     CGI (Common Gateway Interface) jest definicjţ interface'u dla
uruchamianych program˘w z serwera WWW. Okreţla spos˘b komunikacji i wymiany
danych miţdzy programem a serwerem. Program CGI moţe byţ napisany np. w
jţzyku C/C++, Perl, Bourne shell, C shell.

     Sţ dwie metody przekazywania danych do programu CGI:
-    GET: tworzony jest nowy url i do serwera przesyţane jest ţţdanie GET
     ţcieţka/nazwa?info, gdzie 'nazwa' jest nazwa skryptu, a 'info'
     przekazywanymi danymi (w formacie: nazwa1=wartoţţ1&nazwa2=wartoţţ2).
     Dane sţ dostţpne w zmiennej ţrodowiskowej QUERY_STRING.
-    POST: informacja jest przekazywana kanaţami we/wy (strumieniami
     stdin/stdout). Ich iloţţ jest przekazywana w zmiennej ţrodowiskowej
     CONTENT_LENGTH. Postaţ danych jest formatu:
     nazwa1=wartoţţ1&nazwa2=wartoţţ2. Metoda ta pozwala na przekazanie duţej
     iloţci danych i rozwiţzuje problem zastrzeţonych znak˘w. Dane do serwera
     sţ wysyţane za pomocţ komendy POST.  Zastrzeţone znaki sţ kodowane tak
     jak w url-u.

     Gdy serwer uruchamia program CGI tworzone sţ dodatkowe zmienne
ţrodowiskowe. Niekt˘re z nich to:
-    REQUESTED_METHOD - metoda przekazywania danych: GET lub POST.
-    PATH_INFO - jeţli np. katalog root dla dokument˘w jest /var/hhtdocs,
     program jest identyfikowany przez url: htbin/formdemo/more, to zmienna
     ta = /more.
-    PATH_TRANSLATED - jeţli j.w., to zmienna ta = /var/htdocs/more.
-    QUERY_STRING -  ţaţcuch znak˘w (niekodowany) za znakiem '?' w url-u
     wywoţujţcym program (dla metody GET). Potrzebne parametry program
     powinien uzyskaţ raczej z tej zmiennej niţ z linii komend.
-    CONTENT_LENGTH - dţugoţţ (w oktetach) doţţczonych danych (dla metody
     POST).


     Literatura

-    "The Webmasters Handbook".
Zgłoś jeśli naruszono regulamin