BİLİŞİM - BİLGİSAYAR - EĞİTİM
  Ziyaretçiden Bilgi Alma
 

Ziyaretçiden Bilgi Alma

İstersek adına Web Programı diyelim, sitemize ziyaretçilerin bilgi ulaştırması ancak HTML’in Form etiketi yoluyla olur. Klasik HTML+CGI yöntemleri ile ASP tekniğinde Form etiketlerinin işlevleri arasında bir fark yoktur. Ancak aralarındaki benzerlik de hemen hemen bundan ibarettir. Klasik HTML+CGI yönteminde Form’larımızın Action özelliğine değer olarak çoğu zaman bir CGI programının yolunu ve adını yazarız; oysa ASP’de Form bu bilgileri kendisinin de içinde bulunduğu ASP sayfasına gönderebilir; ve örneğin formun eksik doldurulup doldurulmadığını sınayabilir.

HTML bilgilerinizi tazelerseniz; bir Form’dan Server’a iki metodla bilgi gelebilir: Get ve Post yöntemleriyle. Get, Browser’ın bilgileri yumak yapıp, aradaki boşlukları kaldırarak ve ASCII olmayan karakterleri URL koduyla şifreleyerek Query_String içine yazdırmasını sağlar. Diğer yöntemi birazdan ele alacağız.

Küçük bir form oluşturalım ve bu formdan Get yoluyla gelecek bilgileri daha sonra nasıl kullanabileceğimizi görmek için, şimdilik sadece sayfamıza yazdıralım. Şu kodu miniform_get.asp adıyla kaydedin:

<% @LANGUAGE=VBscript %>

<%

Option Explicit

Response.Expires = 0

Dim strAdi, strSoyadi, hamBilgi, islenmisBilgi

If Request.ServerVariables("QUERY_STRING") <> "" Then

     strAdi = Trim(Request.QueryString("adi"))

     strSoyadi = Trim(Request.QueryString("soyadi"))

     hamBilgi = Trim(Request.QueryString("mesaj"))

     islenmisBilgi = Replace(hamBilgi, vbcrlf, "<BR>" & vbcrlf)

%>

<html>

<head>

<title>Mini Form</title>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

</head>

<body>

Script'imize Form'dan bilgi ulaştı <BR><BR>

Gelen bilgiler:<BR>

Formu dolduran kişinin adı: <%= strAdi%> <BR><BR>

Formu dolduran kişinin Soyadı: <%= strSoyadi%> <BR><BR>

Ham Bilgiler: <%= hamBilgi%> <BR><BR>

İşlenmiş Bilgiler: <%= islenmisBilgi%> <BR><BR>

"Query_String" olarak gelen bilgi: <BR>

<%= Request.ServerVariables("QUERY_STRING")%>

</body>

</html>

<%

Else

%>

<html>

<body>

Bize bilgi verir misiniz?<BR>

<FORM ACTION= "<%= Request.ServerVariables("SCRIPT_NAME") %>" METHOD="GET">

Adınız: <INPUT TYPE="Text" NAME="adi"><BR>

Soyadınız: <INPUT TYPE="Text" NAME="soyadi"><BR>

Mesajınız: <TEXTAREA NAME="mesaj">Mesajınızı buraya yazın!</TEXTAREA><BR>

<INPUT TYPE="Submit" NAME="Gönder" VALUE="Gönder">

</FORM>

</body>

</html>

<% End If %>

Kodumuzun bir değişken tanımladığımız ve Form’dan gelen bilgileri işleyen bölümü, bir de henüz bu bilgi gelmeden önce Form’u oluşturan bölümü olduğuna dikkat ediyor musunuz? Bu iki bölümü bir If sınama deyimiyle oluşturduğumuzu da görüyorsunuz.

ASP tekniği ve VBScript’in kolaylıkları birleşince, CGI’da olduğu gibi, Formdan gelen bilgileri özel fonksiyonlar yazarak ayıklamamız gerekmez. ASP’nin anladığı şekliyle, Query_String Form’dan GET metoduyla gelen bilgileri Form’un bilgileri atadığı değişkenlerin adlarıyla eşleştirerek tutar; ve bize sadece Form’daki değişkenlerin değerlerini, istiyorsak, başka değişkenlere atamak kalır. Burada Form’un “adi” olan değişkenini bir String değişkeni olan strAdi değişkenine, yine Form’un “soyadi” olan değişkenini başka bir bir String değişkeni olan strSoyadi değişkenine atıyoruz. Bunu yapmamızın sebeplerinden biri iki dizi değişkenden hangisinin ASP tarafında kullanıldığını bilmektir.

Form’un üçüncü değişkeni olan “mesaj” ise ASP tarafından işlenirken, iki şekilde ele alınacak: hamBilgi değişkeninin değeri olarak, ve bunu Replace() fonksiyonu ile işledikten sonra atayacağımız islenmisBilgi değişkenini değeri olarak.

Replace() fonksiyonu, bir değişkende bir değeri bulur ve arzu ettiğimiz bir başka değerle değştirir. Üç argüman alır: içinde arama ve değişiklik yapılacak değişken, aranacak değer ve yerine konacak değer. Burada iki veya daha fazla paragraf içeren bir mesajın içindeki satırbaşı-yeni paragraf karakterini, HTML’in anlayacağı <BR> ve satırbaşı karakteri ile değiştiriyoruz.

Şimdi miniform_get.asp’yi çalıştırın, doldurun (mesaj bölümünde iki paragraf oluşturmak için bir yerde Ctrl+Enter’a basmayı unutmayın! Yoksa işlenmiş bilgi ile ham bilginin farkını göremeyiz!) ve Gönder tuşunu tıklayın. Bu arada Browser’ınızın URL hanesine bakın. Bu Get metodunun bilgi gönderme şeklidir. Bilgiler URL-kodu olarak değiştirilir ve gideceği sayfanın adına, soru işareti ile eklenerek, gönderilir. (Tabii ziyaretçiniz yıldızlar halinde görüntülenen bir parola yazdıysa onu da burada açık şekilde görecektir!)

<asp0015.tif>

Bizim Form bilgilerimiz hangi sayfaya gönderiliyor? Yine kendisine. Bunu Form etiketinin Action özelliğinin karşısında yazılı olan VBScript kodu sağlıyor. Bu yolla gelen bilgi, şuna benzer olmalıdır:

Script'imize Form'dan bilgi ulaştı

Gelen bilgiler:

Formu dolduran kişinin adı: Kroninukus

Formu dolduran kişinin Soyadı: Computerium

Ham Bilgiler: Merhaba Ben üniversiteyi yeni bitirmiş bir gencim!

İşlenmiş Bilgiler: Merhaba

Ben üniversiteyi yeni bitirmiş bir gencim!

"Query_String" olarak gelen bilgi:

adi=Kroninukus+&soyadi=Computerium+&mesaj=Merhaba%0D%0ABen+%FCniversiteyi+yeni+bitirmi%FE+bir+gencim%21+%0D%0A&G%F6nder=G%F6nder

Replace() fonksiyonunun, mesajın içindeki CRLF karakterini bulup yerine <BR> koyduğuna dikkat edin. Query_String’in yazdığınız ad ve soyad ile mesajı nasıl yumak (tek String) yaptığına bakın. Ve programımızın bu yumaktan bilgileri alıp, yeni değişkenlere atayarak Browser penceresinde nasıl görüntülediğini inceleyin.

Bu programın canalıcı noktası, Request nesnesinin ServerVariables kolleksiyonunda, Query_String koleksiyonunu kullanmasıdır. Çünkü Get, Form’un sağladığı bilgileri bu koleksiyona kaydetmiş bulunuyor.

Şimdi aynı işi Post metodu ile yapalım. Bunun için biraz önce kaydediğiniz kodda şu değişiklikleri yapın ve miniform_post.asp adıyla kaydedin:

<% @LANGUAGE=VBscript %>

<%

Option Explicit

Response.Expires = 0

Dim strAdi, strSoyadi, strBilgi

If Request.ServerVariables("CONTENT_LENGTH") <> 0 Then

            strAdi = Trim(Request.Form("adi"))

            strSoyadi = Trim(Request.Form("soyadi"))

            strBilgi = Trim(Request.Form("mesaj"))

            strBilgi = Replace(strBilgi, vbcrlf, "<BR>" & vbcrlf)

%>

<html>

<head>

<title>Mini Form (Post)</title>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

</head>

<body>

Script'imize Form'dan bilgi ulaştı <BR><BR>

Gelen bilgiler:<BR>

Formu dolduran kişinin adı: <%= strAdi%> <BR><BR>

Formu dolduran kişinin Soyadı: <%= strSoyadi%> <BR><BR>

Mesaj: <%= strBilgi%> <BR><BR>

</body>

</html>

<%

Else

%>

<html>

<body>

Bize bilgi verir misiniz?<BR>

<FORM ACTION= "<%= Request.ServerVariables("SCRIPT_NAME") %>" METHOD="POST">

Adınız: <INPUT TYPE="Text" NAME="adi"><BR>

Soyadınız: <INPUT TYPE="Text" NAME="soyadi"><BR>

Mesajınız: <TEXTAREA NAME="mesaj">Mesajınızı buraya yazın!</TEXTAREA><BR>

<INPUT TYPE="Submit" NAME="Gönder" VALUE="Gönder">

</FORM>

</body>

</html>

<% End If %>

İki Miniform sayfası arasındaki değişikliği farkettiniz mi? Önce, Form etiketinin METHOD özelliğinin Post olduğuna dikkat edin. Bu yöntemle gelen bilgiler, Request nesnesinin Form kolleksiyonuna, işlenmiş (yani değişken=değer çiftleri halinde yazılmış) olacağı için, Form bilgilerini yeni değişkenlere atama ifadelerimizi de farklı yazıyoruz. Önce formdan gerçekten bilgi gelip gelmediğini Content_Length değişkeninin boyutunun sıfır olup olmadığına bakarak anlıyoruz. Bu değişkenin boyutu 0 ise form içi boş gönderilmiş demektir; bu durumda ziyaretçiyi form’u doldurması için uyaran bir Sub’a gönderebiliriz. Form doldurulmuş ise, kodumuzun birinci bölümü yapması gereken değişkenlere atama işlemini yapıyor; ve sonuçları ziyaretçinin Browser penceresine yazıyor. Daha sonra yapacağımız örnek Konuk Defteri’nde bu bilgileri ziyaretçinin ekrarına değil, bir metin dosyasına yazacağımızı göreceksiniz.

 
 
  Bugün 166 ziyaretçi (255 klik) www.bilisim-egitim.tr.gg  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol