Enter.net  


Formularz wysy│any poczt▒
Cezary G│owi±ski


Formularze to elementy strony WWW umo┐liwiaj▒ce dialog z czytelnikiem danej witryny.

Formularze nale┐▒ do najwa┐niejszych element≤w ╢rodowiska WWW, chocia┐ s▒ rzadko stosowane. Wynika to st▒d, ┐e zosta│y przewidziane przede wszystkim do profesjonalnych zastosowa±. Mo┐emy je spotkaµ w trakcie elektronicznych zakup≤w lub podczas dialogu w wyszukiwarkach. W takich przypadkach formularze s│u┐▒ do komunikowania siΩ u┐ytkownika z serwerem informacyjnym. Pozwalaj▒ przekazaµ mu dane w zorganizowany spos≤b.

Dane te s▒ nastΩpnie przetwarzane przez skrypty, kt≤re wykonuj▒ r≤┐ne operacje. NajczΩ╢ciej operacje te polegaj▒ na wygenerowaniu nowej strony w odpowiedzi na formularz lub modyfikacji bazy danych, ale ich zastosowania mog▒ byµ naprawdΩ nieograniczone. »eby w wymienionych przypadkach mo┐liwa by│a obr≤bka danych, trzeba mieµ dostΩp do serwera, a nie ka┐dy go ma. Okazuje siΩ jednak, ┐e nie jest to konieczne.

R≤wnie┐ "zwyk│y" u┐ytkownik Internetu, dysponuj▒cy kontem poczty elektronicznej, mo┐e w prosty spos≤b korzystaµ z formularzy.

Podstawowe elementy


Formularze definiuje siΩ za pomoc▒ pary znacznik≤w <FORM> i </FORM>, kt≤re okalaj▒ jego zawarto╢µ. Wewn▒trz mo┐emy umieszczaµ r≤┐ne elementy. Nale┐▒ do nich pola do wprowadzania tekstu, opcje oraz przyciski. Najprostszy formularz sk│ada siΩ z jednego pola, kt≤re u┐ytkownik mo┐e wype│niaµ danymi oraz przycisku typu SUBMIT, s│u┐▒cego do wys│ania formularza. CzΩsto stosuje siΩ r≤wnie┐ drugi przycisk typu RESET, s│u┐▒cy do czyszczenia zawarto╢ci p≤l.

Zacznijmy od umieszczenia pojedynczej linii, w kt≤r▒ mo┐na wpisaµ jaki╢ tekst. Do realizacji takiego pola stosuje siΩ znacznik <INPUT>. Jest on jednak bardzo uniwersalny, o czym przekonamy siΩ rozbudowuj▒c nasz formularz, dlatego trzeba u╢ci╢liµ, ┐e chodzi o pojedyncz▒ liniΩ tekstu. Robi siΩ to za pomoc▒ dodatkowego parametru TYPE okre╢laj▒cego rodzaj pola. Je╢li ma to byµ linia do wczytania tekstu, to TYPE przyjmuje warto╢µ "TEXT". (el. 1)

Poniewa┐ p≤l w formularzu mo┐e byµ kilka, to trzeba je nazwaµ, aby p≤╝niej mo┐na by│o je zidentyfikowaµ. NazwΩ pola nadajemy za pomoc▒ parametru NAME. W przypadku linii tekstu trzeba tak┐e okre╢liµ jej rozmiar (w liczbie znak≤w), podaj▒c parametr SIZE. Je╢li chcemy, aby wpisywany w pole tekst nie by│ wy╢wietlany jawnym tekstem, gdy┐ prosimy o podanie np. has│a, to mo┐na okre╢liµ typ pola jako "PASSWORD". Je╢li chcemy umie╢ciµ na formularzu pole sk│adaj▒ce siΩ z kilku linii tekstu, musimy pos│u┐yµ siΩ ju┐ par▒ znacznik≤w <TEXTAREA> i </TEXTAREA> (el. 2).

W tym przypadku trzeba okre╢liµ rozmiar pola w wierszach ROWS i kolumnach COLS. Je╢li chcemy, aby w tym polu ukaza│ siΩ jaki╢ domy╢lny tekst, to umieszczamy go miΩdzy wspomnianymi znacznikami.

