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".
Tofol