Tekil Mesaj gösterimi
Alt 17 Mart 2007, 20:40   #10
Çevrimdışı
telNET
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ASP Anlatımı (Dökümandır)




Next
Bu iki kodu, miniform_post.asp’ye katabilir misiniz? (Ortaya çıkartacağınız örneği bu kitapçığın örnekleri arasındaki miniform_multi.asp ile karşılaştırabilirsiniz.)
Parola İle Sayfa Koruma
“Internet’te gizlilik olmaz!” ilkesine rağmen, bazen öyle sayfalarımız olur ki, bunların içeriğini bütün Internet ziyaretçilerinin görmesini istemeyebiliriz. Örneğin derneğimizin veya grubumuzun telefon numaraları ve elektronik posta adreslerini gösteren sayfamıza sadece grup üyelerinin ulaşmasını arzu edebiliriz. Bir Web sitesinin herhangi bir sayfasını ziyaretçilerden gizlemek için sayfanın açılmasını belirli bir şartın yerine gelmiş olmasına, mesela ziyaretçinin bir Form aracılığıyla bize doğru parolayı göndermesine bağlayabiliriz.
Bu tür sayfa gizleme yollarını istemci-tarafında çalışan bir programla yapmak mümkündür; ancak sayfa gizlemenin mantığına aykırıdır. sözgelimi bir Form’da parola alanına girilecek bilginin gerçek parola ile karşılaştırılmasını bir Script fonksiyonu ile yapmaya kalkarsak, ziyaretçinin kaynağı görüntülemesi halinde ziyaretçinin girdisi ile parolayı karşılaştıran Script, ve tabiî bizim kıymetli parolamız, ziyaretçi tarafından öğrenilecektir. Oysa ASP kodları ile gizlediğimiz parolanın ziyaretçiye görünmesi imkansızdır; çünkü ASP kodları hiç bir zaman ziyaretçiye gönderilmeyeceği için parola sınayan program da ziyaretçiye gidemeyecekti
--------------------
Önce şu kodu, parola.asp adıyla kaydedelim:
<%@ LANGUAGE="VBSCRIPT" %>
<%
Response.ExpiresAbsolute = Now() - 1 'Sayfanın yedeklenmesini &#246;nleyelim
FormParola = ucase(trim(request.form("FormParola")))
If FormParola <> "PAROLA" Then
%>
<HTML>
<HEAD>
<TITLE>ASP ILE PAROLA</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 bgcolor="#ccffff" text="black" link="navy" vlink="purple">
<DIV align="center">
<FORM action="parola.asp" method="POST">
<h2>Ana sayfaya girmek i&#231;in parolayı yazınız (Mesela, PAROLA) ?</h2>
*<input type="password" name="FormParola" size="10"><br><br>
*<input type="submit" value="Girebilir Miyim?">
</form>
</div>
</body>
</html>
<% Else %>
Şimdi ana sayfaya girmiş oldunuz..
<% End If %>
Şimdi kodumuzu ayrıntılı indereleyebiliriz. &#214;nce, bu sayfanın ziyaret&#231;inin Browser’ı tarafından ziyaret&#231;inin bilgisayarında yedeklenmesini &#246;nlediğimize dikkat edin: Bunu Response nesnesinin .Expries metodunun farklı bir t&#252;r&#252; ile yapıyoruz. .ExpiresAbsolute sadece .Expires metodundan farklı olarak, bizden bir değer ister. Bu değerin zaman olarak verilmesi gerekir. Burada VBScript’in o andaki zamanı belirten Now() fonksiyonu ile yapıyoruz ve bu fonksiyonun verdiği değerden (yani o andaki saatten) 1 saat &#231;ıkartıyoruz. B&#246;ylece sayfanın ge&#231;erliği &#231;oktan dolmuş oluyor. Browser, bu ifadeyi g&#246;rd&#252;ğ&#252; anda sayfanın daha sonra başvurulmak &#252;zere bir kopyasını saklamayacaktır. Bunu neden yapıyoruz? Diyelim ki parolayı doğru bilen bir ziyaret&#231;i kullandığı bilgisayarın başından kalktı ve yerine başka bir kullanıcı ge&#231;ti. Bu kişinin Browser’ın Yenile d&#252;ğmesini tıklaması halinde bizim &#246;zene-bezene gizlediğimiz sayfa yeniden g&#246;r&#252;nt&#252;lenecektir. Oysa Browser’a bu sayfanın artık ge&#231;erli olmadığını bildirmekle, yenilenme işleminin Cache bellekten (ziyaret&#231;inin bilgisayarında sabit diskte kaydedilen kopyadan) değil de, mutlaka Server’dan yapılmasını istiyoruz.
Sayfamız a&#231;ılırken, (kodumuzun d&#246;rt ve beşinci satırında) kendi i&#231;erdiği formda bilgi olup olmadığını sınıyor. Bunu formdaki formParola isimli INPUT alanının değerini atadığımız değişkenin i&#231;eriğini parola olarak se&#231;tiğimiz kelime karşılaştırarak yapıyoruz. Eğer bu değişken (buradaki &#246;rnekte “PAROLA” kelimesine) eşit değilse, yani parola yanlış veya boşsa If sorgusu olumlu sonu&#231; verecek ve program devam edecektir. If sorgusu yanlış sonu&#231; vermiş olsaydı, yani ziyaret&#231;i Form’a bilgi girmiş ve bu bilgi bizim karşılaştırmayı yaptığımız kelimeye eşit olmuş olsaydı, program ELSE ifadesine atlayacaktı. Programın devamı formu oluşturmaktadır; ELSE ifade ise formu atlamakta ve ziyaret&#231;inin Browser penceresine “Şimdi ana sayfaya girmiş oldunuz” c&#252;mlesini yazdırmaktadır. Tabi&#238; ger&#231;ek bir uygulamada bu c&#252;mlenin yerinde ger&#231;ek bir sayfanın &#246;geleri yer alacaktı. Bu y&#246;ntemi uygularken sayfanın VBScript’nin End If ifadesiyle bittiğine dikkat edin.
Dinamik İ&#231;indekiler Sayfası
Internet sitemizin sayfaları genellikle &#231;ok &#246;zenilmiş, cicili-bicili, albenisi olan, g&#246;rsel odak noktalarının oluşmasına dikkat edilmiş tasarımlar olur. Fakat bazen, &#246;nemli olan sadece bir dizindeki b&#252;t&#252;n HTML ve ASP belgelerinin adlarını ve başlıklarını liste halinde ziyaret&#231;iye sunmaktır. B&#246;yle bir sayfada da tasarımın g&#246;rsel ilkelerine dikkat edilebilir. Fakat burada &#246;nemli olan, sayfanın kendi kendisini inşa etmesi ve sayfanın bir dizinin i&#231;indeki t&#252;m dosyaları zyaret&#231;iye listeyen b&#246;l&#252;m&#252;n&#252;n otomatik olarak g&#252;ncellenmesidir. Bunu, bir HTML sayfası oluşturan ASP programı olarak tasarlayabiliriz. Aşağıdaki biraz uzunca kodu, menu.asp adıyla kaydedin veya bu kitap&#231;ığın &#246;rnek dosyaları arasında bulun:
<%@ LANGUAGE=VBSCRIPT %>
<%
Server.ScriptTimeOut = 300 *'Server'a daha &#231;ok zaman tanımak i&#231;in
strMenuSayfaURL = "/menu.htm" 'oluşturacağımız sayfanın yolu
strListKlasor = "/" * * *'i&#231;indekileri bulacağımız dizin
%>
<HTML>
<TITLE>ASP ILE MENU OLUSTURMA</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
<META http-equiv="Copyright" content="Alex Homer">
<BODY>