Nie zawsze jednak chcemy pozwoliµ czytelnikowi formularza na wpisywanie dowolnych tekst≤w. W≤wczas trzeba pos│u┐yµ siΩ elementami, kt≤re daj▒ mo┐liwo╢µ wyboru pozycji. NajczΩ╢ciej korzysta siΩ z rozwijanych list. Do zbudowania listy wykorzystuje siΩ parΩ znacznik≤w <SELECT> i </SELECT>. MiΩdzy tymi znacznikami umieszcza siΩ poszczeg≤lne pozycje, definiuj▒c je za pomoc▒ pary <OPTION> i </OPTION> (el. 3).

MiΩdzy znacznikami wpisuje siΩ tekst, kt≤ry pojawi siΩ jako opcja, natomiast formularz wy╢le warto╢µ okre╢lon▒ przez parametr VALUE. Takie rozdzielenie pozwala na to, ┐e opcje mog▒ byµ opisowe i sk│adaµ siΩ z kilku wyraz≤w, natomiast do dalszego przetworzenia przekazywana jest zwiΩz│a warto╢µ. Je╢li chcemy kt≤r▒╢ z opcji okre╢liµ jako domy╢ln▒, to wystarczy dodaµ parametr SELECTED. Aby wybraµ kilka opcji jednocze╢nie, trzeba uzupe│niµ listΩ parametrem MULTIPLE. W≤wczas uka┐e siΩ rozwiniΩta lista o d│ugo╢ci r≤wnej liczbie opcji. Je╢li zatem chcemy ograniczyµ wielko╢µ tego obszaru, wystarczy okre╢liµ rozmiar SIZE, np. <SELECT SIZE=3>. Chc▒c zaznaczyµ wiΩcej ni┐ jedn▒ opcjΩ, nale┐y pos│u┐yµ siΩ przyciskiem CTRL (el. 4).

Opr≤cz list s▒ te┐ elementy wyboru w postaci kluczy i przycisk≤w. Do ich realizacji stosuje siΩ znacznik <INPUT> odpowiednio okre╢laj▒c typ jako "CHECKBOX" lub "RADIO". Tu r≤wnie┐ okre╢la siΩ warto╢µ VALUE zwracan▒ przez formularz (el. 5). Poniewa┐ mo┐na wybraµ tylko jeden z przycisk≤w, opcje grupuje siΩ razem, nadaj▒c im tΩ sam▒ nazwΩ NAME (el. 6).

Po utworzeniu wszystkich dialogowych element≤w formularza trzeba pomy╢leµ o jego wys│aniu. Przewidziany jest do tego specjalny przycisk typu "SUBMIT" (el. 7).

Mo┐na tak┐e wyczy╢ciµ wszystkie pola formularza, definiuj▒c przycisk "RESET" (el. 8).

Teraz wysy│amy


Pisz▒c formularz trzeba okre╢liµ dzia│anie, jakie jest zwi▒zane z jego wys│aniem. Okre╢la siΩ to za pomoc▒ dw≤ch parametr≤w. Zwykle formularze s▒ powi▒zane ze skryptami, kt≤re je obs│uguj▒ na serwerze. Do zapisu powi▒zania s│u┐y parametr ACTION. Z kolei parametr METHOD okre╢la spos≤b przes│ania zawarto╢ci formularza. Mo┐liwa jest metoda "GET", polegaj▒ca na pobraniu przez serwer, oraz "POST", polegaj▒ca na wys│aniu do serwera. Jednak osoby, kt≤re nie maj▒ dostΩpu do serwera WWW, mog▒ wys│aµ zawarto╢µ wype│nionych p≤l formularza poczt▒ elektroniczn▒ w postaci za│▒cznika do listu. W tym celu nale┐y pos│u┐yµ siΩ us│ug▒ MAILTO. Przyk│adowy zapis brzmi:

<FORM METHOD="POST" ACTION= "mailto:enter<lupus.waw.pl">

Standardowo dane wysy│ane z formularza s▒ kodowane. Je╢li chcemy, aby odpowied╝ z formularza przychodzi│a w postaci "zwyk│ego tekstu" w ramach listu, to trzeba zastosowaµ parametr enctype="text/plain" w nastΩpuj▒cy spos≤b:

<FORM ENCTYPE="text/plain" METHOD="POST" 
ACTION="mailto:enter<lupus.waw.pl"> 

Odczytujemy wyniki


Je╢li nie okre╢limy, ┐eby dane formularza przysz│y w spos≤b jawny, to bΩd▒ siΩ one pojawiaµ na naszym koncie jako listy z za│▒cznikiem. Za│▒cznik bΩdzie zawiera│ zakodowane dane z formularza.

"nazwisko=Jan+KOWALSKI&adres
=ul.Piotrkowska+14+m.7%0D%0A01-900
+WARSZAWA%0D%0APOLSKA&system
=win95&program=101&program=130&program=
120&katalog=tak&nosnik=cdrom&przycisk_
_wyslij=Wy%9Clij+zam%F3wienie"
Czyta siΩ to wed│ug nastΩpuj▒cego schematu: nazwa pola w formularzu, znak r≤wno╢ci, wpisany przez czytelnika tekst lub zaznaczona warto╢µ. NastΩpnie znaczek & i kolejne pole. Je╢li wpisany tekst sk│ada siΩ z kilku wyraz≤w, to s▒ one │▒czone znakiem plusa. Dane s▒ tak kodowane z my╢l▒ o przetwarzaniu przez skrypty. Je╢li chcemy tylko przeczytaµ wype│niony formularz, to lepiej spr≤bowaµ przes│aµ go jawnym tekstem. W≤wczas otrzymujemy mail z wypisan▒ zawarto╢ci▒.

nazwisko=Jan KOWALSKI
adres=ul.Piotrkowska 14 m.7
01-900 WARSZAWA
POLSKA
system=win95
program=101
program=130
program=120
katalog=tak
nosnik=cdrom
przycisk_wyslij=Wy╢lij zam≤wienie

Je┐eli mamy w│asn▒ stronΩ w Internecie, to formularz mo┐e pos│u┐yµ nam do zbierania r≤┐nych interesuj▒cych nas informacji. Wykorzystuj▒c formularz dostajemy usystematyzowan▒ informacjΩ.
Jest to istotne, gdy┐ mo┐emy j▒ p≤╝niej wykorzystaµ jako dane wej╢ciowe do programu tworz▒cego na ich podstawie np. bazΩ danych. Je╢li na przyk│ad kto╢ udostΩpnia darmowy program do ╢ci▒gania ze swojej strony, to mo┐e wykorzystaµ formularz do zbierania informacji o ludziach, kt≤rzy go u┐ywaj▒.

Skrypty


NajczΩ╢ciej do wsp≤│pracy z formularzami wykorzystuje siΩ skrypty, kt≤re s▒ umieszczone na serwerze i wykonuj▒ zaprogramowane funkcje. Dzia│anie skryptu jest sterowane przez dane, kt≤re przychodz▒ z wype│nionego formularza. Skrypt, jest zwykle programem, kt≤ry zale┐nie od danych wej╢ciowych i zaprogramowanych mo┐liwo╢ci, wykonuje okre╢lone operacje. Np. w przy-padku wyszukiwarki generuje stronΩ z list▒ znalezionych adres≤w.
Popularn▒ form▒ skrypt≤w s▒ programy CGI (ang. Common Gateway Interface).
Ich zalet▒ jest to, ┐e maj▒ zdefiniowany standardowy interfejs do wsp≤│pracy ze ╢rodowiskiem WWW.

Dok│adny listing strony z formularzem


<HTML>
<TITLE>Pierwszy formularz</TITLE>
<BODY bgcolor="#C0C0C0">
<H1><CENTER>FORMULARZ ZAM╙WIENIA<
/CENTER></H1>
<FORM ENCTYPE="text/plain"
METHOD="POST"
ACTION="mailto:enter<lupus.waw.pl"> <B><I>Podaj imiΩ i nazwisko</I></B>
<INPUT TYPE="TEXT" NAME="nazwisko" SIZE="30"> <BR><BR>
<B><I>Dok│adny adres: </I></B><BR>
<TEXTAREA NAME="adres" ROWS=5 COLS=30> </TEXTAREA>
<BR><BR> <B><I>System operacyjny</I></B>
<SELECT NAME="system"> <OPTION VALUE="win95" SELECTED>Windows 95</OPTION>
<OPTION VALUE="win32">Windows 3.1</OPTION>
<OPTION VALUE="dos">DOS</OPTION>
<OPTION VALUE="linux">Linux</OPTION>
</SELECT><BR><BR> <B><I>Zamawiam nastΩpujace programy:</I></B><BR> <SELECT NAME="program" MULTIPLE>
<OPTION VALUE="100">
Edytor graficzny</OPTION>
<OPTION VALUE="101">
Edytor tekstu</OPTION> <OPTION VALUE="130">
Kompilator C++</OPTION>
<OPTION VALUE="120"
SELECTED>
Edytor HTML</OPTION>
<OPTION VALUE="103">Arkusz kalkulacyjny<
/OPTION></SELECT>
<BR>
<BR> <B><I>Dodatki:</I></B><BR> <INPUT TYPE="checkbox" NAME="podrecznik"
VALUE="tak">podrΩczniki<BR> <INPUT TYPE="checkbox" NAME="katalog"
VALUE="tak">
katalog produkt≤w
<BR><BR> <B><I>Rodzaj no╢nika:</I></B> <INPUT TYPE="radio" NAME="nosnik" VALUE="dyskietka" CHECKED> dyskietka 3.5
<INPUT TYPE="radio"
NAME="nosnik" VALUE="cdrom"> CD-ROM <BR><BR> <INPUT TYPE="SUBMIT" NAME="
przycisk_wyslij" VALUE="Wy╢lij zam≤wienie">
<INPUT TYPE="RESET"
NAME="przycisk_skasuj" VALUE="Usu± informacje"> </FORM></BODY></HTML>

Przegl▒darki, edytory i inne narzΩdzia


Formularze nale┐▒ do standardu jΩzyka HTML. S▒ zatem obs│ugiwane przez wszystkie przegl▒darki internetowe. Niekt≤re wersje zawieraj▒ b│Ωdy powoduj▒ce z│e wy╢wietlanie lub z│▒ obs│ugΩ formularzy.
Przyk│adem jest Internet Explorer 3, kt≤ry nieprawid│owo wy╢wietla polskie znaki w formularzach na stronach kodowanych w ISO-8859-2, a tak┐e nie do│▒cza danych z formularza do listu.
WiΩkszo╢µ edytor≤w stron, w tym shareware'owe, ma opcje wspomagaj▒ce tworzenie stron zawieraj▒cych formularze. Pozwalaj▒ one powi▒zaµ formularz ze skryptem na serwerze lub z programem pocztowym.

W╢r≤d program≤w pomocniczych mo┐na wymieniµ dekodery danych z formularza. Przydatno╢µ tego rodzaju narzΩdzi docenia siΩ, gdy zobaczy siΩ, jak wygl▒da ci▒g przys│anych znak≤w. Pozwalaj▒ one przegl▒daµ dane w czytelnej formie. Programy tego typu s▒ shareware'owe i mo┐na szukaµ ich w sieci.


Przyk│adowy formularz
zawieraj▒cy charakterystyczne elementy
wraz z odpowiadaj▒-cymi mu kodami HTML



rys. Formularz

(el. 1) 
<INPUT TYPE="TEXT" 
NAME="nazwisko" SIZE="30">
(el. 2) <TEXTAREA NAME="adres" ROWS=5 COLS=30> </TEXTAREA>
(el. 3) <SELECT NAME="system"> <OPTION VALUE= "win95" SELECTED> Windows 95</OPTION> <OPTION VALUE= "win32">Windows3.1 </OPTION> <OPTION VALUE= "dos">DOS<
/OPTION> <OPTION VALUE= "linux">Linux </OPTION> </SELECT>

(el. 4) <SELECT NAME= "program" MULTIPLE> <OPTION VALUE="100">
Edytor graficzny<OPTION> <OPTIONVALUE="101">
Edytor tekstu</OPTION> <OPTION VALUE="130">
Kompilator C++<OPTION> <OPTION VALUE="120"
SELECTED>Edytor HTML </OPTION> <OPTION VALUE="103">
Arkusz kalkulacyjny </OPTION> </SELECT>

(el. 5) <INPUT TYPE="checkbox"
NAME="katalog" VALUE="tak"> katalog produkt≤w
(el. 6) Rodzaj no╢nika: <INPUT TYPE="radio"
NAME="nosnik" VALUE="dyskietka" CHECKED> dyskietka 3.5 <INPUT TYPE="radio"
NAME="nosnik" VALUE="cdrom"> CD-ROM (el. 7) <INPUT TYPE="SUBMIT"
NAME="przycisk_wyslij"
VALUE="Wy╢lij zam≤wienie">
(el. 8) <INPUT TYPE="RESET"
NAME="przycisk_skasuj"
VALUE="Usu± informacje">

(c) Copyright LUPUS