|
Home |
|
Temel HTML |
|
Texts |
|
Links |
|
Images |
|
Lists |
|
Tables |
|
Color |
|
Frames |
|
iFrames |
|
Image Maps |
|
Forms |
|
Programlama Dilleri |
Web Sayfasında Form Yaratma |
İçindekiler |
Etkileşimli Web sayfaları hazırlamanın yolu FORM kullanmaktan geçer. Web'in en kullanışlı niteliği ve belki de, internet üzerindeki öteki servislere göre daha yaygın olmasının nedeni formlardır.
e-bankacılık, e-sigortacılık, e-ticaret, e-eğitim,... gibi etkileşimli (interactive) her işte form kullanılır.
Formlar, kullanıcıdan veri (bilgi) almak için düzenlenir. Kullanıcının girdiği bilgiler sunucu makinada belirlenen bir dosyaya yazılır. Burada biriken verilerin işlenmesi gerekiyorsa, o işi yapacak bir programın ayrıca yazılması gerekir. HTML yalnızca, kullanıcının forma yazdığı verileri kaydeder; onları bir programlama dilinin yaptığı gibi işleyemez.
Kullanıcının form aracılığı ile sunucuya gönderdiği verileri işleyen programlar uygun bir programlama diliyle yazılabilir.
Bu dersin kapsamı dışında olduğu için o konuya girmeyeceğiz. Ama bu işi yapan programa CGI (Common Gate Interface) Script diyeceğiz.
Form < FORM > ... < /FORM > arasına yazılan objelerden oluşur. Bu objeler text, image, liste, tablo, giriş alanları (input fields), 'hypertext link' vb olabilir.
Bu formun HTML kodları şöyledir:
< FORM ACTION="http://angora.baskent.edu.tr/../cgi-bin/kodyaz" METHOD=get >Bu kodların anlamını satır satır açıklayalım:
kodlarının vereceği görüntü şöyle olur:
Türkçe MSIE5 tarayıcısı submit düğmesi üzerine Sorguyu Gönder yaftasını koyar. Başka tarayıcılar bu anlama gelen başka yaftalar koyar. Dilerseniz, bu yaftayı değiştirebilirsiniz. Yaftayı değiştirmek için, INPUT damgasında VALUE="yeni_yafta" nitelemesi yapılır. Örneğin,
kodlarının vereceği görüntü şöyle olur:
Bazı durumlarda, farklı seçeneklerden birisini göndermek gerekebilir. Bunun için, farklı submit'leri farklı NAME ile adlandırmak ve VALUE yaftalarını kullanıcının farkı kolay kavrayacağı biçime çevirmek gerekir.
Varsayalım ki e-ticaret yapan bir firma ürünleri için web sayfasında sipariş etme ya da ürün hakkında bilgi isteme seçeneklerini sunmaktadır. Kullanıcı ürünü biliyor ve almaya kararlı ise sipariş verecektir. Ürünü bilmiyorsa, bilgi isteyecektir. Bunun için, aşağıdaki gibi iki submit tipi düzenlenebilir.
kodları aşağıdaki görüntüyü verir:
Farklı submit düğmeleriyle gönderilen mesajların farklı işlenmesi gerekir. Bunu yapmak CGI scriptinin işidir.
İsterseniz submit düğmesine VALUE ile yafta koymak yerine, gönderilecek yeri belirten uygun bir resim (image) koyabilirsiniz. Bunu yapmak için INPUT damgasında SRC="resim.gif" nitelemesini yapmak yeterlidir.
URL adresi "./images/home.gif" olan bir resmi submit düğmesi yerine koymak için,
ya da
kodlarından birisini yazmak yetecektir. Çünkü, bazı tarayıcılar TYPE=submit nitelemesini, bazıları ise TYPE=image nitelemesini gerektirir. Bu kodlar submit düğmesi yerine aşağıdaki gibi bir görüntü verir. Tabii görüntü konulan resme bağlıdır.
kodlarının vereceği görüntü şöyle olur:
Türkçe MSIE5 tarayıcısı reset düğmesi üzerine Sıfırla yaftasını koyar. Başka tarayıcılar bu anlama gelen başka yaftalar koyar. Dilerseniz, bu yaftayı değiştirebilirsiniz. Yaftayı değiştirmek için, INPUT damgasında VALUE="yeni_yafta" nitelemesi yapılır. Örneğin,
kodlarının vereceği görüntü şöyle olur:
|
Form ile birlikte bir dosya göndermek için INPUT damgasında TYPE=file nitelemesi yapılır. Örneğin,
kodlarının vereceği görüntü şöyle olur:
Gözat düğmesine tıklayınca, dosyayı seçmeyi sağlayan bir pencere gelir. Seçilip tıklanan dosya INPUT veri alanına girer. Bunu içeren form göderildiğinde, eklenen dosya da ACTION nitelemesinde belirlenen aynı URL adresine gider.gider.
Görüntü | HTML Kodları |
---|---|
<FORM ENCTYPE="multipart/form-data" ACTION="URL" METHOD=POST> Gönderilecek Dosya_Adı:<BR> <INPUT NAME="message" TYPE="file"> <BR> <BR> <INPUT TYPE="submit" VALUE="Dosyayı URL ye Gönder"> </FORM> |
kodlarının vereceği görüntü şöyle olur:
Bu nitelemeyi desteklemeyen sistemler, yalnızca VALUE nun değerini text olarak gösterir.
Bazı hallerde, kullanıcıdan, sıralanan seçeneklerden birisini seçmesini istemek yerine, belirlenecek MIN...MAX değerler arasında bir değer seçmesi istenebilir. Bu durumda, INPUT damgasında TYPE=range nitelemesi yapılır. Örneğin,
kodlarının vereceği görüntü şöyle olur.
|
Bir web sayfası için form yaratmak, kağıt üzerinde form düzenlemeye benzer. Örneğin, Nüfus Cüzdanı Sureti, Vergi Beyannamesi Formu, vb. formlarda istenen bilgiler kolay okunur bir tablo ya da liste halinde düzenlenir. Her bilgi için o bilginin sığacağı küçük kutucuklar yapılır. Hangi kutucuğa ne yazılacağı, kutucuğun yanında belirtilir. Web formları da buna benzer.
Bu derste bu işin nasıl yapıldığını öğreneceğiz.
Sunucu, gelen verileri bir program (CGI Script) aracılığı ile işler. Yukarıda söylendiği gibi, bu programın önceden, kullanıcılardan gelen verileri, öngörüldüğü biçimde işleyecek biçimde hazırlanmış olması gerekir.
CGI Script'in gelen verileri işleyebilmesi için, her bir veriyi ayrı ayrı tanıması gerekir. Bunun için, formdaki her veri alanını bir değişken olarak tanımlarız. Kullanıcının bu veri alanlarına girdiği veriler de bu değişkenlere atanan değerler olacaktır.
Bunun olabilmesi için, her veri alanına bir değişken_adı verilir. Bunu NAME parametresine verilen değerle yaparız. Örneğin, NAME="pkodu" nitelemesi, bu değişkeni (veri alanını) "pkodu" diye adlandırmaktadır.
Kullanıcı bu veri alanına, diyelim ki, 06530 değerini girmişse, CGI script bunu pkodu := 06530 biçiminde algılayacaktır.
Ancak, yukarıda söylediğimiz gibi, bir programlama dilinde yazılan sözkonusu program, bu dersin konusu değildir. O nedenle, onu CGI Script diye adlandırmakla yetiniyoruz.
Form yaratan damganın adı FORM dur. Bir formun öğeleri
|
Aşağıdaki form kullanıcının adını girebileceği 20 karakter uzunluğunda bir giriş alanı yaratmaktadır. <INPUT> giriş alanını yaratan damgadır.
Görüntü | HTML kodları |
---|---|
<FORM ACTION="URL"> <INPUT TYPE="text" NAME="ad" SIZE=20 VALUE="Adınızı buraya yazınız."> </FORM> |
CGI programını harekete geçirmek için, text alanına adınızı girip ENTER tuşuna basmanız yeterlidir. Formdaki veri alanına girilen ad, CGI scriptine aşağıdaki biçimde gider.
ad=Adınızı+buraya+yazınız |
|
Şifre ve benzeri girdilerin gizli kalması istenir. Bu gizliliği TYPE="password" nitelemesiyle yapabiliriz:
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> PIN numaranızı giriniz<BR> <INPUT TYPE="password" NAME="Password" SIZE=20 VALUE=""> </FORM> |
Uyarı: Bu yöntem tam güvenli değildir. Daha güvenli kılmak için, gizli kalması istenen veri önce şifrelenir (encrypted) sonra gönderilir. Ancak bu yöntemde de şifre kırıcıların başarı sağlayabildiğini bilmekte yarar vardır. Bu nedenle, internette güvenlik sorunu ciddi araştırmalara konu olmakta ve değişik yöntemler geliştirilmektedir.
|
<INPUT TYPE="submit" NAME="button" VALUE="Send"> |
Bu niteleme giriş türünün "submit" olduğu, değişken adının "button" olduğu ve düğme üzerine "Send" yaftasının konulacağını belirler. "botton" değeri ön-tanımlı bir değerdir ve resimde görüldüğü gibi kabartılı bir düğme yaratır. İsterseniz yafta olarak "Gönder", "Yolla" gibi Türkçe sözcükler koyabilirsiniz. MSIE5 "Sorguyu Gönder" deyimini default değer olarak yazmaktadır. Ama isterseniz VALUE parametresine değer vererek, bu yaftayı değiştirebilirsiniz.
Bir form birden çok "submit" düğme içerebilir:
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> <INPUT TYPE="submit" NAME="button" VALUE=" A "> <INPUT TYPE="submit" NAME="button" VALUE=" B "> </FORM> |
Bu düğmelerden birisine basılınca onunla ilgili veri gider. Örneğin, "A" düğmesine basılınca, CGI scriptine
button=+A+ |
yollanır.
|
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> <TEXTAREA NAME="feedback" ROWS=5 COLS=20> Konuyla ilgili görüşlerim şöyledir: ... ... </TEXTAREA> <BR> <INPUT TYPE="submit" NAME="button" VALUE="Send"> </FORM> |
<TEXTAREA> damgasının parametreleri:
<TEXTAREA NAME="metin" ROWS=3 COLS=32> Lütfen görüşlerinizi buraya yazınız. </TEXTAREA>
kodu yazıldığında, kullanıcının önüne herbiri 32 karakter alabilen 3 satırlık bir text alanı gelir. Bu alanda Lütfen görüşlerinizi buraya yazınız. mesajı görünür. Ancak, bu yazı alanı 3x32=96 karakterle sınırlı değildir. Kullanıcı istediği uzunlukta bir metin girebilir. Yeni girişler oldukça, pencere kayarak yeni giriş alanı açar. Burada 3 satır ve 32 kolon nitelemesi, yalnızca, formda yazı alanı olarak belirecek pencerenin boyutlarını gösterir. Girilecek metnin uzunluğunu sınırlamaz.
|
Çoktan seçmeli bir test sorusunda olduğu gibi, bir konuyla ilgili mümkün seçeneklerden yalnız birisinin seçilmesi isteniyorsa Radyo Düğmeleri kullanılır. Örneğin, kullanıcıların meslekleri hakkında bilgi edinmek istiyorsanız, aşağıdakine benzer bir form yaratabilirsiniz:
Lütfen aşağıdakilerden birisini seçiniz:
<INPUT TYPE=radio NAME=meslek VALUE="egt"> Eğitim
<INPUT TYPE=radio NAME=meslek VALUE="sag"> Sağlık
<INPUT TYPE=radio NAME=meslek VALUE="san"> Sanat
<INPUT TYPE=radio NAME=meslek VALUE="tic" CHECKED> Ticaret
<INPUT TYPE=radio NAME=meslek VALUE="tur" > Turizm
Bunun görüntüsü şöyle olacaktır:
Lütfen aşağıdakilerden birisini seçiniz:
Eğitim
Sağlık
Sanat
Ticaret
Turizm
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> <INPUT TYPE="radio" NAME="cinsiyet" VALUE="M">Erkek<BR> <INPUT TYPE="radio" NAME="cinsiyet" VALUE="W">Kadın<BR> <INPUT TYPE="submit" NAME="button" VALUE="Send"> </FORM> |
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> Yaş grubu<BR> <INPUT TYPE="radio" NAME="age" VALUE="a"><18<BR> <INPUT TYPE="radio" NAME="age" VALUE="b" CHECKED>18-65<BR> <INPUT TYPE="radio" NAME="age" VALUE="c">65+<BR> <INPUT TYPE="submit" NAME="button" VALUE="Send"> </FORM> |
|
Bazan, birden çok seçeneğin seçilmesi istenebilir. Bu durumda, TYPE değeri olarak radio yerine checkbox kullanılır. Bunun kodları şöyledir:
<INPUT TYPE=checkbox NAME="değişken_adı" CHECKED>
Bir pazarlama şirketi, hangi yerli üretim otomobillerin tercih edildiğini (çok seçenekli olarak) araştıran bir anket formunu aşağıdaki gibi düzenleyebilir:
Aşağıdaki seçeneklerden size uygun olan(lar)ı seçiniz:
<INPUT TYPE=checkbox NAME=marka VALUE="fiat"> Tofaş
<INPUT TYPE=checkbox NAME=marka VALUE="ford" CHECKED> Ford
<INPUT TYPE=checkbox NAME=marka VALUE="hyundai"> Hundai
<INPUT TYPE=checkbox NAME=marka VALUE="opel" CHECKED> Opel
<INPUT TYPE=checkbox NAME=marka VALUE="renault"> Renault
Bunun görüntüsü şöyle olacaktır:
Aşağıdaki seçeneklerden size uygun olan(lar)ı seçiniz: |
---|
Tofaş |
Ford |
Hundai |
Opel |
Renault |
Dikkatle incelenince "radio" tipi ile "checkbox" tipi arasındaki farkı
hemen görebiliriz.
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> Program<BR> <INPUT TYPE="checkbox" NAME="prg" VALUE="Ada 95" CHECKED>Ada 95<BR> <INPUT TYPE="checkbox" NAME="prg" VALUE="C++" CHECKED>C++<BR> <INPUT TYPE="checkbox" NAME="prg" VALUE="COBOL">COBOL<BR> <INPUT TYPE="checkbox" NAME="prg" VALUE="JAVA" CHECKED>JAVA<BR> <INPUT TYPE="checkbox" NAME="prg" VALUE="PASCAL">PASCAL<BR> <INPUT TYPE="submit" NAME="button" VALUE="Send"> </FORM> |
|
Bazan açılan bir menüden seçim yaptırmak isteyebilirsiniz. Bu durumda, SELECT damgası kullanılır. <SELECT>...</SELECT> teknesi içinde verilecek seçenekler OPTION ile belirtilir.
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> Kayıt Ortamı<BR> <SELECT NAME="Media"> <OPTION SELECTED> Disk <OPTION> Floppy Disk <OPTION> Teyp Şeridi </SELECT> <BR> <INPUT TYPE="submit" NAME="button" VALUE="Send"> </FORM> |
HTML 3.0 sürümü, Radyo Düğmeleri ve Seçme Kutularını tek bir menüde yaratma olanağı getirmiştir. Bunun için SELECT-OPTION menüsü kullanılır. <SELECT NAME=""> ... </SELECT> teknesi içine yazılan OPTION lar "radio" düğmesi gibi işlev görür; yani OPTION ile belirtilen seçeneklerden yalnızca birisi seçilebilir.
<SELECT MULTIPLE NAME=""> ... </SELECT> teknesi içine yazılan OPTION lar checkbox" kutucuğu gibi işlev görür; yani OPTION ile belirtilen seçeneklerden istenildiği kadarı seçilebilir. Bunların nasıl olduğu aşağıdaki iki örnekten görülebilir.
Görüntü | HTML Kodları |
<form action="music"> <select name="music"> <option value="rocknroll">Rock <option>Blues <option>Folk <option>Jazz <option>Classic </select> </form> |
Görüntü | HTML Kodları |
<form action="music"> <select MULTIPLE name="music"> <option value="rocknroll">Rock <option>Blues <option>Folk <option>Jazz <option>Classic </select> </form> |
|
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> I like to drink:<BR> <INPUT TYPE="checkbox" NAME="istek" VALUE="kahve" >Kahve<BR> <INPUT TYPE="checkbox" NAME="istek" VALUE="cay">Çay<BR> <INPUT TYPE="submit" NAME="button" VALUE="Send"> <INPUT TYPE="reset" VALUE="Reset"><BR> </FORM> |
|
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> Move<BR> <INPUT TYPE="hidden" NAME="game" VALUE="P123456"> <INPUT TYPE="text" NAME="move" SIZE=2> </FORM> |
|
Uyarı:
Bu yalnızca Netscape 2.0 ve üstü tarayıcılarda çalışır.
Görüntü | HTML Kodları |
---|---|
<FORM METHOD=post ACTION="mailto:tkaracay@baskent.edu.tr" ENCTYPE="text/plain"> <INPUT TYPE="text" NAME="ad" SIZE=20 VALUE="Adınızı yazınız"> |
|
Tıklanacak alan bir dikdörtgen, çokgen ya da daire biçiminde olabilir.
Koordinatları belirlenmiş bölgeye, genellikle gerçekleştirilecek eylemin seçimini belirleyen bir nesne konulur. Bu bir düğme, bir dikdörtgen, çokgen, daire ya da resim (image) olabilir. Örneğin, bir müzedeki tabloları açıklayan bir web sayfasında, tabloların minyatür resimleri imap olarak sayfaya konulur. Kullanıcı, dilerse, bu minyatür resme tıkladığında tablo büyük boyutta açılabilir.
Imap eylemi ya sunucu tarafından gerçekleştirilir ya da istemci tarafında tarayıcı (browser) tarafından gerçekleştirilir.
|
Kullanıcı kendi ekranında belirlenmiş bir bölgeye tıklar. Tıklanan bölgenin koordinatlarına bağlı bir mesaj sunucuya gider. Bu mesaj sunucuda bir CGI scriptini çalıştırır. Böylece, belirlenmiş olan eylem gerçekleşir.
Tabii, sunucuda bir CGI scriptinin çalışabilmesi için, söz konusu mesajın bir form aracılığı ile sunucuya iletilmesi gerekir.
Görüntü | HTML Kodları |
---|---|
<FORM ACTION="URL"> <INPUT NAME="image" TYPE="IMAGE" SRC="../images/bulut.jpg" ALIGN=TOP> </FORM> |
|
Kullanıcı koordinatları belirlenmiş bir bölgeye tıklayınca, tarayıcı, o noktaya ilişkilendirilmiş URL adresine doğrudan istek gönderir. URL adresi istemci tarafından doğrudan seçildiğinden, bu yöntemde işlem daha hızlıdır.
Görüntü | HTML Kodları |
---|---|
![]() |
<MAP NAME="Map_1"> <AREA SHAPE=RECT COORDS = "0,0,50,50" HREF="form_01.html#FORM-Check> </MAP> <IMG SRC="./images/daisies.jpg" ALT=Papatya USEMAP=#Map_1> |
|
Form, kullanıcının istediği bir dosyayı sunucuya göndermesini sağlar.
Görüntü | HTML Kodları |
---|---|
<FORM ENCTYPE="multipart/form-data" ACTION="URL" METHOD=POST> Gönderilecek Dosya_Adı:<BR> <INPUT NAME="message" TYPE="file"> <BR> <BR> <INPUT TYPE="submit" VALUE="Dosyayı Sunuya Gönder"> </FORM> |