<%
Response.Write "<P>Men&#252; sayfası oluşturuluyor: " & strMenuSayfaURL & " ...</P>"

'men&#252; sayfası olacak d&#252;z yazı dosyasını oluşturalım
Set objFSO = CreateObject("Scripting.FileSystemObject")
strDosyaAdi = Server.MapPath(strMenuSayfaURL)
Set objMenuSayfa = objFSO.CreateTextFile(strDosyaAdi, True) 'dosyanın &#252;st&#252;ne yaz

'men&#252; sayfasının başlık b&#246;l&#252;m&#252;n&#252; yazalım
objMenuSayfa.WriteLine "<HTML><BODY><P><B>Dosyaların listesi</B></P>"

'belirtilen dizindeki dosyaların listesini i&#231;eren kolleksiyonu oluşturalım
Set objKlasor = objFSO.GetFolder(Server.MapPath(strListKlasor))
Set kolDosyalar = objKlasor.Files

'Her bir dosyanın başlığını okuyarak listemizi yapalım
For Each objDosya in kolDosyalar

'dosya adının uzantısı ASP ve HTM olanları ayıralım
strDosyaTuru = objFSO.GetExtensionName(objDosya.Name)
If (strDosyaTuru = "asp") Or (Left(strDosyaTuru, 3) = "htm") Then

