Bölüm 7

Formların Düzenlenmesi

Sayfa 2


<form> Elementi

<form> Elementi

<form> Elementinin DTD deki tanımı :

 

 

şeklindedir. Bu bildirimden, <form> elementinin başlangıç ve bitiş imlerinin kullanımın zorunlu olduğu, içeriğinin en az bir blokdüzey veya <script> elementi olmak üzere, bunlardan istendiği kadar kullanılabileceği fakat, içerilen blokdüzey elementler arasında <form> elementi olmayacağı anlaşılmaktadır. Yani formlar iç içe yuvalandırılamazlar.

Nitelik listesine bakıldığında, bir formun daima action niteliğinin beltilmesinin zorunlu olduğu görülüyor. action Niteliği, <form> elementi için belirtilmesi zorunlu tek niteliktir. Bu da son derece mantıklıdır, çünkü sunulan her formun bilgilerini bir sunucu programı değerlendirir ve sunucunun gönderilen formu değerlendirecek programın adını ve yerini bilmesi gerekir.

Bir formun sunucuya sunulma metodunu belirten method niteliğinin belirtilmesi zorunlu kılınmamıştır. Bu nitelik sadece POST methodu kullanılacaksa belirtilmesi zorunludur. Aksi hallde varsayılan değeri olan GET metodu kullanılacaktır.

Bu bilgilerden yararlanılarak, <form> elementinin sözdizimi aşağıda belirtilmiştir:

<form                                  (Başlangıç imi : gerekli )

Ortak Temel Nitelikler ( Çekirdek Nitelikler , Uluslararasılaştırma Nitelikleri , Script Yazılabilecek Olaylar )

action=" URI "  [TB] 

method="get|post" [YZ] 

enctype=" İçerik tipi[YZ] 

accept-charset=" karakter setleri listesi[YZ] 

accept=" İçerik Tipi Listesi[YZ] 

name=" cdata[YZ] 

>

İçerebileceği elementler :<form> elementi dışında, en az bir tane olmak üzere, istendiği kadar blokdüzey elementleri veya < script > elementi

</form>                        (Sonuç imi: gerekli)

şeklindedir.

Form elementini içerebilecek elementler : <blockquote>, <body>, <dd>, <del>, <div>, <fieldset>, <ins>, <li>, <map>, <noscript>, <object>, <td>, <th> Elementleridir.

 

<form> Elementinin Nitelikleri

 

action="URI[TB]  Bu niteliğin değeri, sunulan formu değerlendiren programın kaynağı olan URI dir. Yukarıda belirtildiği gibi DTD deki bilgilerden, bu niteliğin, <form> elementinin tek belirtilmesi zorunlu niteliğidir. Birçok webmaster form çözümleme programlarını, geleneksel olarak, cgi-bin olarak adlandırılan bir dizinde tutar. Örnek:

Bu niteliğin değeri olarak bir HTTP URI kullanılır. Bir mailto URI de kullanılabilir fakat form sunulduktan sonra kullanıcıya bilgi dönüşü sorunlu olduğundan kullanılması teşvik edilmemektedir.

method="get|post" [YZ]   Sunulan form bilgilerinin sunucuya ulaştırılması için "get" veya "post" olarak iki metot kullanılabilir. Get metodu seçildiğinde, formun sunulduğu sunucu ile iletişim sağlanır ve tüm form bilgileri tek defada, tek bir iletişim adımında, formun action URI sine eklenmiş olarak gönderilir. Bu metot ile Türkçe karakterler gibi, ASCII olmayan karakterler gönderilemez ve gönderilen bilgilerin uzunluğu, bir URI değerine eklenebilecek kadar, tipik olarak 100 karakteri geçmeyecek bir uzunlukta olabilir. Get metodu varsayılan değer olduğundan açıkça (explicit olarak) belirtilmesi gerkli değildir.

İkinci alternatif, form bilgilerinin iletimi için "post" metodunun kullanımıdır. Bu metot bilgileri sunucuya iki aşamada gönderir. İlk aşamada sunucu ile temas sağlanır, ikinci aşamada bilgiler gönderilir. Bu metot ile yapılacak iletişimde gönderilecek bilgi uzunluğu ile ilgili bir kısıt yoktur. <form> Elementinin DTD deki tanımı ile, iletişimde "post" metodu kullanılacaksa, bunun açıkça beliritilmesi zorunlu kılınmıştır.

enctype=" İçerik tipi[YZ]   Bu nitelik, iletim, formun sunucuya sunulması için kullanılacak içerik metodunu belirtir ve sadece iletim metodunun"post" olduğu durumlarda belirtilmesi gerekir. Varsayılan değeri, "application/x-www-form-urlencoded" dir. Veri iletim metodu "get" ise bu niteliğin belirtilmesi gerekli değildir.

Eğer form içerisinde, <input> elementinin type="file" şekli kullanılyorsa, ve iletim metodu "post" ise, enctype niteliğinin değeri "multipart/form-data" olarak bildirilmelidir.

Bu encytpe (kriptolama, kodlama) tipi, verilerin çok parçalı mesajlar halinde kodlanarak gönderileceğini ve her kod parçasının, başarılı bir kontrola karşı geleceğini belirtir. Kod parçaları kontrolun tab sırasına göre gönderilir.

accept-charset=" karakter setleri listesi[YZ]  Bu nitelik, sunucunun sunulan form bilgilerini doğru değerlendirmesi için gerekli karakter kodlaması değerlerinin virgülle veya boşlukla ayrılmış listesidir. Varsayılan değeri "bilinmiyor" değeridir. Bu nitelik için herhangibir değer verilmemişse, sunucu formun gönderildiği sayfanın karakter kodlamasını varsayılan karakter kodlaması olarak kabul eder.

accept=" İçerik Tipi Listesi[YZ]  Bu niteliğin değeri, virgülle ayrılmış içerik tipi listesidir. Bu bildirime sadece sunucuya dosya transferi yapılırken gereksinme duyulur ( <input type="file" ... şeklinde bir bildirim ile)

name=" CDATA[YZ]  Bu değer sadece eski sürümlerle uyum sağlanması için konulmuştur. Artık elementlerin her türlü isimlendirilmesinin id niteliği ile yapılması alışkanlığının kazanılması gerekmektedir.

 

Form Örnekleri

 

İlk örnek minimal bir form bildirimidir:

Bu form herhangibir çalışabilir script içermediğinden sunucuya sadece düğmenin basıldığı bilgisi iletilecektir. Bu formun çalışmasını görmek için, yeni bir sayfaya örnek olarak iletim.htm dosyasına, yukarıdaki kodları yazınız ve dosyayı, sunucunun iletişim kurabileceği bir dizine yerleştiriniz. Eğer uzak bir sunucu ile çalışıyorsanız, yani bir Web siteniz varsa, bu dosyayı FTP ile sunucunun iletişim kurabileceği uygun bir dizine yerleştiriniz ve çalıştırınız. Eğer yerel bir sunucu ile çalışıyorsanız, dosyanın yerleştirilmesi gereken dizin, kök dizin adı verilen ve bilgisayarınızdaki yerel sunucunun iletişim kurabileceği özel bir dizindir. Her yerel sunucun kendi özel kök dizini vardır ve bu dizinin yeri, yerel sunucunun kullanım kurallarında açıklanmıştır. Eğer Microsoft Internet Information Server (IIS), kullanılıyorsa, IIS kök dizini, c:\inetpub\wwwroot dizinidir. Bu dizine, iletim.htm dosyasını yerleştiriniz. Bundan sonra, bir belge çözümleyici, örnek olarak Internet Explorer'i çalıştırınız ve adres çubuğuna http://localhost/iletim.htm yazınız. IE dosyayı çözümleyecek ve submit düğmesini görüntüleyecektir. Düğme tıklandığında IE, IIS ile iletim kuracak ve form elementinin taşıdığı tüm bilgileri IIS yerel sunucusuna gönderecektir.

Eğer iletim.htm dosyası yerel sunucunun iletişim kurabileceği bir dizinden başka bir dizine yerleştirilirse, belge çözümleyici dosyayı sedece çözümleyebilir (parsing) fakat, submit düğmesi tıklandığında yerel sunucuya bilgi gönderemez.

Yerel sunucu ile yerel ağ (LAN=Local Area Network) altında olabilen bir dosya, sunucuya bilgi gönderebilir. Yerel sunucu-yerel ağ konfigürasyonu, aynı uzaktaki sunucu ile geniş ağ (WAN=Wide Area Network) ilişkisi içinde olan bir istemci ilişkisi gibidir. İstemci sunucuya bir istek gönderirse, sunucu bu isteği olağaüstü geniş olanaklarını kullanarak yerine getirebilir ve sonucu basit bir yanıt biligi akımı ile istemcinin bilgisine sunabilir. Sunucu, örnek olarak kendi üzerinde çalışan bir script programı ile istemcinin vergilerini hesaplayabilir. Sunucu kendi üzerine kurulu geniş veri temellerinden yararlanarak istediğiniz yayınının detaylarını bulabilir. Kanun metinleri ve son yapılan değişiklikler, sunuculara basit istekler gönderilerek elde edilebilir. Banka hesaplarına Internet kullanılarak erişim sağlandığından, banka şubalerine müşteri akışı eskiye göre çok azalmıştır. Son yıllardaki genel eğilim (trend) Şİşman Sunucu-Zayıf Istemci (Fat Server- Thin Client) yöntemidir. Bu yöntemde sunucular olabildiğince program ile yüklü, istemciler sadece istek yapabilecek ve hızlı iletişim yapabilecek nitelikler ile donatılmaları yeterli olacaktır. Network Computing ( tüm programların sunucu üzerinden çalıştırılması) gibi bir ütopya ise belki de ancak güvenlik sorunları çözümlendikten sonra düşündüğümüzden de çabuk gerçekleşebilir. Bunun öncülüğünü Google yapacak gibi görünmektedir.

Bütün bu yüksek teknoloji harikalarının çalışabilmesi için, ağ güvenliğinin son derece gelişmiş olması gerekir. Günümüzde, bu güvenlik sorunları henüz problem olmaya devam etmektedir ve güvenlikle ilgili çalışmalar çok önem kazanmıştır. Bu çalışmalar sonunda, kesinlikle bugünkünden daha güvenli bir Internet ağı oluşacaktır.

Gelecekte, sunucu tarafı programların yoğun olarak kullanılması beklendiğinden, programcıların sunucu tarafı script programlanması, çok kullanıcılı veri temellerinin programlanması, iletişim ağları yönetimi, bilgi yönetimi gibi konularla daha yoğun olarak ilgilenecekleri düşünülmektedir.

 

Wednesday, October 5, 2005 17:48

 

validate in W3C !Valid HTML 4.01!