'dosyanın t&#252;m&#252;n&#252; okuyup bir String'de tutalım
Set objOku = objDosya.OpenAsTextStream(1) 'okumak i&#231;in
strIcerik = objOku.ReadAll
objOku.Close

'i&#231;inden başlık b&#246;l&#252;m&#252;n&#252; alalım
strBaslik = ""
intBaslangic = Instr(UCase(strIcerik), "<TITLE>") + 7
intSon = Instr(UCase(strIcerik), "</TITLE>")
If (intBaslangic > 0) And (intSon > intBaslangic) Then
strBaslik = Trim(Mid(strIcerik, intBaslangic, intSon - intBaslangic))
End If
If Len(strBaslik) = 0 Then strBaslik = "Adsız sayfa '" & objDosya.Name & "'"

'Men&#252; sayfası i&#231;in metni oluşturalım
strBuDosyaURL = strListKlasor & objDosya.Name
strKopru="<A HREF=" & Chr(34) & strBuDosyaURL & Chr(34) & ">" & strBaslik & "</A><BR>"
objMenuSayfa.WriteLine(strKopru)
End If
Next

'Men&#252; sayfasının son b&#246;l&#252;m&#252;n&#252; yazalım
objMenuSayfa.WriteLine "</BODY></HTML>"
objMenuSayfa.Close
Response.Write "<P>Men&#252; sayfası oluşturuldu.</P>"
%>
<P><A HREF="<% = strMenuSayfaURL %>">Men&#252; sayfasını a&#231;</A></P>
</BODY>
</HTML>
Programın daha &#246;ncekilere g&#246;re uzun oluşu, Dosya Sistemi (FileObject) Nesnesini kullanarak oluşturacağı menu.htm dosyasının i&#231;eriğini sağlamak i&#231;in verdiğiniz dizinde bulunan ve dosya adı uzatması .htm ve .asp olan b&#252;t&#252;n dosyaların i&#231;inde <TITLE>..</TITLE> etiketini aramasından kaynaklanıyor. Programın yazarı Alex Homer’in b&#252;t&#252;n değişken adlarının &#246;n&#252;nde, değişkenin t&#252;r&#252;n&#252; belirten &#246;n-ekler kullandığına dikkat edin. B&#246;ylece nesneleri (obj), sayısal (int) ve kolleksiyon (kol) değerlerden ayırmamız kolaylaşıyor.
Programı &#231;alıştırdığımız zaman, Browser penceresinde men&#252; sayfasının oluşturulduğuna ilişkin mesaj belirliyor; ve işlem tamamlandığında da oluşturulan menu.htm sayfasının k&#246;pr&#252;s&#252; veriliyor. Bu k&#246;pr&#252;y&#252; tıkladığımızda ise programın beşinci satırında strListKlasor = "/" ifadesiyle verdiğimiz dizinin i&#231;indeki b&#252;t&#252;n HTML ve ASP dosyalarının başlığını, bu dosyalara k&#246;pr&#252; verilmiş olarak g&#246;r&#252;r&#252;z.
İsterseniz, strListKlasor değişkeninin değeri olarak, s&#246;zgelimi “/html/” gibi, kendi Web Server’ınızdaki diğer herhangi bir dizinin adını da verebilirsiniz. Bunu yaparken dizin adının sonuna b&#246;l&#252; işareti koymayı unutmamak gerekir. Bu program b&#246;yle bağımsız olarak &#231;alıştırılabileceği gibi, bir &#231;er&#231;evenin (Frame) i&#231;inde &#231;alıştırılabilir ve sonu&#231;ları, başka bir &#231;er&#231;evenin i&#231;inde g&#246;r&#252;nt&#252;lenebilir. Bu programın “İ&#231;indekiler” sayfasını hazırladığı dizine ne kadar yeni dosya koyarsanız koyun veya mevcut dosyaları &#231;ıkartırsanız &#231;ıkartın, ne zaman bu programı &#231;alıştırırsanız, İ&#231;indekiler listesi dinamik olarak mevcudu yansıtacaktır.
Gecikme Bildirme Sayfası
Yukarıdakı &#246;rneği birlikte uyguladıysak, ASP programına İ&#231;indekiler listesini &#231;ıkartması i&#231;in verdiğimiz dizinin i&#231;erdiği dosya sayısına bağlı olarak, programın &#231;alışması epey uzun s&#252;re alacaktır. 20 saniyenin &#252;zerinde beklemenin bir y&#252;zyıla yakın etki yaptığı g&#252;n&#252;m&#252;z Internet ziyaret&#231;isi i&#231;in bu s&#252;re &#231;ok uzun g&#246;r&#252;nebilir. Ziyaret&#231;imize, s&#246;zgelimi Browser programının donmadığını, veya Internet bağlantısının kesilmediğini belirtebilmek i&#231;in, “L&#252;tfen bekleyiniz!” mesajı vermek yerinde olabilir. Yukarıdaki &#246;rnekte bunu aynı sayfa i&#231;inde yapma imkanımız vardı; &#231;&#252;nk&#252; programımız tabir yerinde ise ziyaret&#231;iyi bu sayfadan alıp, başka bir sayfaya g&#246;t&#252;rm&#252;yordu.
Oysa Web uygulamamızın akış planı &#246;yle gerektirebilir ki, ziyaret&#231;imizin bir talebini karşılayabilmek i&#231;in ona “L&#252;tfen bekleyiniz!” mesajını ne hareket ettiği, ne de gittiği sayfada veremeyiz. Bunun i&#231;in bir “ara” sayfa gerekebilir; bir t&#252;r “L&#252;tfen bekleyiniz!..” sayfası.
Bu &#246;rnekte b&#246;yle bir sayfa yapacağız; ancak bu amacımızı tek sayfa karşılamayacağı i&#231;in, ortaya iki sayfa &#231;ıkartacağız. Şimdi şu kodu bekle01.asp adıyla kaydedin:
<% Response.Buffer = True %>
<HTML>
<% mesaj = Server.URLEncode("Arzu ettiğiniz iş yapılıyor.. L&#252;tfen bekleyiniz") %>
<% Response.Redirect ("bekle02.asp?BEKLE_SURE=3&BEKLE_MESAJ=" & mesaj & _ "&GONDER_URL=index.htm") %>
<HEAD>
<TITLE>ASP ILE BEKLETME 01</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>
</BODY>
</HTML>
Burada ASP kodunun t&#252;m&#252; işlemeden, ortaya &#231;ıkan HTML’in ziyaret&#231;inin Browser’ına par&#231;a par&#231;a g&#246;nderilmesini &#246;nlemek amacıyla Response nesnesinin .Buffer metodunun True (doğru) olarak belirlendiğini g&#246;r&#252;yorsunuz. Programın kullanacağı mesajın, mesaj adlı değişkene atandığına dikkat edin. Bu sayfanın tek işlevi ise Response nesnesinin .Redirect metodu ile bekle02.asp sayfasını &#231;ağırmaktan ibaret. Başka bir deyişle bekle01.asp, ger&#231;ekte Browser’ın y&#252;z&#252;n&#252; bile g&#246;remeyecektir!
Biraz sonra kendisine &#252;&#231; değişken verilmesini bekleyen bekle02.asp programı yazacağız. Nitekim bekle01.asp’nin i&#231;inde &#252;&#231; değişken değeri belirleniyor; ve bunlar bekle02.asp’ye URL-GET metodu ile “yazılıyor.” Burada GET metodu ile bir bir sayfaya veri g&#246;nderme tekniğini hatırlayalım. Bir Form’un Server’a veri g&#246;nderme metodu GET ise, Form’dan (veya sayfadan URL yoluyla) derlenen verilerin “değişken=değer” &#231;iftleri halinde ve &#231;iftlerin arasında & işareti konularak g&#246;nderilir. Bu y&#246;ntemi, HTTP yoluyla Browser nasıl kullanıyorsa, biz de istediğimiz anda kullanabiliriz. Burada;
bekle02.asp?BEKLE_SURE=3&BEKLE_MESAJ=" & mesaj & _ "&GONDER_URL=index.htm”
şeklindeki ifade de sayfa adından sonra konan soru işareti, Server’a bu bilgi k&#252;mesinin bu sayfaya iletilmesi komutunu vermenizi sağlar; bir bakıma Server’a “Şu bilgileri al; bekle02.asp sayfasına ver!” demiş oluyoruz. Bu bilgiler hatırlayacaksınız, Server’da Request nesnesinde tutulur; eşittir işaretinin &#246;n&#252;ndeki kısım değişken, arkasındaki kısım ise değer sayılır.
Dedik ki: bekle02.asp kendinise &#252;&#231; değişken verilmesi beklemektedir. Bunu sağlayan nedir? Resquest nesnesinden alınıp, bu sayfanın i&#231;indeki değişkenlere atanan &#252;&#231; değer bulunması. bekle02.asp’yi de yazalım:
<%@ LANGUAGE="VBSCRIPT" %>
<%
BEKLE_SURE = Request("BEKLE_SURE")
GONDER_URL = Request("GONDER_URL")
BEKLE_MESAJ = Request("BEKLE_MESAJ")
%>
<html>
<head>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
<META http-equiv="Refresh" content="<% =BEKLE_SURE %>; URL=<% =GONDER_URL %>">
<title>ASP ile Bekletme</title>
</head>
<body color="#FFFFFF">
<font face="Arial">
<p align = "center"><strong><% =BEKLE_MESAJ%></strong> </p> </font>
</body>
</html>
Daha &#246;nce yazdığımız bekle01.asp, ziyaret&#231;iyi bekle02.asp’ye y&#246;nlendirirken ona &#252;&#231; “değişken=değer” &#231;iftti g&#246;nderiyor; bekle02.asp bunları Request nesnesinden alarak, kendi değişkenlerine atıyor. Bu &#252;&#231; değişkenini inceleyelim.
Ziyaret&#231;inin bekleme s&#252;resince Browser penceresinde g&#246;receği mesaj, BEKLE_MESAJ değişkeninde yer alıyor;
Bu mesajı g&#246;r&#252;nt&#252;lendiği sayfanın ziyaret&#231;inin Browser’ında kalacağı s&#252;reyi BEKLE_SURE değişkenin değeri belirliyor:
Bu sayfanın yerini alacak olan hedef sayfa veya ziyaret&#231;inin Browser’ına g&#246;nderilecek yeni sayfanın adresini, GONDER_URL değişkeni belirliyor.
Bu programları &#231;alıştırdığınızda ziyaret&#231;inin Browser’ında &#252;&#231; saniye s&#252;reyle “Arzu ettiğiniz iş yapılıyor.. L&#252;tfen bekleyiniz!” yazısı g&#246;r&#252;nt&#252;lenecek; daha sonra Browser’a index.htm sayfası g&#246;nderilecektir. Bu iki programı kendi ihtiya&#231;larınıza uyarlamak isterseniz, s&#246;zgelimi bir veritabanının g&#252;ncellenmesi sırasında veya benzeri bir muhtemel gecikme durumunda, ziyaret&#231;iye durumu bildirmek i&#231;in, k&#246;pr&#252;y&#252; bekle01.asp’e verebilirsiniz; asıl hedef URL’i ise bekle01.asp’de verebilirsiniz.
Form Değerlerini Yakalayalım
Bir veritabanından &#231;ektiğimiz verilerle, Form etiketi i&#231;inde kullanabileceğimiz ve ziyaret&#231;inin ya metin girmesine ya da se&#231;im yapmasına imkan veren kutuları, se&#231;enekleri nasıl doldurabileceğimize ilişkin bir &#246;rneği birinci kitap&#231;ıkta g&#246;rm&#252;şt&#252;k. Burada şimdi bir Form’dan gelen verileri nasıl değişkenlere atayacağımızı ve bunları nasıl kullanacağımızı ele alalım.
Bu ama&#231;la iki sayfa hazırlayacağız: birincisi i&#231;inde bir &#231;ok tercihler bulunan formlar olan bir HTML dosyası, diğeri ise bu Formun değerlerini alarak, kullanılır hale getirecek bir ASP programı olacak.

&#214;nce FormOrnek.htm adlı şu dosyayı kaydedelim:
<HTML>
<HEAD>
<TITLE>Form Ornegi</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>
<H4>Birinci Form</H4>
<FORM ACTION="FormOrnek.asp?HangiForm=1" METHOD="POST">
<INPUT TYPE="Text" NAME="MetinGir" VALUE="Mesajınızı buraya yazınız" SIZE="30" MAXLENGTH="75"><BR>
<INPUT TYPE="Password" NAME="ParolaAlani" SIZE="30" VALUE="parola"><BR>
<TEXTAREA NAME="MetinAlani" COLS="30" ROWS="3" WRAP="VIRTUAL">
Buraya istediğiniz yazıyı yazabilirsiniz...</TEXTAREA><P>
<INPUT TYPE="Submit" VALUE="G&#246;nder">&nbsp;&nbsp;<INPUT TYPE="RESET" VALUE="Sil">
</FORM>
<HR>
<H4>İkinci Form</H4>
<FORM ACTION="FormOrnek.asp?HangiForm=2" METHOD="POST">
<TABLE BORDER = 0><TR><TD><INPUT TYPE="Radio" NAME="Radyo" VALUE="Tercih1" CHECKED>Radyo D&#252;ğmesi Tercih 1<BR>
<INPUT TYPE="Radio" NAME="Radyo" VALUE="Tercih2">Radyo D&#252;ğmesi Tercih 2<BR>
<INPUT TYPE="Radio" NAME="Radyo" VALUE="Tercih3">Radyo D&#252;ğmesi Tercih 3</TD>
<TD width=30>&nbsp;</TD>
<TD><INPUT TYPE="Checkbox" NAME="IsaretKutusu" VALUE="Isaret1">İşaret Kutusu 1<BR>
<INPUT TYPE="Checkbox" NAME="IsaretKutusu" VALUE="Isaret2">İşaret Kutusu 2<BR>
<INPUT TYPE="Checkbox" NAME="IsaretKutusu" VALUE="Isaret3">İşaret Kutusu 3</TD>
</TR></TABLE><BR>
<INPUT TYPE="Submit" VALUE="G&#246;nder">&nbsp;&nbsp;<INPUT TYPE="RESET" VALUE="Sil"></FORM>
<HR>
<H4>&#220;&#231;&#252;nc&#252; Form</H4>
<FORM ACTION="FormOrnek.asp" METHOD="GET">
<INPUT TYPE="Hidden" NAME="HangiForm" VALUE="3">
<SELECT NAME="SecmeListesi" SIZE="1">
<OPTION VALUE="ListeTercih1">Liste Tercih 1
<OPTION VALUE="ListeTercih2">Liste Tercih 2
<OPTION VALUE="ListeTercih3">Liste Tercih 3
</SELECT>
<SELECT NAME="CokluSecme" SIZE="3" MULTIPLE>
<OPTION VALUE="ListeKutu1">&#199;oklu Se&#231;me Kutusu 1
<OPTION VALUE="ListeKutu2">&#199;oklu Se&#231;me Kutusu 2
<OPTION VALUE="ListeKutu3">&#199;oklu Se&#231;me Kutusu 3
</SELECT><P>
<INPUT TYPE="Submit" VALUE="G&#246;nder">&nbsp;&nbsp;<INPUT TYPE="RESET" VALUE="Sil">
</FORM>
</BODY>
</HTML>
Daha sonra belirlediğimiz değişkenlerin Form’un hangi &#246;ğelerinden geldiğinin rahat anlaşılması i&#231;in burada Form unsurlarının değeri olarak unsurun adına yakın kelimeleri kullandığımıza dikkat edin. Sayfada &#252;&#231; ayrı Form bulunduğu, ilk iki formun POST, &#252;&#231;&#252;nc&#252;s&#252;n&#252;n ise GET metoduyla Server’a bilgi g&#246;nderdiği de dikkatinizi &#231;ekmiş olmalı. POST metodunda Server’a giden bilgiler, talep edilen sayfanın adına URL kodlama y&#246;ntemiyle (ve dolayısıyla Browser’ınızın URL kutusuna yazılarak) g&#246;nderilmez; Fakat ilk iki Form’da POST metodu kullanmış olmamıza rağmen, formu işleyecek programa bilgilerin hangi formdan gittiği sanki GET metodu kullanılmış gibi bildiriliyor. Bu y&#246;ntemi, Request.Form kolleksiyonuna yazılmasını istemediğimiz bilgiler i&#231;in kullanabibiliriz. &#220;&#231;&#252;nc&#252; Form ise bilgilerini GET yoluyla g&#246;nderiyor ve kendisinin hangi form olduğuna ilişkin bilgiyi ise gizli bir değişkene yazıyor. Her &#252;&#231; durumda da HagiForm değişkeninin değeri olarak, ASP programına formun sıra numarası anlamına gelen sayı g&#246;nderiliyor. Birinci form 1, ikinci form 2, &#252;&#231;&#252;nc&#252; form ise 3 değerini yolluyor. Bu HTML dosyasını Browser’da a&#231;arsanız, &#252;&#231; ayrı formu g&#246;receksiniz.
Her &#252;&#231; formun g&#246;nderdiği bilgiler aşağıdaki programa ulaşıyor. Bu programı FormOrnek.asp adıyla kaydedebilirsiniz:
<HTML>
<HEAD>
<TITLE>ORNEK FORM SONUCLARI</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>
<%
dim FormTercihi
FormTercihi = Request.QueryString("HangiForm")
Select Case FormTercihi
Case 1
%>
Metin alanı sonu&#231;ları<P>
<TABLE BORDER=1 CELLPADDING=5 width=75%>
<TR><TD>Input/Text Alanı</TD><TD><B><%= Request.Form("MetinGir") %></B></TD></TR>
<TR><TD>Input/Passsword Alanı</TD><TD><B><%= Request.Form("ParolaAlani") %></B></TD></TR>
<TR><TD>TextArea Alanı</TD><TD><B><%= Request.Form("MetinAlani") %></B></TD></TR>
</TABLE>
<HR>
<%
Case 2
%>
Radyo D&#252;ğmesi ve İşaret Kutusu Sonu&#231;ları<P>
<TABLE BORDER=1 CELLPADDING=5 width=25%>
<TR><TD>Se&#231;ilen Radyo D&#252;ğmesi</TD><TD><B><%= Request.Form("Radyo") %></B></TD></TR>
<TR><TD>İşaretlenen Kutular</TD><TD><B><%
dim strIsaretlenen
for each strIsaretlenen in Request.Form("IsaretKutusu")
Response.Write strIsaretlenen & "<BR>"
next
%></B></TD></TR>
</TABLE>
<HR>
<%
Case 3
%>
Se&#231;me Alanları sonu&#231;ları<P>
<TABLE BORDER=1 CELLPADDING=5 width=35%>
<TR><TD>Se&#231;ilen Liste &#214;gesi</TD><TD><B><%= Request("SecmeListesi") %></B></TD></TR>
<TR><TD>Se&#231;ilen &#199;oklu Liste &#214;geleri</TD><TD><B><%
for each strIsaretlenen in Request("CokluSecme")
Response.Write strIsaretlenen & "<BR>"
next
%></B></TD></TR>
</TABLE>
<HR>
<%
End Select
%>
Bu programda, &#252;&#231; ayrı formdan gelebilecek bilgiler, HangiForm değişkeninin değerine g&#246;re, Select Case d&#246;ng&#252;s&#252; ile &#252;&#231; ayrı b&#246;l&#252;mde işleniyor. İlk iki formda, bilgiler POST metodu ile geldiği i&#231;in Request.Form nesnesinin i&#231;inde, değişken adıyla aranabilir. &#220;&#231;&#252;nc&#252; Formda ise bilgiler Request.QueryString nesnesinde bulunuyor. Burada bu bilgilerin daha &#246;nce g&#246;rmediğimiz kısaltma y&#246;ntemiyle alınıp, sayfaya aktarıldığını g&#246;r&#252;yorsunuz; <%=Request("SecmeListesi")>, aslında;
Response.Write Request.QueryString(“SecmeListesi”)
ifadesinin kısaltılmışıdır.
FormOrnek.htm’in her &#252;&#231; formunda da bazı tercihler yaparak G&#246;nder d&#252;ğmesini tıkladığınızda, FormOrnek.asp’ye g&#246;nderilen URL bilgisine dikkat edin. İlk ikisinde sadece se&#231;ilen formun HangiForm değeri yer aldığı halde. &#252;&#231;&#252;nc&#252;s&#252;nde formdaki b&#252;t&#252;n bilgiler burada URL-kodlanmış olarak yer alacaktır.
Programın bilgi işleyen b&#246;l&#252;m&#252;n&#252; kendiniz irdeleyebilir misiniz?

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver