PDA

Tüm Versiyonu Göster : Asp


dapHne
19-02-05, 22:58
ASP sandığınız kadar zor bir iş değil. Yapmanız gereken karar vermek ve PWS kurulumunu yapmak.
Eğer buraya gelmeden önce başka yerlerde, başka kişilerden ASP öğrenimine başladı iseniz korkmaya gerek yok.. Siz zaten en önemli işi yapmış karar vermişsiniz.. Gerisi siz istemeseniz de gelecektir.. Buna inanın..

dapHne
19-02-05, 23:01
Yeni bir dil öğrenmek nasıldır bilirsiniz. Önce konuşmayı bilmeli, ardından yeni diliniz için alıştırmalar yapmalısınız... Yani ben burada sizin HTML bildiğinizi varsayıyorum... ASP ve diğer web programlama dilleri HTML kodları içine yazılır.. Yani onlar da HTML'in bir parçalarıdır.

Öncelikle neden ASP öğrenmek istediğinizi sorun kendinize.. Neden olabilir?
Artık HTML size yetmiyor olabilir. Daha interaktif sayfalar yapma isteği var içinizde. Sayfamda formlar olsun, ziyaretçi ile bir bütün olan sayfalarım olsun istiyorum diyorsanız.. Ya da sayfanız da üyelik sistemi olsun kim geliyor kim gidiyor kontrol edeyim diyorsanız.

Bu nokta da ben size yardım etmeye çalışacağım...

Bu arada bir şeye dikkatinizi çekmez istiyorum, benim size örnek olarak yazdığım kodları kopyalamaz kendiniz yazarsanız daha çok başarılı olursunuz. Hata olduğu taktirde örneklerden yararlanabilirsiniz. Unutmayın, kodları kendiniz yazacaksınız.

Karar verdiyeniz şimdi başlayabiliriz..

Önce PWS (Personel Web Server) kuralım.

Ardından ASP'ye giriş yapalım...

dapHne
19-02-05, 23:08
İşletim sisteminiz Windows 95, 98, NT4 WorkStation veya NT4 Server ile çalışıyorsa Web Server programını siz kurmak zorundasınız. Windows 2000 Server ise Kişisel Web Server programı kendiliğinden kurulu demektir.
Biz kurulmuş olmadığını var sayıyoruz ve burada kısaca Windows için Kişisel Web Server kurulumunu anlatıyoruz :

Kişisel Web Server kurulumuna geçmeden önce bilgisayarımıza bir kimlik vermemiz gerekiyor:
Bilgisayarım / Denetim Masası / Ağ' ı tıklayarak açacağımız diyalog kutusunda ikinci sekme olan Tanımlama'yı açın ve "Bilgisayar adı" kutusuna istediğiniz adı yazın. (Önerilen ad: Server) Bilgisayarınızın ağ ortamında olması gerekmez.

Windows 98'e Kişisel Web Server kurmak için iki yol izleyebilirsiniz. Windows 98 CD-ROM'unda Add-ons klasöründeki PWS dizininde Kur.exe 'yi tıklayın veya Windows NT Option Pack CD-ROM'unda Default.htm' i açın. Bilgisayarınızın Windows 98 ile çalıştığını algılayacak olan program size Personel (Kişisel) Web Server (PWS) kurmayı önerecektir. Kişisel Web Server kurarken her iki durumda da ikinci diyalog kutusunda Minimum / En az veya Typical / Tipik seçeneğini değil, Custom / Özel'i seçin ve açılacak yeni diyalog kutusunda Microsoft Data Acces Components (MS Veri Erişim Bileşenleri) satırına işaret koyarak Alt Bileşenleri Göster düğmesini tıklayın. Açılacak seçme kutusunda ise ADO Documentation satırına işaret koyun. Bu belgelerden daha sonra veri-yönlendirmeli Web uygulaması yaparken yararlanacağız..
Kısaca özetlemek gerekirse: 98 CD-Rom'unda Add-ons klasöründeki Kur.exe ' yi çalıştırıyor ve Custom/ Özel seçeneğini seçiyoruz.. Bundan sonra yukarıda belirttiğim seçenekleri de seçerek kurulum işlemini tamamlıyoruz.

Kişisel Web Server kurulduktan sonra bilgisayarı yeninden başlatmak gerekir.

Windows NT4.0 Workstation veya Server'a IIS 4.0 kurmak için Option Pack CD-Rom'undaki default.htm'i çalıştırmanız ve açılacak browser penceresinde IIS'i kurma seçeneğini tıklamanız yeter. Burada da ADO Documentation'ı sabit diskinize aktarabilmek için gerekli seçeneği işaretleyin.

Windows 98'e Kişisel Web Server kurulduğunda Masaüstü'nde Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. (Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.) (Publish) adlı bir simge belirecektir. NT sistemlerine ise Başlat menüsünde Programlar bölümüne IIS Manager satırı eklenir. Bu yollardan biriyle PWS veya IIS ' i çalıştırın.

Kişisel Web Server'da Personel Web Server Manager (Yönetici) kutusu açıldığında soldaki araç çubuğunda Yöneti'cinin çeşitli bölümlerine gitmeniz için gereken gezinme simgelerini göreceksiniz. Şimdi Kişisel Web Server' ımızı daha yakından inceleyelim:

Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. (Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.)

PWS 'inizi açtığınızda karşınıza böyle br ekran çıkmalı. (Tabii ki üzerinde işaretler olmayacak.)

1- Yukarıda 1 numara ile işaretlediğim yerde öncelikle bilgisayarımıza verdiğimiz ismi görüyoruz. Biraz sonra yazacağımız ASP sayfalarımızı çağırırken, browser adres kutumuza bu adı yazacağız. Ayrıca bu birde orada Dur yazan bir buton görüyoruz. Bu da serverımızı durdurmaya yarıyor. Ama biz şimdi onunla çalışacağımız için durdurmuyoruz..

2- İkinci işaretli yerimiz ise Kişisel Web Server'ın bilgisayarımızdaki sabit diskteki gerçek adresi. Bu sizin Kişisel Web Server'ınızın kök(root) dizinidir. Genellikle C:\inetpub\Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. klasörüdür. Yapacağımız ASP dosyalarını bu dizinin içine koyacağız. Ama benim PWS'min kök dizini bu değil. Siz de isterseniz bilgisayarınızda bulunan başka bir diske de yükleyebilirsiniz PWS'i.

Soldaki araç çubuğundan Gelişmiş simgesini tıklayın; ortadaki pencerede sanal dizinleri görüyorsunuz. Bunlardan Home'u seçin ve sağdaki "Özellikleri Düzenle" düğmesini tıklayın.

Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. (Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.)

Ana dizinin Okuma, Yürütme ve Makro erişim haklarının işaretli olmasına dikkat edin. İleride kendinize Kişisel Web Server'ınızın kök dizininde yeni bir dizin oluşturursanız (örneğim: resimler gibi) ve içine sitenizle ilgili dosyalar koyarsanız, Gelişmiş penceresinde Ekle düğmesini tıklayarak bu gerçek dizini de sitenin sanala dizinlerinden biri haline getirmeniz gerekir.

Gerçek dizinin adı XYZ bile olsa, sanal dizin haline getirirken istediğiniz sanal adı verebilirsiniz. Ama unutmayın browser'ın adres hanesine gerçek dizin adını değil sanal dizin adını yazmanız gerekir.

Bu işlemleri IIS'te değişik araçlar ve diyalog kutularıyla, fakat temel ilkeler itibariyle aynı şekilde yapabilirsiniz. NT4 sistemlerinde IIS'i kurmadan önce, Service Pack 3'ü uygulayın; Internet Explorer 5'i kurun. Elinizde varsa Service Pack 4,5 veya 6'yı en son uygulayın.

Şunu hatırlatmalıyım ASP sayfalarımızı sınamak için bilgisayarınızda Microsoft Internet Explorer kurulu olması gerekmiyor. ASP sayfalarımızı Netscape ile de sınayabiliriz.

PWS kurulum işlemini bitirdirdikten ve birazcık tanıdıktan sonra artık ASP dosyalarımızı yazmaya başlayabiliriz. Heyecana gerek yok. Herşey çok güzel olacak!

dapHne
19-02-05, 23:11
PWS Kurulumunu tamamladıktan sonra bir deneme yapalım ve PWS'imizin çalışıp çalışmadığını kontrol edelim.

Başlamadan önce bir kaç hatırlatma. ASP sayfaları HTML gibi bir düz yazı dosyasıdır. Buna göre istediğiniz bir düz yazı dosyası ile ASP sayfalarını yazabilirsiniz. HTML yazarken kullandığımız NotePad bu iş için çok uygundur. Ve 10'uncu satırın sonunda nokta olduğuna dikkat edelim. Kolları sıvayın ASP'nin büyülü dünyasına adım atıyoruz:

<html>
<head>
<title> ASP ile Merhaba </title>
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">
</head>
<body>
<h1><center>Merhaba Dünya! </h1>
<h2>Bugün:
<% Response.Write(Date) %>.
</center>
</h2>
</body>
</html>



Bu dosyayı merhaba.asp adıyla kaydedelim (Nereye? PWS' in kök dizinine.) ve bilgisayarımızda bulunan Kişisel Web Server'da veya ISS' te sınayalım. Web Server'ı çalıştırın. (Bunu masaüstündeki Yayımla ikonuna tıklayarark yapıyoruz.) Browser'ınızın URL hanesine, Kişisel Web Server'ınızın adı ile birlikte (Hani PWS kurarken bilgisayarımıza bir isim vermiştik ya. İşte onu yazalım.) dosyanın adını yazın. Yani şöyle olmalı:

Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.

Bu dosyayı PWS'in kök dizinine kaydettiysek eğer sayfamız çalışmıştır. Bize Merhaba Dünya! demiş ve bugünün tarihini vermiştir:

Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. (Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.)
görüntü böyle olmalı

Şimdi ilk ASP sayfası denememizi yaptığımıza göre biraz da işin teknik kısmından söz edelim. HTML'in ziyaretçi bilgisayarda çalıştığını biliyorsunuz. Browser URL hanesine adını yazdığımız HTML dosyasını Web Server' dan ister. Web Server dosyayı bulur ve içindeki resimleri ve diğer unusurları bizim bilgisayarımıza gönderir. Biz de sayfayı böylece görmüş oluruz. Fakat bazen server'a bize sadece bir dosya göndermesini değil, bir dosyanın içindekayıtlı komutlar varsa onları icra etmesini de bildirebiliriz. Bunu yapmanın bir yolu CGI programlarıdır. Diğer yol ise ASP'dir. Web Server, kendisinden bir ASP belgesi talep edildiğinde, önce dosyanın içeriğine bakar. Sonra da: "Hmmm. Sanıyorum bu bir .asp dosyası. Hemen bunu ASP.DLL programına göndermeliyim. Sonra da işime devam edeyim!" der.

Yaptığımız örnekte de gördüğümüz gibi ASP sayfası hem HTML kodları içerir hem de içerisinde script dili ile yazılmış kodlar vardır. ASP sayfalarımız da VBScript ve JavaScript kodları kullanabiliyoruz. Ama biliyorsunuz ki browserlar arası uyuşmazlıklar var. Mesela Netscape VBScript dilinden hiç anlamaz. Ama bizim ASP sayfalarımız serverda çalışacağı için bu sorun olmaktan çıkıyor. Bunun açıklaması şöyledir: ASP.DLL gelen sayfada hangi script dilinin kullanıldığına bakar ve bunun için gerekli ortamı oluşturur, bu script dilini yorumlayacak programı çalıştırır. Bu program da script dilini yorumlar daha sonra ASP.DLL de icra edilen komulatlar, işletim sisteminin yardımı istiyorsa (Veritabanından veri çekmek veya dosya sistemine bir dosya açtırmak, yazdırmak gibi) bu yardımın edinilmesini sağlar. Bütün bu işlerin sonunda HTML kodlarına ek yapmak (Örneğin: bir tablonun içini çekilen verilerle doldurmak veya dosya sisteminde edinilen bir dosyanın içeriğini sayfaya yazdırmak gibi) gerekiyorsa bunu ASP.DLL yapar.

ASP.DLL kendine gönderilen sayfayı satır satır okur ve önce ASP kodlarının gerektirdiği HTML değerlerini bulur. Yani önce ASP icra edilir. Sonra HTML bölümleri ile birleştirilir bu ASP komutları ve sayfaya yazdırılır. ASP sayfalarımızda yazdığımız ASP kodları görünmez. Yazdığınız VBScript ve JavaScript kodları HTML bir parçası olarak browserda görüntülenecektir. Ama sayfada ASP'ye dair hiçbir şey kalmayacaktır.

ASP sayfalarımızda genellikle VBScript dilini kullanmamızın hiç bir nedeni yoktur. JavaScript dilini de kullanabiliriz. Netscape VBScript dilini anlamaz demiştim. Bunun da bizim VBScript dilini kullanmamız ile bir ilgisi yoktur. Çünkü ASP sayfalarımızda ASP kodları görünmediği gibi bu script dilinin kodlamaları görünmez. Tabii ortaya çıkardığımız HTML sayfasının Netscape tarafından sorunsuz çalışabilmesi için Netscape'in anladığı Dinamik HTML unsurlarına yer verme zorunluluğumuz hala devam ediyor.

dapHne
19-02-05, 23:14
(Temel Yazım Kuralları)

VBScript yani Visual Basic Script. Ama biz kısaltılmış olan adını yani VBScript adını kullanıyoruz. Visual Basic dilini biliyor iseniz, VBScript dilini biliyorsunuz sayılır.
Daha önce de ASP sayfalarımızda VBScript dilini kullanabileceğimizi söylemiştim. Bu yüzden şimdi VBScript öğrenmeye başlıyoruz.
İstemci tarafında çalışan sayfalar da Netscape VBScript dilini anlamaz. Ama bizim sayfalarımız Server' da çalışacağı için bu sorun olmayacak. Sadece bir kaç VBScript komutu ile mükemmel ASP sayfaları hazırlayabiliriz.
ASP sayfalarımızdaki script dillerini, gerek VBScript, gerek diğer script dillerini sayfa içindeki HTML kodlarından ayırmamız gerekir. ASP.DLL' ye "ASP.DLL kardeş, Script dilimiz şurada başlıyor, şurada bitiyor" dememiz gerekir. Bunun için şimdi öğreneceğimiz script dili VBScript' in kodlarını <% %> işaretleri arasına alırız. Kardeşimiz ASP.DLL (kardeşimizden daha çok söz ettik ondan) bu işaretler " <% %> " arasındaki komutları yazmak yerine yapar. HTML' deki "< >" klasik unsurlar aynen sayfaya yazılır, ama <% ve %> işaretine gelince çok sevgili ASP.DLL' miz durur ve bir düşünür. <% ve %> işaretlerinin arasındaki her şey "Language" ile belirlediğimiz scriptin yorumlayıcısına gönderilir (Aralarında sürekli paslaşır bunlar). <% ve %> işaretlerine sınırlayıcı denir. Sınırlayıcının içinde bir ya da bir çok satır kod bulunabilir.
ASP ve VBScript komutlarımızın arasında "Yorum Satırımız" olmalıdır. Bu neden gereklidir? Yorum satırını bir kodu ne için nerede kullandığımızı belirtmek için kullanırız. Böylece kodlarımızı başka biri devam ettirmek istediğinde nerede ne yaptığımızı açıkça görmüş olur. Ya da uzun süre çalışmadığımız ASP sayfamızda unuttuğumuz yerler olabilir. Bunlara hatırlatma satırı da denir. Yorum satırının başına ( ' ) tek tırnak işareti koyarız. Böylece serverın yorumlayıcısı bu tek tırnağı gördüğünde, görmemezlikten gelir. Sanki hiç tanışmıyorlarmış gibi! Şimdi VBScript ile bu teknikleri kullanarak bir sayfa yazalım. Hem de VBScript' te biraz daha yakınlaşalım:

<% @LANGUAGE=VBScript %>
<html>
<head>
<title>Merhaba VBScript</title>
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">
</head>
<body>
<center>

<%
' Yazı boyutumuzu belirlediğimiz bir değişken tanımlayalım
Dim fontBoyut
%>

<%
' Yazı boyutumuzu 1'den 7' ye kadar değiştirelim
For fontBoyut = 1 to 7
%>
<font size = <%= fontBoyut%> >
VBScript' e Merhaba <br>
<% next %>
</center>
<h4> Bugün <%= WeekdayName(Weekday(Date)) %>, <%= Date %>.
Şu anda Server' a saat: <%= Time %>.<p>
</h4>
</body>
</html>



Bu sayfayı vbsmerhaba2.asp adı ile kaydedin (VBScrtipt' e daha önce merhaba demiştik. Bu ikincisi). Şimdi sayfanın içindeki kodları inceleyelim...

Sayfamızın başında, bu sayfayı VBScript ile yazacağımızı belirttik. Daha sonra herzamanki HTML kodlarımızı yazdık. Daha sonra bir değişken tanımladık. Bundan sonra değişkenlerin bizim hayatımızda yeri çok büyük olacak :). Açıklama satırında da neler yaptığımızı anlatmaya çalıştık. Kısa ve öz. Daha sonra yazı boyutumuzun 1'den 7' ye kadar değişmesini istediğimizi söyledik.
Bu font boyutlarının sayfada uygulanabilmesi için font özelliklerini belirttiğimiz HTML etiketi olan <font=""> etiketine tanımladığımız değişkeni yazdık. Böylece font boyutumuzu değişkenimiz belirleyecek: <font size= <%= fontBoyut %> > dedik. <%= bu ifade ASP' de Response.Write metodunun kısaltılmış halidir. Yani <%= bu işareti yazdığımızda, içine değişkeni yazmamız gerekiyor tabii, bu değişkeni al sayfaya yaz demiş oluyoruz. Böylece değişkenimiz VBScript'e Merhaba yazısını sayfaya 1' den 7' ye kadar büyüterek yazdı. Bunları sayfada sıralamasını sağlamak için de <% next %> döngüsünü yazdık. Daha önce de gördüğüm tarih işlemini yazdık. Ama bu defa biraz farklı olarak. Dikkat ederseniz ASP ve VBScript kodlarını Yeşil renk ile yazıyorum. Böylece diğerlerinden ayırmamızın daha kolay olacağı kanısındayım. Değişkenler ve dögülerden ileride daha çok bahs edeceğiz. Çünkü onlarsız hiç bir işe yaramayız:)


Yazım Kuralları

VBScript komutlarının, değişken adlarının büyük harf, küçük harf olması önemli değildir. Ben genel de VBScript ile yazdığım kodların baş harflerini büyük yaparım. Dediğim gibi büyük harf, küçük harf hiç fark etmez:

For fontBoyut = 1 to 7
FOR FONTBOYUT = 1 TO 7
for fontboyut = 1 to 7

Olarak da yazabilirdik. Hiç bir şey değişmezdi. Ama tabii bazı istisnalar var. VBScript' in kendine has gelenekleri de vardır..
Eğer bir kod satırı çok uzun geliyorsa ve daha sonra anlaşılması mümkün olmayacak derecede uzuyorsa bu satırı alt çizgi ile ( _ ) aşağıdaki satırda devam ettirebiliriz:

<%
If degisken1 > And_
degisken < 10 Then
%>

Verdiğim örnek o kadar da uzun değil. Ama daha sonra, daha uzunlarını da yazmamız gerekecek.

Şimdi adından çok söz ettiğimiz Değişkenlere bir bakalım... Nedir? Ne değildir?

dapHne
19-02-05, 23:18
Bir programda değişken çok önemlidir.
Değişkenler, değişen değeri tutarlar. Mesela değişkenin adı Aylar ise, bu değişkenin değeri "Ocak, Şubar, Mart..." diye giden aylar olacaktır. Değişkenler, türlerine göre bir ya da daha fazla değer tutabilirler. Adı üstünde, değişken, her zaman değişir.. Bu değişikliği biz de yapabiliriz, program da yapabilir.

Değişkenlerin tanımlanması "DIM" komutu ile yapılır. DIM, dimension "boyutlandır" kelimesinin kısaltılmışıdır. Tanımlayacağımız değişken adının önüne Dim yazarız. Mesela:

<%
Dim Ay, Gun, Sayi, İsim

Ay = "Ocak"
Gun = "Pazartesi"
Sayi = 3
İsim = "Seren"
%>

Burada önce değişkenlerimizi tanımladık. Birden fazla da değişkenimiz olabilir. Bunun için değişkenlerin arasına virgül koyarak yaparız. Değişken isimlerimizde Türkçe karakter kullanmamaya özen göstermeliyiz. Değişken isimleri mutlaka harfle başlamalıdır, içinde noktalama işaretleri bulunamaz ve uzunluğu 255 karakteri geçemez. Zaten 255 karakterden uzun bir değişken de işimizi zorlaştırır diye düşünüyorum:)
Değişkenlerin isimlerini belirledikten sonra onlara bazı değerler atadık. Ay isimli değişkenimizin değeri "Ocak" oldu. Buna göre VBScript yorumlayıcısına, "VBScript yorumlayıcısı kardeş, Ay değişkeninin değeri nedir?" diye sorduğumuzda, "Bunu bilmeyecek ne var? Ocak'tır" diyecektir.

Şimdi şöyle bir değişken tanımladığımızı düşünelim, acaba ortaya nasıl bir değişken çıkar? :

<%
Dim Aylar(12), Gunler(31), İsimler(10)
%>

Bu yöntemle oluşturduğumuz kodlarla elde edilecek "kaplar," birden fazla değer tutabilir:

<%
Dim Aylar(12), Gunler(7), İsimler(10)

Aylar(5) = "Mayıs"
Gunler(2) = "Salı"
İsimler(8) = "Hasan"
%>

Bu durumda, içinde 12 ayrı değişken tutabilecek olan Aylar değişkeninin 5 numaralı değeri "Mayıs", 7 değer tutabilecek olan Gunler değişkeninin 2 numaralı değeri "Salı" ve 10 değer tutabilecek olan İsimler değişkeninin 8 numaralı değeri "Hasan" olacaktır. Böyle, birden fazla değer tutabilen değişkenlere Dizi Değişken veya Array denir.

Array Fonksiyonu

VBScript' in kullanıma hazır bir çok fonksiyounu vardır, bunlardan biri olan Array ile kolayca dizi değişken oluşturabiliriz.
Örneğin, Gunler(7) dizi-değişkenini isimler ile doldurmak istiyoruz:

<%
Dim İsimler = Array ("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar")
%>


Böylece hem dizi değişkeni oluşturabiliriz, hem de değerlerini atayabiliriz. Buna göre daha sonra dizi değişkenin üyelerini sıra numarası ile çağırabiliriz:

<%= Gunler(5) %>

bize "Cumartesi" değerini verir. Neden mi? Çünkü dil tasarımcıları, sayı saymaya biz dünyalılar gibi 1' den değil de 0' dan başlarlar. Dolayısıyla Gunler dizi değişkeni Gunler(0)' dan başlayacaktır.


VBScript, bir değişkene alfanümerik (karakter, metin) olarak atadığımız değeri çift tırnak içine almanızı ister. Sayı olarak kullanacağımız değerleri ise tırnak içine almazsınız. Fakat işleri karıştıran nokta, VBScript açısından değişken türü diye bir şey olmamasıdır. Visual Basic, script dili haline getirilirken, değişken türü özelliği alınmayınca, ortaya işleri karıştıran ya da kolaylaştıran böyle bir durum çıkıyor. Bu sizin kafanızı karıştırmasın. Sadece işlemlerde dikkat etmemiz gereken bir kaç nokta var.
Bazı ASP programcıları, bu eksikliği gidermek için değişken adlarının önüne karakter dizileri için "str" harflerini koyarlar: strAy, strGunler, gibi.
Daha iyi anlamak için bir örnek yapalım. islem.asp adı ile kaydedelim:

<html>

<%
Dim Degisken(2), Toplam
Degisken(1) = "Seren"
Degisken(2) = "Sah"
Toplam = Degisken(1) + Degisken(2)
%>

<%= Toplam %>

</html>



Bu sayfayı çalıştırdığınızda sayfaya SerenSah yazıldı değil mi? (Arada boşluk olmayışına aldırmayın. Daha sonra göreceğiz.) Şimdi Değişken(1)' in değeri olarak "Seren" yerine tırnak içinde 3, Sah değeri yerine yine tırnak içinde 10 yazın. Şimdi sayfayı tekrar açalım. Sonuç? 310 değil mi? Şimdi tırnakları kaldırın 3 ve 10 ' un çevresinden. Sonuç? Doğru sonuç aldığınızdan eminim. Sayıların çevresinden tırnak işaretlerini kaldırınca VBScript bunların sayı olduğunu anladı ve işlemi ona göre yaptı.

dapHne
19-02-05, 23:19
Sabit Değerler

VBScript' de bir kere tanımladığımızda bir daha değişmesini istemediğimiz unusurlar olabilir. Bunlara değişken diyemeyiz. Öyle değil mi? O zaman onlara Sabit Değerler diyelim. Sabit değer, bütün site boyunca yani uygulama boyunca değişmeden kalır. Bu değerleri Const (constant, sabit kelimesinden türetilme) komuyutla yaparız:

Const Siteadi = "Webdersleri"
Const Slogan = "En iyi kaynak"

VBScript'in kullandığı tek tür değişkene variant denir. Variant, karakter dizini (String) de olabilir, sayı (number) ' da. Fakat bir Variant'ın içindeki değer, veri olarak nitelendiğinde şu türlerden birine girer:

Boolean: Değişkenin değeri ya True (doğru) ya da False (Yanlış) olur. True' nun değeri -1, False' un değeri ise 0' dır.

Byte: 0 ile 255 arasında bir sayısal değeri olabilir.

Double: Yüzen noktalı değer denilen veri türüdür. Pozitif sayılar için 4.9E-324 ile 1.8E308 arasında, negatif sayılarda -4.9E-324 ile 1.8E308 arasında bir değer alabilir.

Date/Time: Önceden belirlenmiş biçimlerde tarih ve zaman bilgisi içerir.

Empty: Tanımlanmış ancak henüz değer atanmamış (boş) değişken türüdür.

Error: Programın hata mesajlarını ve hata değerlerini tutar.

Integer: Noktalık bölüm içermeyen tamsayı verilerdir, değeri
-32.768 ile +32.767 arasında olabilir.

Long: Noktalık bölüm içermeyen tamsayı verilerdir; değeri -2.147.483.648 ile 2.147.483.648 arasında olabilir.

Null: İçinde bulunmamak üzere tanımlanmış değişkenlerdir.

Object: Windows OLE nesnelerini tutmak üzere tanımlanmış değişkenlerdir.

Single: Yüzen noktalı değer denilen veri türüdür. Pozitif sayılar için 1.4E.45 ile 3.4E38 arasında, negatif sayılarda -1.4E-45 ile -3.4E38 arasında bir değer alabilir.

String: Alfanumerik veri tutan değişkenlerin değeridir.

Bunları ASP sayfalarımızda sık sık kullanacağız.

dapHne
19-02-05, 23:27
Bundan sonra işimizin daha çok matematiksel yanları oldğunu göreceksiniz. Bu bize hayatımızın her alanında matemetiğin önemini anlatır. Anlayana:)

VBscript' de Operatörler işlem yapmamızı sağlayan değerlerdir diyebiliriz. Onlarla işlem yaparız, sonuç alırız. Bu işlmeleri değişkenlerle yaparız gibi. Bakalım neymiş bu operatörler. Neye benzerler?:


Operatör İşlevi Sınıfı

+ Toplama Aritmetik
- Çıkarma
* Çarpma
/ Bölme
^ Üssünü alma
\ Tamsayı bölme
Mod Modüler aritmetik

= Bir değişkenin diğerine eşit olduğunu sınar Karşılaştırma
<> Bir değişkenin diğerine eşit olmadığını sınar
>and< Bir değişkenin diğerinden büyük veya küçük olduğunu sınar (and kelimesi var)
>=and<= Bir değişkenin diğerinden büyük veya eşit, veya küçük veya eşit olduğunu sınar (and kelimesi var)
Is Bir ifadedeki iki referansın aynı Nesne'ye yapılıp yapılmadığını sınar

And Bir veya daha fazla değişkeni test olarak karşılaştırır Mantıksal
Or Bir işlemin devamı için hangi koşulun oluşması gerektiğini sınar
Not Bir ifadeyi negatif hale getirir
Xor Sadece bir koşulun doğru olup olmadığını sınar
Eqv İki değişkenin eşitliğini sınar
Imp İki ifadede mantıksal implikasyon işlemi yapar

Bu işlemcileri daha çok göreceğiz. O yüzden iyi tanımlayız. Yeri geldiğinde bu işlemcilerin işlevlerini daha iyi anlayacağız..

VBScript ile yazacağımız ASP sayfalarında bu işlemcilerin beklediğimiz sonucu verebilmesi için kullanım sıraları önemlidir.

Bundan sonra işimizin daha çok matematiksel yanları oldğunu göreceksiniz. Bu bize hayatımızın her alanında matemetiğin önemini anlatır. Anlayana:)

VBscript' de Operatörler işlem yapmamızı sağlayan değerlerdir diyebiliriz. Onlarla işlem yaparız, sonuç alırız. Bu işlmeleri değişkenlerle yaparız gibi. Bakalım neymiş bu operatörler. Neye benzerler?:

Operatör İşlevi Sınıfı

+ Toplama Aritmetik
- Çıkarma
* Çarpma
/ Bölme
^ Üssünü alma
\ Tamsayı bölme
Mod Modüler aritmetik

= Bir değişkenin diğerine eşit olduğunu sınar Karşılaştırma
<> Bir değişkenin diğerine eşit olmadığını sınar
>and< Bir değişkenin diğerinden büyük veya küçük olduğunu sınar (and kelimesi var)
>=and<= Bir değişkenin diğerinden büyük veya eşit, veya küçük veya eşit olduğunu sınar (and kelimesi var)
Is Bir ifadedeki iki referansın aynı Nesne'ye yapılıp yapılmadığını sınar

And Bir veya daha fazla değişkeni test olarak karşılaştırır Mantıksal
Or Bir işlemin devamı için hangi koşulun oluşması gerektiğini sınar
Not Bir ifadeyi negatif hale getirir
Xor Sadece bir koşulun doğru olup olmadığını sınar
Eqv İki değişkenin eşitliğini sınar
Imp İki ifadede mantıksal implikasyon işlemi yapar

Bu işlemcileri daha çok göreceğiz. O yüzden iyi tanımlayız. Yeri geldiğinde bu işlemcilerin işlevlerini daha iyi anlayacağız..

VBScript ile yazacağımız ASP sayfalarında bu işlemcilerin beklediğimiz sonucu verebilmesi için kullanım sıraları önemlidir.

dapHne
20-02-05, 00:17
If...Else

If İngilizce' de -eğer, -ise anlamına gelir. Yani biz burada If deyimini kısaca özetlemek istersek; If deyimini kullandığımzıda "eğer şu iş şöyle ise yap" demiş oluyoruz.. Else yani -başka deyimini kullandığımızda ise "şu iş şöyle değilse bunu yap" demiş oluyoruz.
Genel olarak yazım kuralı şöyledir:

If şart Then

şart doğru ise yapılacak işler

Else

Şart doğru değilse yapılacak işler

End If


End If ile If deyimimizin bittiğini söylüyoruz..
Bir örnek yapalım, If ... Else deyimimizi daha yakından tanıyalım.
Örnek olarak önce kafamızda ne yapmak istediğimizi tasarlayalım. Sayfamız eğer saat 12'den önce ise sayfaya Günaydın yazdırsın, saat 12 ' den sonra ise "Tünaydın yazdırsın.. Ama bir de şu var ki, saat 18' den sonra ise sayfaya İyi Akşamlar yazdırmamız lazım. Bunun için ne yaparız? Önce örneğimizi yapalım, daha sonra bu soruya cevap verelim. Bu sayfayı ifelse.asp adı ile kaydedin.

<html>
<head>
<title> If ve Else deyimi kullanımı</title>
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">
</head>
<body>
<h2>
<center>

<%
If Hour(Now) < 12 Then

Response.Write "Günaydın"

ElseIf Hour(Now) >= 18 Then

Response.Write "İyi Akşamlar"

Else

Response.Write "Tünaydın"

End If

Response.Write "<br>"

Response.Write "<br> "

Response.Write "Sitemize Hoşgeldiniz.."
%>

</center>
</h2>
</body>
</html>



Şimdi sayfayı açabilirsiniz. Sizin o andaki saat durumunuza göre sayfa Sabah 12' den önce ise Günaydın, 12 den büyük, 18' den küçükse Tünaydın diyecektir.Eğer saat 18' den büyükse İyi Akşamlar yazısını ekranda göreceğiz.

Buradaki kodları daha ayrıntılı ele aldığımızda; If deyiminin -eğer -ise anlamlarına geldiğini söylemiştik. If deyiminin karşısında Hour(Now) yani -şimdiki zaman- deyimini görüyoruz. Hour(Now) deyimi bize o andaki zamanı verir. Bir de küçüktür ( < ) işareti ve 12 sayısı görüyoruz.
Şu cümlede:

If Hour(Now) < 12 Then

"Eğer şimdiki zaman 12' den küçükse" demiş oluyoruz.
Bir alt satırda da daha öğrenmediğimiz Response nesnesinin .Write metodunu kullanıyoruz. (Nesneleri öğrenirken göreceğiz.)
Böylece cümle tamamlanıyor ve: "Eğer şimdiki zaman 12' den küçükse sayfaya Günaydın yazdır" demiş oluyoruz...

Bir alt satıra daha baktığımızda ise daha önce sözünü etmediğimiz ElseIf deyimini görüyoruz. Hatırlarsanız kodları yazmaya başlamadan önce "eğer saat 18' den büyükse bize İyi Akşamlar demeli" demiştik. If ile ilk şartımızı belirlediğimizi Else ile o şart gerçekleşmezse eğer yapılacak işi söylediğimizi belirtmiştik. ElseIf deyimi yeni bir If deyimi gibidir. Yazdığımız örneğe bakarak da bunu görebiliriz. ElseIf deyimini birden fazla kullanabiliriz..

Kodlamamızın en sonunda Else deyimi ile diğer iki şart gerçekleşmezse eğer yapılacak işleri yazıyoruz.

Ve If deyimimizi End If ile sonlandırıyoruz..

Yeni öğrendiğimiz bu dilin kapıları yavaş yavaş açılmaya başlıyor.. Bizlere o kapıları açacak anahtarları öğrenmek kalıyor... :)

dapHne
20-02-05, 00:21
Select İngilizce' de -seçme, -seçim anlamlarına gelir. Case ise durum anlamına gelir. Select Case ile (bildiğiniz:) ) Durum Seç anlamına geliyor.
(burada niyetim inglizce kursu vermek değil, ama daha iyi öğrenebilmek için bu deyimlerin anlamlarını bilsek daha iyi olur düşüncesindeyim!)
Select Case' in kullanımını şöyledir:

Durum Seç (Durumların listesi ve bunları belirten bir değişken)

Durum1 : Yapılacak İşler
Durum2 : Yapılacak İşler
Durum3 : Yapılacak İşler
Durum4 : Yapılacak İşler

Seçmeyi Bitir

Burada durum seç dediğimiz için, VBScript verdiğimiz durum listesine veya değişkene bakacaktır. Bu değişkenin her bir değerini bir "durum" sayacak ve ona hangisi uyuyorsa ona göre hareket edecektir.
Konuya daha derinlemesine bakarsak, Durum Seç ( yani Select Case) deyiminin yanına bir durum yazarız ya da durumu belirten bir değişken yazarız. Daha sonra bu durum için yapılacak işleri listeleriz. Bu kadar basit...
Yine bir örnek yapalım ve durum seçme olayına daha yakından bakalım. Bu sayfayı durumsec.asp adı ile kaydedin:

<html>
<head>
<title> Durum Seçme </title>
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">
</head>
<body>
<h2>
<center>

<%
Select Case Hour(Now)

Case 0,1,2,3,4,5,6,7,8,9,10,11

Response.Write "Günaydın"

Case 12,13,14,15,16,17

Response.Write "Tünaydın"

Case Else

Response.Write "İyi Akşamlar"

End Select

Response.Write "<br>"

Response.Write "Sitemize Hoşgeldiniz"
%>

</center>
</h2>
</body>
</html>



Bu sayfada, daha önce gördüğümüz Şimdiki Saat anlamına gelen Hour(Now) fonksiyonunu görüyoruz. Daha öncede söylediğimiz gibi Hour(Now) VBScript'in hazır fonksiyonlarındandır. Biz burada durum olarak Şimdiki Saat seçeneğini kullandık. İlk seçimimizde saat 0,1,2,3,4,5,6,7,8,9,10,11 ise sayfaya "Günaydın" yazdır dedik. İkinci seçimimizde ise 12' den 17' ye kadar olan sayıları yazdık ve saat bunlardan biri ise sayfaya "Tünaydın" yazdır dedik. Case Else ile diğer seçimler olmazsa eğer sayfaya "İyi akşamlar" yazdır demiş olduk. End Select ile de seçme işlemini bitirdik.

Böylece Select Case yani Durum seçme olayını da öğrendik..
Küçük bir hatırlatma, bu ve bunun gibi örnekleri ne kadar çok yazarsanız o kadar çok akılda kalıcı olurlar..

dapHne
20-02-05, 00:23
Şimdi Mantıksal Operatörler' den NOT, OR, AND' i öğreneceğiz. Bu üçünün farklı işlevleri var. Program akşını kontrol etmemize yararlar.. Çok akıllıdırlar!

NOT

' Not ' olumsuzluk anlamına gelir. Program akışını denetlerken bunu kullandığımızda ise olumsuzlukları ele alırız. Genel kullanımı şöyledir:

If Not a=3 Then

.....

End If

Burada Not deyimini program akışını kontrol eden If deyimi ile kullandık.
Demek istediğimiz, "eğer a ' nın değeri 3 değilse şu işi yap".
Not ile program akışı denetlerken, olumsuzlukları hesaplıyoruz.

OR

Or ise program akışı denetiminde şartları birleştirmeye yarıyor. Bir örnek vermek gerekirse:

If a=5 OR a=3 Then

.....

End If


Burada demek istediğimiz; a' nın değeri 5 ve 3 ise işlemi yap. Yani burada Or program akış denetimindeki şartları birleştirmeye yarıyor. İkisinin de gerçekleşmesi gerekli değil. Sadece 5 olsa da program akışa devam edecektir.

AND

And' de Or gibi şartları birleştirmeye yarıyor. Ama şartlardan mutlaka ikisinin de gerçekleşmesi gerekiyor. Mesela:

If a=5 And b=3 Then

......

End If


Yine burada demek istediğimiz; eğer a' nın değeri 5 ise ve b' nin değeri 3 ise işlemi yap. Şartlardan ikisininde mutlaka gerçekleşmesi gerekiyor. Yoksa program çalışmıyor.

Burada Mantıksal Operatörler' den Not, Or ve And' i gördük.
Bunlar program akışını denelerken bize yardımcı olurlar. İleride Veritabanı uygulamalarında da bunları sık sık kullanacağız...

dapHne
20-02-05, 00:26
Döngüler

ASP sayfalarımızda önceki derslerde öğrendiğimiz If..Else gibi sınama elemanları nasıl gerekliyse döngüler de o kadar gereklidir.
Döngü adı üzerinde dönen bir değeri temsil eder. Değeri durdurmazsak eğer sonsuza kadar döner ve buna Endless Loop (Sonsuz Döngü) denir. Şimdiki konumuz For..Next döngüsü.

Programın bir işi belirli kere yapmasını istiyorsak, ona yapacağı işi sayaç ile birlikte For döngüsü ile bildirmeliyiz:

For sayac = baslangıc To son Step adım

Yapılacak İşler

Next

Burada sayac değeri yerine istediğiniz bir adı yazabilirsiniz. baslangıc yerine sayacın başlamasını istediğiniz sayıyı, son yerine sayacın durmasını istediğiniz sayıyı, adım yerine de sayacın kaçar kaçar artmasını istediğinizi yazabilirsiniz.Sondaki Next deyimi ise döngünün bir sonraki adıma geçmesini sağlar. Burada bir de Step kelimesi varsa, karşısındaki değer kadar arttırılır ve yapılacak işler tekrarlanır.
Bir örnek yapalım ve dögü olayına daha derinlemesine bakalım. Bu sayfasyı dongu1.asp adı ile kaydedin:

<html>
<head>
<title> ASP' de Döngüler </title>
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">
</head>
<body>
<h2>
<center>

<%
Dim isimler

isimler = Array("Hasan" , "Ayşe" , "Emrah" , "Fatma" , "Barış", "Buse", "Selim")

For sayac = 0 to 6

Response.Write isimler(sayac)

Response.Write "br"

Next
%>

</center>
</h2>
</body>
</html>


Şimdi bu sayfanın kodlamasına daha yakından bakalım.
Bilindik HTML kodları ile başlıyor sayfamız. BODY bölümünden sonra asp kodlarımızı yazıyoruz.
isimler isimli değişkenimizi tanımlıyoruz. isimler = Array bölümünde ise bunun bir dizi değişken olduğunu görüyoruz. Yani içinde bir çok ismi, kelimeyi ya da sayıyı barındırabilecek. Biz burada 7 tane isim yazdık. Sonra da döngümüzü başlattık: For sayac = 0 to 6. İsimleri 0' dan 6' ya kadar olanı dedik. Burada sayac isimli bir sayacımız var. Bu bir değişken değil. O yüzde tanımlamadık. Kafanız karışmasın.. Alt satırda da bu 0' dan 6' ya kadar olan isimleri sayfaya yazdır dedik= " Response.Write". Next ile döngünün durmasını değil, devam etmesini istiyoruz.

For sayac = 0 to 6 deyiminde 6 yerinde 5 ya da 4 yazıp tekrar terar deneyin. 5 yazdığınızda 6 isim yazılacaktır sayfaya. Çünkü VBScript (bunu daha sonrada göreceğiz) saymaya 0' dan başlar. Buna şimdiden alışmamız gerektiğini düşünüyorum.

Burada For..Next döngüsünü öğrendik ve döngüler daha bitmedi..

dapHne
25-05-05, 12:46
Döngüler daha bitmedi demiştim.Şimdiki konumuz Do..Loop döngüsü.
Do İngilizce'de -yapmak anlamına gelir. Bizde burada Do yani şu işi yap! diyeceğiz.
Ama bu işi yaptırmanın iki yolu olabilir, bir dizi komutu, bir koşul doğru iken veya doğru oluncaya kadar kadar yaptırabiliriz.
Bir koşul doğru ikenbazı işlerin biteviye (yani bitmeden) yapılmasını istiyorsak Do ile birlikte While yöntemini kullanırız. Genel olarak yazım kuralı şöyledir:

Do While koşul

koşul doğru iken yapılacak işler

loop


Do While ' ın karşısına koşulu bir alt satıra da koşul doğru ise yani koşul gerçekleşebilecek durumda ise yapılacak işleri yazıyoruz. Loop ile yapılacak işleri tekrarlıyoruz.

Bir örnek yapalım ve Do While olayına daha yakından bakalım. Ama önce bu örneğimizin içeriği hakkında biraz bilgi vermek istiyorum. Örneğimizde bir isim olsun ve onu sayfaya 3 kez yazdırana kadar döngümüz dönmeye devam etsin. Bu sayfayı dongu2.asp adı ile kaydedin:

dapHne
25-05-05, 12:47
<html>
<head>
<title>ASP' de Döngüler </title>
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9" >
<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">
</head>
<body>
<h2>

<%
Dim Donen, Seren, Esra, Gelen

Randomize
Seren = 0
Esra = 0
Gelen = 0
Do While Seren < 3

Gelen = Gelen +1
Donen = Int(Rnd *2) +1
If Donen = 1 Then
%>

<p> Esra! </p>

<%
Esra = Esra +1
Else
%>

<p> Seren </p>

<%
Seren = Seren +1
End If
Loop
%>

Sayfaya 3 kere Seren yazdırmamız için isimleri <%= Gelen %> kez döndürmemiz gerekti!

</h2>
</body>
</html>

dapHne
25-05-05, 12:48
Bu sefer uzunca bir kodlama yaptık. Kodları incelemeye geçmeden önce bu sayfayı kaydedin ve çalıştırın. Bir kaç kez sayfanın yenile düğmesine basın. Her seferinde isimler sayfaya farklı sayılarda yazılacaktır ve isimlerin altında 3 kez Seren yazılabilmesi için kaç kez dönülmesi gerektiği yazacaktır. Şimdi kodlalarımıza daha yakında bakalım. Çünkü bizi en çok ilgilendiren konu onlar.

Önce değişkenlerimizi tanımlıyoruz. 4 tane değişkenimiz var. Burada değişken adları önemli değil. Değişkenlere istediğiniz ismi verebilirsiniz (cicek, bocek vs.). Ama türkçe karakter kullanmamaya dikkat edin! Değişkenler tanımlandı.. O da ne? Randomize diye bir şey yazmışız. Nedir bu Randomize?

dapHne
25-05-05, 12:50
Randomize = Tesadüfi Sayı nedir?

Randomize Tesadüfi Sayı anlamına gelir. Yani sayfamızın yenile düğmesine bastığımızda isimlerin hep değişik sayıda dönmesinin sebebi buydu. Randomize tek başına işe yaramaz. Randomize tesadüfi sayıyı üretir. Ama onu bize veren Rnd komutudur. Rdn komutunun bize verdiği sayılar tamsayı değildir! Bunları tam sayı yapmak için Int komutunu kullanırız.



Randomize ' nin ne olduğunu öğrendikten sonra kodları incelemeye devam edelim.
Randomize satırının altında Do While döngümüzü görüyoruz. Do While Seren < 3 demişiz. Yani Seren değişkeni sayfada 3' ten küçükse işlem gerçekleşmiş olacak. 3 ' ten büyük olmayacak. İşlemcileri hatırlayın!
Şu satıra bakalım:

Donen = Int(Rnd *2) +1

Donen değişkenimizin karşına Int(Rnd... yazmışız.Yani Randomize ile gelen sayıyı Rnd ile göster bunu Int ile tamsayıya çevir demiş oluyoruz.

Bir If deyimimiz var. Bu olayların akışını düzene sokmak için gerekli.
Sayfaya Esra yazdırdıktan sonra Esra = Esra +1 komutu ile bir arttırıyoruz. Daha sonra da Seren isimli değişkenimizi 1 arttırıyoruz. End If ile If deyimini sonlandırırken, Loop ile sayfaya 3 kez Seren yazılana dek döngümüzü döndürmeye devam ediyoruz. Kaç kez döndüğünü bize söylemesi için Gelen isimli değişkeni sayfaya yazdırıyoruz: <%= Gelen %>.

Burada Do While..Loop döngüsünü öğrendik. Dögüler ileride çok işimize yaracaklar. Gerçek hayatta bize arkadaş olmayacaklar, ama web uygulamalarımızda önemli bir yer tutacaklar.

dapHne
25-05-05, 12:52
Konumuz Fonksiyonlar.. VBScript'in bizim için hazırladığı Hazır Fonksiyonlardan söz edeceğiz..
Bir önceki dersimizde sözünü ettiğimiz Int() ve Rnd() fonksiyonlarını hatırlayın. Rnd() tesadüfi bir sayı üretir, Int() ise o sayıyı tam sayıya çevirir demiştik.
VBScript' te kullanılmaya hazır bir çok fonksiyon vardır. Bunlardan kısaca söz edelim:




Tarih ve Saat

Tarih ve zaman bilgisini bize verir:

Date: Bugünün tarihini verir.
Time: O andaki saati verir.
Now: O andaki tarih ve saati birlikte verir.

Daha önceki derslerimizdeki örneklerden de hatırlarsınız bu fonksiyonları.
VBScript'in bunlara ek olarak haftanın gününü bize söyleyen Weekday, haftanın gününün adını söyleyen WeekdayName ve ay adını bize söyleyen Montname fonksiyonları da vardır.

Örneğin:
<%= Weekdayname(WeekdayDate))%> bize o günün adını verir. Mesela o gün Pazar ise Pazar değerini verir.

dapHne
25-05-05, 12:54
Karakter Dizisi Düzenlemeye Yarayan Fonksiyonlar

Karakter dizisi veya String, VBScript için "Bugün gün güzel bir gün" bir string'dir. Web sitemizi ziyaret eden ve eğer varsa formalarımıza yazacağı ve gönder düğmesine basarak server'a göndereceği bilgiler de String' dir. İleri dersler göreceğiz, formdan gelen bilgileri düzenleme ihtiyacı hissettiğimizi. Bunun için VBScript' in karakter dizisi düzenleme fonksiyonları kullanacağız. Peki nedir bu fonksiyonlar. Şöyle bir bakalım:

InStr: Uzun bir String'in içinde vereceğimiz daha kısa bir String'in bulunup bulunmadığını arar, bulursa bu kısa string'in başlama noktasının değerini verir.

Len: Bir String'in uzunluğunu belirler. Mesela, Soz isimli bir değişkenimiz var, bunun değeri de "Neşeli ol ki genç kalasın" olsun. Uzunluğunu şöyle belirleyebiliriz:

Uzunluk = Len(Soz)

Uzunluk değişkeninin değeri sizce kaç olur? Cevap 25

UCase: Vereceğiniz bir String'in bütün harflerini büyük harfe çevirir. Biraz önceki Soz değişkenimize bunu uygularsak:

Yeni = UCase(Soz)

Yeni ' nin değeri: NEŞELİ OL Kİ GENÇ KALASIN olur...

LCase: Vereceğiniz bir String'in bütün harflerini küçük harfe çevirir. Yine Soz isimli değişkenimize bunu uyguladığımızda:

Yeni = LCase(Soz)

Yeni'nin değeri bu sefer: neşeli ol ki genç kalasın olacaktır.

dapHne
25-05-05, 12:54
LTrim, RTrim, Trim: Verdiğiniz String'in (sırasıyla) hem başındaki hem de sonundaki boşlukları temizler. Böylece gereksiz boşluklar ortadan kalkmış olur.

Space: İçinde vereceğiniz sayı kadar boşluk olan bir String oluşturur. Mesela:

Bosluk = Space(20)

Bosluk değişkeninin değeri 20 boşluk olacaktır.

String: İstediğiniz sayıda ve istediğiniz karakterde bir String oluşturur.

Yeni = String(3, "?")

Yeni'nin değeri, 3 tane ??? olacaktır.

Left, Right: Bir String'in içinde soldan (baştan) veya sağdan (sondan) verdiğimiz sayı kadar olan karakterleri verir. Mesela Soz değişkenimizin içindeki cümleyi kullanırsak:

Soldan = Left(Soz, 6)

Soldan değişkeninin değeri "Neşeli" olacaktır. Çünkü Neşeli Soz değişkeninin ilk altı harfinden oluşuyor.

Mid: Bir String'in içinde başlangıç noktasını ve karakter olarak boyunu verdiğimiz alanda yer alan String'i verir. Örneğin:

Ortadan = Mid(Soz, 1,6)

Ortadan değişkenimizin değeri Neşeli olacaktır. Çünkü Mid birinci harften itibaren 6 harf ' i sayfaya yazdırıyor. Neden? Biz öyle istedikte ondan.. Siz de istediğiniz bir sayıyı yazarak bu örneği deneyebilirsiniz..



Bu hazır fonksiyonlar ileride ASP sayfalarımızı yazarken çok işimize yarayacaklar.. Bu yüzden onları iyi tanımalısınız.

saderekoy
24-10-05, 17:19
daphe yaa şu ıss pws kurulumunu tekrardan anlatabilirmisin.Ben Xp kullanıyorum.Denetim masasına girince ağ tıkla tanımla fln nerde onlar.Lütfen yardım et ACill ((:

UnFaitHfuLL
27-08-06, 15:15
xp'de ISS kurulumu yapması son derece basittir

- windows xp cd nizi sürücünüze takın
- gelen ekranda "isteğe bağlı windows bileşeni kur" seçeneğini tıklayın
- sonra açılan pencerede ISS yazısının önündeki kutucuğu işaretleyin
- ekle kaldır butonuna tıklayın

ve işte xp sistemimize ISS kuruldu
Not : xpde asp çalışabilmek için dosyalara yazma izni vermeyi unutmayınız yoksa yazdığınız scriptler çalışmaz ;)

onur_kanh
11-05-07, 21:54
Tşekkür ederiz...

hmnty
26-06-07, 14:52
hocam verdiğin bilgiler çok yararlı ancak bi sorum olacak asp'yi ftp'de çalıştırabilirmiyiz?teşşekkürler

dapHne
27-06-07, 02:44
bu aldığın host hizmetine bağlı. desteği varsa çalışır.

dapHne
14-08-07, 21:38
evet. asp derslerine kaldığımız noktadan devam edelim. bu kadar ara yeterli :)

dapHne
14-08-07, 21:47
Masa, nesnedir. kalem nesnedir. Her nesnenin özellikleri vardır. Masa serttir. Su, içine konulduğu nesnenin biçimi alır.


ASP tekniğinde de amacımız nesnelerin özelliklerini kullanarak, ya bu özellikleri belirlemek, ya da değiştirmektir. Nesne Yönelimli Programlama (Object Oriented Programming, OOP) kavramını daha önce çok duymuş olmalısınız. Bir önceki bölümde fonksiyonlarla, Sub’larla, değişkenlerle tanıştık. Diyelim ki öğretmensiniz (ah, nerede o günler!) ve ASP programınızda her öğrencinin notunu veritabanına işleyen, veritabanından notları alarak geçeni-kalanı belirleyen veya öğrencilerle ilgili daha yapılması gereken bir çok işi yapan fonksiyonlarınız ve Sub’larınız var; bunların kullandığı bir çok değişkeniniz var: demek ki sizin ASP programınızda “öğrenci” diye bir nesneniz var. Ve siz bu nesneye yönelimli program yapmışsınız!


Her “program nesnesi” iki unsura sahiptir:


Özellik (Property, Attribute): Bir nesnenin özellikleri, onun değişkenleridir. “Öğrenci” nesnesinin “Öğrencinin Adı,” “Notları,” “Adresi” gibi değişkenleri, yani özellikleri vardır.


Metod (Method): Bir nesnenin işlemesi, çalışması için, kısaca kendisinden bekleneni yerine getirebilmesi için çalışma yöntemlerine ihtiyacı vardır. Dolayısıyla bir ASP nesnesinin fonksiyonları, onun metodlarıdır.


Fakat ASP’de nesneler sadece sizin öbekler halinde toplayacağınız fonksiyonlar ve değişkenlerden ibaret değildir. Bir kere, ASP programında kullandığınız Script dilinin getirdiği nesneler vardır. ASP sayfasını Javascript ile yazarsanız başka, VBScript ile yazarsanız başka dil nesnelerine sahip olursunuz; ancak her ikisinde de ortak olan “Scripting” nesneleri vardır. Bunlara birazdan ayrıntılı ele alacağız. Sonra Web Server’ın size hazır sunduğu nesneler vardır. Bunları daha sonraki bölümde göreceğiz. Ve tabiî, Browser’ın bir HTML sayfasının bölümlerini nesne sayarak oluşturduğu nesneler vardır. Bunlara da diğer nesneleri ele alırken sırası geldikçe değineceğiz. (Tabiî bir de ASP programınızı Javascript ile yazarsanız, VBScript’ten farklı olarak kendisi nesne-yönelimli bir dil olan Javascript’in oluşturmanıza imkan vereceği nesneler vardır. Fakat bu nesneler, bu kitapçığın kapsamı dışında kalıyor.)


Nesneler nasıl oluşmuş olursa olsunlar, daima size bir değer verirler:


Nesne.Özellik = Değer


Bir nesnenin bir özelliğinin değeri, bizim için bir değişken değeri gibi önem taşır:


If Nesne.Özellik > Değer Then ...


Nesnelerin özelliklerinin değerlerini değişkenlere atayabiliriz; ancak bunu yaparken Nesne’nin bir metoduna (fonksiyonu) göndermede bulunmamız ve gerekiyorsa bu fonksiyona kullanması için veri göndermeliyiz (bir fonksiyona kullanması için gönderilen değere argüman/argument denir):


Degisken = Nesne.Metod(argüman1, argüman2...)


Daha sonra bu değişkeni istediğimiz yerde kullanırız. Bu kadar teoriden sonra bir örnek nesne oluşturursak, belki işin içinden daha kolay çıkabiliriz.


Nesneler, diğer yararlarının yanı sıra, birbiri ile ilgili Sub’larımızı, fonksiyonlarımızı ve değişkenlerimizi birarada tutmamızı sağlar. Şimdi VBScript ile bir nesne oluşturabiliriz:


<%


Class Ogrenci


Public Adi, Soyadi, No


Function AdiSoyadi


AdiSoyadi = Adi & “ “ & Soyadi


End Function


End Class


%>


Bir dakika! Nesne (object) adını verdik fakat Class (sınıf) oluşturduk! Bu grubun Object..End Object olması gerekmiyor mu? Belki haklısınız; ama bir “sınıf” ancak VBScript tarafından kullanılmaya başlanırsa Nesne olur. Dolayısıyla biz “sınıf” yazarız; VBScript onu Nesne haline getirir. Peki, nesneyi oluşturduk; şimdi bunu nasıl kullanacağız. Çok kolay; önce bu nesneden yeni bir olgu (instance) oluşturacağız; sonra.. Ama önce bunu nasıl yapacağımızı yazalım:


<%


Dim Ogr1


Set Ogr1 = New Ogrenci


Ogr1.Adi = “Necip”


Ogr1.Soyadi = “Fazıl”


Ogr1.No = “181”





Response.Write Ogr1.AdiSoyadi


%>


Her nesne, New (yeni) komutu ile yeni bir değişkene bütün özelliklerini verir. Burada Ogr1 değişkeni, yukarıda oluşturduğumuz Ogrenci nesnesinin bütün özelliklerini kazanmış oluyor. Ogrenci nesnesinin “.Adi”, “.Soyadi” ve “.No” özellikleri olması gerekir; nitekim Ogr1’e bu özelliklerini burada veriyoruz. Ogrenci nesnesinin bir de metodu (fonksiyonu) var; Ogr1 bunu da kazanabilir mi? Tabiî; hem kazanır, hem de bunu ziyaretçinin Browser penceresine yazdırabilir.


Nesne kavramını kavramak zordur. Fakat yukarıdaki örnekte görüldüğü gibi, ASP sayfalarınızda nesne oluşturarak çalışmaya alıştığınız zaman bunun sağladığı kolaylıktan kolayca vazgeçmeyeceksiniz.

dapHne
14-08-07, 21:50
Hangi dille olursa olsun program yazarken hata yapmak kaçınılmaz bir kuraldır. Dolayısıyla kullandığınız programlama dili hatalarınızı kolayca yakalamanıza imkan vermelidir.


ASP programlarınızda yazım yanlışlığı, olmayan değişkene gönderme gibi Script hatası olmaması gerekir. Bu tür hatalar, program Web’e gönderilmeden mutlaka ayıklanmalıdır. Fakat programcı olarak öngöremeyeceğiniz, ve çoğu Web ziyaretçisinden veya ziyaretçinin bilgisayarından kaynaklanan hata durumları olabilir. VBScript, şu standart komutla beklenmedik hata durumlarında programın yoluna devam etmesini sağlayabilir:


<% On Error Resume Next %>


Bu komutla VBScript’e, hata halinde bir sonraki satırdan yoluna devam edecektir. Fakat oluşan hata, programın daha sonra vermesi beklenen sonucu vermesini önleyebilir. VBScript, Err (Hata) Nesnesi’nin bir çok özelliğinden özellikle hata sayısı (Number), tanımı (Description) ve kaynak (Source) özellikleri ile size hatanın ne olduğunu ve nereden kaynaklandığını söyleyebilir. Bu özellikleri kullanarak, programlarınızda, en azından geliştirme aşamasında, örneğin,


If Err:Number = xx Then


şeklinde bir ifade ile hatanın türüne göre programın kazasız yürümesini sağlayabilirsiniz. Burada xx yerine 108 ayrı hata numarası yapabilirsiniz. Hata numaraları, Microsoft’un VBScript sitesinden edinilebilir.





Nesneler hakkında aşağı yukarı bir fikir edindiğimize göre, şimdi kullanılmaya hazır Nesne’lerden başlayarak, VBScript kullanırken, ASP sayfalarımızda yararlanabileceğimiz Nesne’leri ele alabiliriz.

dapHne
14-08-07, 21:51
Dosya Sistemi Nesnesi (FileSystemObject), ASP programının, Web Sunucusunun sabit disk sisteminde, sürücüleri, klasörleri ve dosyaları yönetmekte kullanacağımız temel araçtır. Burada, ne denli güçlü bir araçtan söz ettiğimizi hemen görebilmek için şu kodu yazalım ve dosya_yaz.asp adıyla kaydedelim:


<% Option Explicit %>


<HTML>


<HEAD>


<TITLE>ASP ILE DOSYA YAZMA</TITLE>


<META Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">


<META Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">


</HEAD>


<BODY>


<%


Dim YaziFSO, yaz


Set YaziFSO = CreateObject("Scripting.FileSystemObject")


Set yaz = YaziFSO.CreateTextFile("c:yazi_deneme.txt",True)


yaz.WriteLine("Bu bir denemedir.")


yaz.Close


%>


<H2><CENTER>Bu Web sayfası sabit diske yazı yazdırır!!


<BR>Şimdi C: sürücüsünde yazi_deneme.txt adlı bir dosya olması gerekir!


<BR>Lütfen bakar mısınız?</H2></CENTER>


</BODY>


</HTML>


Kodumuzun Dim satırında iki değişken belirlediğimizi görüyorsunuz. Fakat bu iki değişkeni sistem nesnesi olan Scripting’in yeni bir olgusu olarak kullanacağımız için daha önce standart değişkenlere değer atadığımız gibi değil, fakat Set komutundan yararlanıyoruz, ve YaziFSO değişkeninde bir “Scripting.FileSystemObject” nesnesi oluşturulmasını sağlıyoruz. (ASP uzmanları arasında gelenek, nesne değeri tutan değişkenlere, ilgili nesnenin baş harflerini eklemektir. Böylece bir değişkenin adına bakarak, işlevini anlamak mümkün olur.)


“yaz” değişkeni YaziFSO’da yeni bir olgusunu oluşturduğumuz FileSystemObject’in CreateTextFile (Düzyazı dosyası oluştur) metodunu kullanıyoruz; bu metod oluşturulacak dosyanın adını ve eğer bu dosya varsa üzerine yazılmasına izin veren True (doğru) veya buna izin vermeyen False (yanlış) kelimesini argüman olarak alır. “yaz” değişkeni şimdi kendisi bir metod kullanabilecek şekilde, FileSystemObject’in bir örneğidir; nitekim WriteLine metodu ile biraz önce oluşturulan dosyaya, argüman olarak verdiğimiz metni yazdırmaktadır. Bu kodu çalıştırdıktan sonra, sabit diskinize bakarsanız, düzyazı dosyasını göreceksiniz:


Bugüne kadar Web tekniği olarak Browser’da bir sayfayı görüntüleyebileceğimizi sanıyor idiysek, sistem nesneleri kullanarak çok daha farklı şeyler yapabileceğimizi görmüş olduk. Şimdi FileSystemObject’i daha yakından tanıyabiliriz.


Bu nesne bize sabit diske erişme ve onun kaynaklarını kullanma imkanı verir. Bütün nesneler gibi kullanılabilmesi için önce bir değişkenin bünyesinde oluşturulması gerekir:


<%


Dim DosyaSistemi


Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)


%>


Dosya Sistemi Nesnesi’nin 20’den fazla metodu vardır; fakat bunlardan önemlileri şöyle sıralanabilir:


CopyFile (dosya kopyala), MoveFile (Dosya taşı), CopyFolder (klasör kopyala), MoveFolder (klasör taşı), Create Folder (klasör oluştur), DeleteFile (dosya sil), DeleteFolder (klasör sil).


Şimdi bunlardan birinin nasıl kullanılabileceğine bir örnek verelim:


<%


Dim DosyaSistemi


Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)


DosyaSistemi.DeleteFile “c:belgelerimtest.*”


%>


Bu program ile “Belgelerim” klasöründeki “test” isimli bütün dosyaları silmiş olursunuz. (Bu programı çalıştırmadan önce bir kaç kez düşünmeniz, sanırım iyi olur; çünkü ASP yoluyla sildiğiniz dosyalar, Geri Dönüşüm Kutusu’na gitmez!) Daha az zararlı bir diğer örnek ise şöyle olabilir:


<%


Dim DosyaSistemi


Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)


DosyaSistemi.CopyFile “c:belgelerim*.*”, “c:yedekler”


%>


Bu program “Belgelerim” dizinindeki bütün dosyaları “Yedekler” dizinine kopyalar.


FileSystemObject’in sadece bir özelliği (Property) vardır: Drives (sürücüler). Fakat bu özellik, bir değil bir çok elemandan oluşan bir dizi-değişken gibi Kolleksiyon (Collection) sayılır. Nede? Çünkü bir Web Server’da birden çok sürücü bulunur. Her sürücü, bu kolleksiyonun üyesidir (FileSystem.Drives) ve her birinin sürücü harfi (.DriveLetter), disk adı (.VolumeName), byte olarak boş alanı (.FreeSpace) özellikleri vardır. suruculer.asp adıyla kaydedeceğiniz şu program, denediğiniz sistemin disk-disket-CD-ROM durumunu size listeleyecektir.


<% Option Explicit %>


<HTML>


<HEAD>


<TITLE>ASP ILE SÜRÜCÜ KOLLEKSİYONU</TITLE>


<META Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">


<META Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">


</HEAD>


<BODY>


<%


Dim DosyaSistemi, Surucu, Suruculer


Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")


Set Suruculer = DosyaSistemi.Drives


For Each Surucu In Suruculer


%>


<b>Sürücü:</b> <%=Surucu.DriveLetter%><br>


<% If Surucu.IsReady = True Then%>


<b>Disk Adı:</b> <%=Surucu.VolumeName%><br>


<b>Boş alan:</b> <%=Surucu.FreeSpace%><br>


<% Else %>


<i>Sürücü hazır değil!</i><br>


<% End If


Next %>


</BODY>


</HTML>


Burada özelliklerini ve metodlarını DosyaSistemi adlı değişkene atadığımız Dosya suistemi Nesnesi’nin sürücüler kolleksiyonunun dizi-değişken gibi olduğunu söylemiştik. For..Next akış kontrolü ile bu kolleksiyonun bütün üyelerinin sırayla sürücü harfi, ve hazırsa disk adı ve boş alanı bilgilerini alıyoruz. Drives kolleksiyonunun diğer özellikleri arasında toplam yüzey genişliği (TotalSize), sürücü türü (DriveType; 0=bilinmiyor; 1=çıkartılabilir; 2=sabit; 3=ağ; 4=CD-ROM; 5= RAM-Drive), ve dosya sistemi (FileSystem; FAT, NTFS, CDFS), kök dizin (RootFolder) vardır.





VBScript açısından, her sürücüde klasörler (Folders) ve onların içinde alt-klasör (Subfolders) ve dosya (Files) kolleksiyonları bulunur. (Her klasörün içinde içinde bir alt-klasör nesnesi bulunduğu için ASP ile sonsuza kadar bütün klasörlere gönderme yapabilirsiniz. Klasör nesnesinin bazı özellikleri şunlardır:


Adı (Name), oluşturulma (DateCreated), erişim (DateLastAccessed), değiştirme (DateLastModified) tarihleri, içindeki dosyalar ve alt-klasörlerdeki dosyalarla birlikte boyutu (Size), bulunduğu sürücü (Drive), içinde bulunduğu klasör (ParentFolder), alt-klasörler (SubFolders), kök dizin olup olmadığı (IsRoot).


Klasör nesnesinin kopyala (Copy), sil (Delete) ve Taşı (Move) metodları vardır.


Dosya (File) nesnesinin de ad, oluşturma, erişim, değiştirme, boyut, sürücü ve içinde bulunduğu sürücü özellikleri, ve kopyala, sil, taşı metodları vardır.


PWS’ınızın bulunduğu sistemde, söz gelisi C: sürücüsünün kök dizinindeki bütün dosyaların listesini size veren bir kod şöyle yazılabilir (dosyalar.asp):


<% Option Explicit %>


<HTML>


<HEAD>


<TITLE>ASP ILE KLASOR - DOSYA KOLLEKSİYONU</TITLE>


<META Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">


<META Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">


</HEAD>


<BODY>


<%


Dim DosyaSistemi, Surucu, Dosya, KokDizin, KokDosyalar, DosyaNesnesi


Dim SurucuHarfi


SurucuHarfi = "C:"


Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")


Set Surucu = DosyaSistemi.GetDrive(SurucuHarfi)


Set KokDizin = Surucu.RootFolder


Set KokDosyalar = KokDizin.Files


For Each DosyaNesnesi In KokDosyalar


%>


<%=DosyaNesnesi.Name%><br>


<% Next %>


</BODY>


</HTML>


Burada SurucuHarfi değişkenin değerini değistirerek, arzu ettiğiniz disk/disket veya CD-ROMa ulaşabilirsiniz. GetDrive metodu dikkatinizi çekmiş olmalı; bu metodla, VBScript, fiilen disk/disket sistemine erişir.

dapHne
14-08-07, 21:54
Dosya sistemi nesnesi bize disk sistemine, klasörlere ve dosyalara erişme imkanı verir ama yeni dosyaları oluşturmak veya mevcutlara ek yapmak için yeterli özellik ve metoddan yoksundur. Bunu TextSream nesnesi sağlar.


Bilgisayar işletim sistemlerinin anası, Unix’e aşina iseniz, klavyeden sabit diske kadar bir bilgisayara girdi akımı bulunduğunu, bunlardan birinin de metinler olduğunu hatırlayacaksınız (Aşina değilseniz, şimdi oldunuz!). Bir işletim sistemi, metin dosyalarını okurken, yazarken bir metin akışı olur; TextStream nesnesinin adı da bunu anlatıyor: Metin Akımı. Web Server ve dolayısıyla ASP açısından sabit diske bir metin yazarken, veya sabit diskten bir metin okurken, bir metin akışı nesnesi oluşur. Bu nesnenin özellikleri ve metodlarını kullanarak, örneğin ziyaretçilerin sitemize bırakacakları form bilgilerini Web Server’ın sabit diskine yazdırabiliriz. Veya mevcut metinleri okuyabilir ve bunların içeriğini ziyaretçimize göndereceğimiz HTML sayfanın etiketlerinin içeriği olarak kullanabiliriz. Metin dosyası okumak ve yazmak disk sistemini ilgilendiren bir eylem olduğu için yine Scripting nesnelerinden FileSystemObject nesnesinden yararlanacağız; fakat bu kez değişik metodlar kullanacağız.

Metin Dosyası Oluşturma (CreateTextFile)



Aslında biraz önce, ASP nesnelerinin neler yapabileceğine örnek olarak yazıp dosya_yaz.asp adıyla kaydettiğimiz program, bir metin dosyasını yazdırma işlemiydi. Oradaki kodlara yeniden göz atarsanız, CreateTextFile (metin dosyası oluştur) metodunu yardıma çağırıyor ve bu metoda argüman olarak yeni metin dosyasının yolunu ve adını veriyorduk. Bu metod TextStream nesnesinindir; ve otomatik olarak bu nesnenin diğer metodlarını kullanmamızı sağlar. kullandığımız metodlar ise WriteLine (satır yaz: bir String’i sonuna yeni satır karakteri koyarak dosyaya yazar) ve Close (kapat: açılan metin dosyasını kapatır).


TextStream’in burada kullandığımız ikisinin dışında iki metodu daha vardır:


Write (yaz): Bir String’i dosyaya yazdırır; satır sonuna yeni batır karakteri (Return kodu) koymaz.


WriteBlankLines (boş satır yaz): Bir metin dosyasına argüman olarak vereceğiniz sayıda boş satır yazdırır.


Varolan Metin Dosyasına Ek Yapma (OpenTextFile)



Metin yazdırma işlerinde sık sık uygulayacağımız bir senaryo, mevcut bir metin dosyasına ek yapmak olacaktır. Örneğin bütün ziyaretçilerimizin sitemizdeki konuk defterine yazdıklarını, bir metin dosyasında toplamak isteyebiliriz.


Bunu OpenTextFile metodu ile yapacağız. Bu metod, tahmin edeceğiniz gibi, açılacak dosyanın yolunu ve adını isteyecektir. Örneğin, dosya_yaz.asp’nin ilgili satırı şöyle olacak:


Set yaz = YaziFSO.OpenTextFile("c:yazi_deneme.txt",8,0)


Burada dosya yolunu ve adını veren birinci argümana ek olarak iki yeni argüman görüyorsunuz: “8,0” şeklinde. Bunlardan birinicisi girdi/çıktı durumu (I/O Mode), ikincisi ise biçim (Format) ile ilgilidir. I/O Mode parametreleri şunlardır:


1: okumak için aç


8: eklemek için aç


Açılacak dosyanın biçimini belirttiğimiz son argüman ise şu değerlerden birini alabilir:


0: ASCII dosyası olarak aç


-1: Unicode dosyası olarak aç (Örneğin içinde Türkçe karakterler varsa)


-2: Sistemin varsayılan dosya türü olarak aç


Buna göre, bir dosyayı salt okumak için açmak amacıyla “1,0” argümanlarını kullanmamız gerekir. Diyelim ki bir dosyayı açtık. İçindekileri nasıl okuyabiliriz? Bir döngüyle. İşte örneği:


<% Option Explicit %>


<HTML>


<HEAD>


<TITLE>ASP ILE DOSYADAN METİN OKUMA</TITLE>


<META Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">


<META Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">


</HEAD>


<BODY>


<%


Dim DosyaSistemi, MetinDosyasi, Satir


Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")


Set MetinDosyasi = DosyaSistemi.OpenTextFile("c:yazi_deneme.txt",1, 0)


Do


Satir = MetinDosyasi.ReadLine


%>


<%=Satir%>


<%


Loop Until MetinDosyasi.AtEndOfStream


MetinDosyasi.Close


%>


</BODY>


</HTML>


Burada kullandığımız metod dikkatinizi çekmiş olmalı: ReadLine. Bu, açılan metin dosyasından bir satır okutmamızı sağlar. İkinci ve son satırları okutmamızı ise Do..Loop kontrolü sağlıyor. Bu döngü ne kadar sürüyor? MetinDosyası nesnesi, AtEndOfStream (akımın sonunda) oluncaya kadar. Bu, dosyanın sonuna geldiğimiz anda ortaya çıkan bir durum; bu durumla karşılaştığı anda Do..Loop, yaptığı işi durdurup, bir sonraki komuta geçecektir. Burada kullandığımız ReadLine metoduna ek olarak yararlanabileceğimiz diğer metodlar ise şunlardır:


Read (oku): Bir sayı örgümanı ile çalışır ve verdiğiniz sayı kadar karakter okur.


ReadLine (satır oku): Bir satır okur ve String olarak verir.


ReadAll (tümünü oku): Bütün satırları okur ve tek String olarak verir.


Skip (atla): Bir sayı argümanı ile çalışır ve verdiğiniz sayı kadar karakteri atlar.


SkipLine (satır atla): Bir sonraki satıra atlar.


Bu metodlarla sağladığımız okuma işinin kontrolü amacıyla şu özellikleri de kullanabiliriz:


AtEndOfStream (akımın sonunda): Okutulan dosyanın sonuna gelinmesi halinde True (doğru) olur.


AtEndOfLine (satırın sonunda): Okutulan satırın sonuna gelinmesi halinde True (doğru) olur.

dapHne
14-08-07, 21:56
Buraya kadar ele aldığımız nesneler bir anlamda bizim sadece tek tek sayfalarda yararlanacağımız araçları sağlıyor. Oysa ASP’yi diğer CGI teknolojilerinden ayıran başlıca özelliklerden biri tek tek Web sayfalarını sanki bir bilgisayar programının çeşitli pencereleri, diyalog kutuları, mesaj kutuları, girdi kutuları gibi, birarada bir “uygulama programı” olarak bağlayabilmesidir. Başka bir deyişle bize, ziyaretçinin sitemize bağlandığı ve ana sayfamızı açtığı andan itibaren sitemizin bir program bütünlüğünde çalışmasını sağlayacak araçlar gerekir. Bunu ancak Web Server’ın yardımıyla yapabiliriz.


ASP sayfalarımızda kullanacağımız ikinci grup nesne, Sunucu Nesneleri’dir. Bu grupta tabiî önce Sunucu’nun kendisi yer alır; sonra ziyaretçi ile kurduğumuz ilişki gelir. Ziyaretçi ile ilişkimizi iki yönlü trafiğe benzetebilirsiniz: ondan bize gelen talepler, bizim ona karşılıklarımız.


Ziyaretçiden bize gelen trafiğe neden “Talep” diyoruz? Ziyaretçi, Browser’ının URL hanesine yazdığı her adresle, veya formlardaki bir düğmeyi veya sayfalarımızdaki herhangi bir köprüyü tıklamakla, Server’a “Bana şunu göndersene!” demiş olur. Bu taleptir. Ziyaretçi taleplerinin tümü Talep Nesnesi (Request Object) olarak bir arada ele alınabilir. Server’ın bu taleplere verdiği karşılıklar, yani ziyaretçinin Browser’ına gönderdiği sayfalar, resimler, sesler, videolar ise karşılıktır ve ASP açısından Karşılık Nesnesi’ni (Response Object) oluşturur.


Bu bölümde bu nesneleri daha yakından tanıyacağız.

Server Nesnesi


Web Server, ASP için bir nesnedir, ASP’nin bir çok işini bu nesnenin özellikleri ve metodları halleder. Server nesnesinin bir özelliği (ScriptTimeout) ve dört metodu (CreateObject, HTMLEncode, URLEncode, MapPath) vardır. Web Server çalıştığı bilgisayarın sizin siteniz adına yönetiminden sorumludur; dolayısıyla bu kadar az özellik ve metodu var diye bu nesneden çok yararlanmayacağımızı sanmayın. ActiveX ve COM bileşenlerini çalıştırmak Server’ın görevidir.


ScriptTimeout Özelliği: Diyelim ki bir ASP Script’i ya bizim, ya ziyaretçinin, ya da Server’ın bir hatası üzünden sonsuz döngüye girdi! Döngünün durması için gerekli şart asla yerine gelmiyor ve Script bir türlü yapacağı işi yapıp, sonlandırmıyor. Bu durumlarda ziyaretçinin ve tabiî Server’ın sonsuza kadar beklemesi mümkün değil! Programın bir şekilde durdurulması gerekir. Bunu hemen hemen bütün Web server programlarının Script Timeout (Script süre sınırı) diyalog kutusuna bir değer girilerek yapılır. Öreğin MS-Internet Information Server için varsayılan Script Timeout süresi 90 saniyedir. Yani ISS, herhangi bir Script’in çalışıp-durmasını 90 saniye bekler; bu sürenin sonunda Script’in çalışması tamamlanmazsa ziyaretçiye arzu ettiği sayfanın veya unsurun bulunamadığını bildirir. Bu süreyi (Server’ın varsayılan değerinin altında) kısaltmak değilse bile uzatmak elimizdedir. Bunu ScriptTimeout özelliğini kullanarak yaparız. ASP sayfasının herhangi bir yerine örneğin şu kodu koymak yeter:


<% Server.ScriptTimeout = 100 %>


Bu örneğe göre Server’ın varsayılan Script Timeout süresi 90 saniye ise 100 saniyeye çıkmış olur.


Böyle bir şeyi neden yapmak isteyebiliriz? Script’iniz çok karmaşık veya başka bir Server’daki veritabanından veri çekiyor, olabilir. Gerçi bu anlamda 90 saniye bilgisayar milleti için bir asır anlamına gelir, ama yine de durdurulmasaydı işini başarıyla tamamlayacak bir Script, bu sürenin kısalığı yüzünden Server tarafından durdurulabilir. ASP sayfalarınız çok karmaşıksa ve sürekli Timeout hatası veriyorsa, hata aramadan önce bu süreyi uzatabilirsiniz.


CreateObject Metodu: İlk ASP kodunu yazdığımız andan beri bu metodu kullandığımızı görüyorsunuz. CreateObject (nesne oluştur) olmasa idi, dört mevsim birbirini izleyebilir, Dünya Güneş’in etrafında dönebilir miydi? Hiç sanmam. Fakat lütfen o CreateObject ile bu CreateObject’i birbirine karıştırmayın. Yukarıda kullandıklarımız Scripting nesnesinin bir metodu idi; bu Server nesnesine aittir. Diyelim ki sayfanızda reklam amaçlı banner grafiklerini belirli zaman aralığı ile veya ziyaretçiye gönderdiğiniz Cookie (çerez) bilgilerine göre değiştirmek istiyorsunuz. Bunun için diyelim ki MS-Web Server Programının AdRotator bileşininden yararlanacaksınız; şöyle bir kod işinizi görebilir:


<% Set Reklam = Server.CreateObject (“MSWS.AdRotator”)%>


<%= Reklam.GetAdvertisement(“/reklamlar/buyukbanka.txt”)%>


Burada GetAdvertisement, Server’ın AdRotator bileşininin bir metodudur. Server’ın CreateObject metodundan, veritabanına ulaşırken de yararlanacağız.


MapPath (Yolu belirle) Metodu: Web Server açısından “kök dizin” (root directory) Server’ın bulunduğu bilgisayarın sabit diskinde, herhangi bir klasör olabilir. Örneğin IIS için bu varsayılan değer olarak “C:inetbupLinki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.; klasörüdür. Özellikle ASP ile “program niteliğinde siteler” yapmaya başladığımızda, sitenin ilgili bütün dosyalarının bulunduğu bir dizin için yol belirlemek isteyebiliriz. Bunu Server nesnesinin MapPath (Yolu belirle) metodu ile yapabiliriz:


WebDizini = Server.MapPath(“/benim_site”)


Bu komutla WebDizini değişkenin değeri muhtemelen şöyle olacaktır:


“C:inetbupLinki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.;


Fakat bu metodun sadece böyle duragan biçimde kullanılması gerekmez; bazen sayfalarımızda ziyaretçi ile etkileşmenin sonucu olarak varsayılan Web dizinimizi değiştirmek isteyebiliriz. Sözgelimi biri Türkçe, diğeri İngilizce iki sitemiz varsa, ve ana sayfamızda ziyaretçi Türkçe’yi seçtiyse, o noktadan itibaren Web uygulamamız için Web kök-dizini, “/turkish/” olacak ve mesela resimlerimiz için verdiğimiz “/resimler/” dizini kök dizinde değil, “/turkish/resimler/” klasöründe aranacaktır. Web yolunu dinamik olarak, yani ziyaretçinin tercihine bağlı şekilde değiştirebilmek için, önce ziyaretçiden gelecek bilgileri nasıl kullanacağımıza, yani Request (talep) nesnesine değinmemiz gerekir.


HTMLEncode, URLEncode: İçinde HTML açısından kod parçası veya özel işaret sayılan karakterler bulunan metinleri sayfamıza içerik olarak göndereceğimiz zaman Server’ın işaretleri aynen metin gibi göndermesini sağlamak için, örneğin:


Server.HTMLEncode(“Değisken1 < Değisken2”)


yazarsak, ASP bu metni HTML kodu olarak yorumlamaz, metin olarak algılar.


Internet’te bazen özellikle sayfa adresleri belirtilirken bazı değerlerin “URL Kodu“ dediğimiz şekilde kodlanmış olarak gönderilmesi gerekir. Bu kodlama türünde boşlukların yerine + işareti konmuş olması şarttır. Bu tür bilgiler göndereceğimiz zaman:


Server.URLEncode(“kelime 1 kelime2 kelimeme2”)


şeklindeki bir kod Bunu hemen şu şekle sokacaktır:


kelime1+kelime2+kelime3

dapHne
14-08-07, 21:57
Web Server çok akıllı bir programdır; bir Web ziyaretçisi herhangi bir talepte bulunduğu, yani bir sayfanın gönderilmesini istediği anda, bu talebi, bir nesne halinde ele alır; kolleksiyonlar oluşturur. Bu kolleksiyonlar, HTTP protokolü ile iletişimin sonucu olarak ziyaretçinin Browser’ından ve Internet’e giriş noktası olan ISS’in bilgisayarından başlayan ve Web Server’dan derlenen bir dizi bilgidir. Bir anlamda, Request nesnesi, Web programımızın Girdi (Input) bölümünü oluşturur.


Request nesnesi kendi içinde dört ana nesne barındırır:


QueryString ve Form



Web ziyaretçisinin bilgisayarından kalkıp Server’a gelen herşey, QueryString kolleksiyonunu oluşturur. Bu ziyaretçinin Browser’ın URL adresi hanesine yazdığı bir basit HTML sayfası yolu ve adı olabilir; bir Form’un Gönder düğmesini tıkladığında gelen bilgiler olabilir. Bu bilgilerin şu özelliklerini kullanabiliriz:


Content_Length: Bir Form’dan gelen bilgilerin tümümün byte olarak boyutudur.


Remote_Host: Ziyaretçinin IP adresini verir; ancak Internet’e çevirmeli ağ ile bağlanan ziyaretçilerimiz her seferinde farklı bir IP bildirebilirler. Bu yüzden bu bilgiyi ziyaretçinin kimliği sayamayız.


Request_Method: Form’da kullandığımız GET veya POST metodunu bildirir. İki yöntemle gelen bilgi farklıdır. Form’un oluşturduğu bilgileri GET yöntemi ile alırsak bu, çevre değişkenlerinden QUERY_STRING değişkeninin içine yazılır. Başka bir ifade ile Form’daki bütün değişkenlerin adları ve bu değişkenin içerdiği değer yumak yapılır (bu yumağın niteliğine ve nasıl çözeceğimize geleceğiz!) ve Server’da QUERY_STRING değişkeninin değeri olarak yazılır. Form’un bilgilerini POST yoluyla alıyorsak bunlar Request nesnesinin Form kolleksiyonunun içinde Form’un değişken adları ve ziyaretçinin bu değişkenler için sağladığı değerler olarak ayrı ayrı yazılır. GET ile sınırlı, POST ile sınırsız bilgi alabiliriz.


Script_Name: O anda çalıştırılmakta olan ASP sayfasının adını verir.


ServerVariables (Server Değişkenleri)



Request nesnesinin bir diğer kolleksiyonu, bizim kendi Web Server’ımızın o anda çalışmakta olan ASP sayfası için oluşturduğu ortamın değişkenleridir. Bunların arasında ziyaretçinin Browser’ına ilişkin bilgiler de vardır. Önvc şU kısa ASP sayfasını çalıştırarak kendi Server’ımızın şu andaki değişkenlerini görelim; sonra bunları ayrıntılı ele alalım (SerDeg.asp):


<HTML>


<HEAD>


<TITLE>HTTP ServerDegişkenleri Kolleksiyonu</TITLE>


<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."content-type" content="text/html; charset=ISO-8859-9">


<meta Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor."Content-Type" content="text/html; charset=windows-1254">


</HEAD>


<BODY BGCOLOR=white>


<CENTER>


<H2>HTTP Server Değişkenleri Kolleksiyonu</H2>


</CENTER>


<TABLE BORDER=1>


<TR><TD><B>Değişkenin adı</B></TD> <TD><B>Değeri</B></TD></TR>


<% For Each key in Request.ServerVariables %>


<TR>


<TD><% = key %></TD>


<TD>


<%If Request.ServerVariables(key) = "" Then


Response.Write "&nbsp;"


Else


Response.Write Request.ServerVariables(key)


End If


Response.Write "</TD>"%>


</TR>


<% Next %>


</TABLE>


<p>


Sizin Host'unuzun adı:<B> <%=Request.ServerVariables("Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.")%></B>


</BODY>


</HTML>


Bu sayfayı çalıştırdığımız zaman görüntülenecek tabloda, Bir HTTP Server’ın SerDeg.asp sayfasını çalıştırdığı anda oluşturduğu ortama şekil veren bütün değişkenleri göreceksiniz. Bu değişkenleri programlama yoluyla değiştiremeyiz; sadece okuyup, yararlanabiliriz. HTTP Server Değişkenleri Kolleksiyonunun elemanları şöyle sıralanır:


Değişkenin adı Değeri


ALL_HTTP HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adlarının önünde “Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.; öneki vardır.


ALL_RAW HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adları ve değerleri istemci Browser’ın verdiği şekilde gösterilir.


APPL_MD_PATH Web Server’ın ISAPI.DLL dosyası için varsaydığı kök dizin


APPL_PHYSICAL_PATH Web Server’ın varsaydığı kök dizinin gerçek yolu


AUTH_PASSWORD Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan parola


AUTH_TYPE Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan yetkilendirme yöntemi


AUTH_USER Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanıcı adı


CERT_COOKIE Kullanıcı siteye bağlanmak için yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik (ID)


CERT_FLAGS Sertifikanın varlığını gösteren bit değeri


CERT_ISSUER Sertifika varsa veren kurum


CERT_KEYSIZE Secure Socket Layers kullanılıyorsa, bağlantı için anahtar değeri


CERT_SECRETKEYSIZE Özel anahtar değeri


CERT_SERIALNUMBER Sertifika seri no.


CERT_SERVER_ISSUER Sertifikayı veren merci


CERT_SERVER_SUBJECT Server Sertifikasının “konu” alanı değeri


CERT_SUBJECT İstemci Sertifikasının konu alanı değeri


CONTENT_LENGTH İstemcinin gönderdiği bilgi yumağının boyutu


CONTENT_TYPE Ziyaretçiden gelen bilgilerin GET veya POST metoduna göre edindiği tür


GATEWAY_INTERFACE Web Server’ın ziyaretçi ile etkileşim arayüzünün adı ve sürümü. Genellikle: CGI/1.1


Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. Ziyaretçi ile bağlantı güvenli ise ON, değilse OFF


Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. Secure Sockets Layer için bağlantı anahtar sayısı


Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. Özel Server sertifikasının gizli anahtar sayısı


Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. Özel Server sertifikasının veren merci


Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. Özel Server sertifikasının konusu


INSTANCE_ID Web Server’ın aynı anda kaç kere çalışmakta olduğu


INSTANCE_META_PATH Şu anda çalışmakta olan Web Server’ın Meta yolu


LOCAL_ADDR İstemcinin IP numarası


LOGON_USER İstemci Windows NT sisteminde ise oturum açma adı


PATH_INFO Çalışmakta olan ASP’nin göreli yolu ve adı


PATH_TRANSLATED Çalışmakta olan ASP’nin gerçek yolu ve adı


QUERY_STRING İstemcinin gönderdiği bilgi kümesi


REMOTE_ADDR İstemcinin Host’unun (ISS’inin) IP’si


REMOTE_HOST İstemcinin Host’unun (ISS’inin) adı


REMOTE_USER İstemcinin gerçek adı


REQUEST_METHOD İstemciden bilgi isteme yöntemi (GET veya POST)


SCRIPT_NAME Çalışmakta olan ASP’nin adı


SERVER_NAME Sunucu’nun adı


SERVER_PORT Sunucuya bağlantının geldiği TCP kapı numarası


SERVER_PORT_SECURE TCP kapısı güvenli ise 1, değilse 0


SERVER_PROTOCOL Server’ın çalıştırdığı Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor.;nin sürümü


SERVER_SOFTWARE Server programının adı ve sürümü


URL Şu anda geçerli URL

dapHne
14-08-07, 22:41
Daha önce ne kadar çok olursa olsun tek-tek Web sayfalarından oluşan siteler yaptıysanız bile, Cookie (Çerez) ile ilginiz olmamış olabilir. Ya da sadece Internet ziyaretçisi olarak başkalarının size gönderdiiği Cookie’lere sinirlenmekle yetinmiş olabilirsiniz. Fakat şimdi ASP ile Web Programı oluşturmaya hazırlanan kişi olarak Cookie’lerle daha yakından ilgilenmeniz gerekiyor. Çünkü artık siz de başkalarına çerez göndereceksiniz!


Tabiî bunun için önce “Cookie neden gereklidir?” sorusunu yanıtlamak gerekir. HTTP ile yapılan iletişim, belirgin olmayan durum bağlantısına dayanır: yani ne istemci sunucunun, ne de sunucu istemcinin o anda hatta (on-line) olduğunu bilmek zorunda değildir; birbirlerinden istedikleri ve gönderdikleri şeyleri karşı tarafından almaya hazır olduğunu bilmeden gönderirler. Oysa sözgelimi elektronik alışveriş gibi ziyaretçinin bir yerlere birşeyler kaydettiği, geçici değişkenler oluşturduğu durumlarda sitemizde kimin ne yaptığıını bilmek zorundayız. Ziyeretçinin bir sayfada yaptığı tercihler diğer sayfalarda ona sunacağımız içeriği etkileyebilir, belirleyebilir. Oysa aynı ziyaretçi bir sayfadan diğerine geçerken Server ile ilişkisini kaybedebilir. Bunun için ziyaretçinin Internet’ten kopması gerekmez; sadece TCP/IP protokolü gereği bizimle bağlantısı kesilebilir. Bunu ziyaretçi farketmeyebilir; ama Server etmek zorundadır. Heryeni ilişkiye yeni bir “application” (uygulama programı) başlatamayız; ziyaretçinin bir önceki sayfada yaptığı tercihlerin devam etmesi gerekir. Bu devamlılığı ziyaretçiyi işaretleyerek yaparız; bu işareti de Cookie sağlar.


ASP tekniğiyle tasarladığımız sitede, ziyaretçilerimize Cookie göndermek zorunluktur diyebiliriz. ASP açısından Cookie’ler bir nesne oluştururlar. Aslında, Cookie’ler ASP için iki ayrı grup Cookie nesnesi oluştururlar: verilenler, ve hakkında bilgi alınan varolan Cookie’ler. Birinci grup Request (talep) nesneleri, ikinci grup ise Response (karşılık) neslereni içinde ele alınabilir. Cookie konusunun devamını Response nesnelerine değindiğimiz yere bırakalım.


Sertifika Nesnesi



Sertifika, HTTP bağlantısında “Ben filancayım!” diyen istemcinin, gerçekten filanca olup olmadığını gösterir. Bir yazılımdan ibaret olan sertifikaları yetkili bir kurum veya şirket verir; bir seri numarası olur. Şifreleme teknikleri gelişmiş olduğu için taklit edilmesi zordur. Sertifika uygulaması için Web Server’ın Secure Socket Layers denen güvenli HTTP protokolünü kullanması gerekir. Bu durumda Server’ın URL’i, Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. diye değil Linki görüntüleyebilmek için <a href="%2$s"><strong>Üye</strong></a> olmanız gerekiyor. diye yazılır.


ASP açısından sertifika ile ilgili her türlü bilgi ClientCertificate kolleksiyonunda durur. Sözgelimi, bir ziyaretçinin gerçekten sitenize girmeye yetkili olup olmadığını anlamak için:


<%SertifikaNo = Request.ClientCertificate(SerialNumber) %>


gibi bir kodla istemcinin Sertifika seri numarasını SertifikaNo değişkenine atayabilir ve daha sonra bu değişkenin değerini elinizdeki bir liste ile karşılaştırabilirsiniz.


Karşılık (Response) Nesnesi



Ve geldik Web Server’in Çıktı (Output) sağladığı istemciye giden karşılıkların oluşturduğu nesneye. Server’dan Browser’a giden herşey karşılıktır. Bu bir ASP veya HTML sayfası olabilir, sayfanın içindeki GIF, JPG veya PNG grafiği, bir Flash, video veya ses dosyası olabilir. Böylesine zengin içeriği olmakla birlikte Response nesnesinin sadece bir kolleksiyonu vardır: Cookie’ler. Buna karşılık Response nesnesinin kullanabileceğimiz çok sayıda özelliği ve metodu bulunur. Önce Cookie kolleksiyonunu ele alalım; sonra önemli Response nesnesi özellikleri ve metodları üzerinde duralım.


Cookie’ler



Request nesnesinin Cookie kolleksiyonuna değinirken, ziyaretçilerimizi Browser’larına Cookie göndererek tabir yerinde ise işaretleriz, demiştik. Bu işaretleme, söz gelimi, ziyaretçinin bir Form’a yazdığı adı ve soyadı ile elektronik posta adresini Cookie olarak onun bilgisayarına kaydetmek şeklinde olur. Bir kişi sayfamızı talep ettiği anda, ASP programımız bu kişinin bilgisayarında daha önce koyduğumuz Cookie’yi arar ve bulur; Cookie’den bu kişinin adını öğrenir ve mesela sayfamız “Sayın Filanca, sitemize hoş geldiniz!” başlığını görüntüler.


Cookie’ler sadece böyle fiyaka amaçlı olarak kullanılmaz; ziyaretçinin daha önce sitemizde ziyaret ettiği sayfaları veya elektronik ticaret sitemizden satın aldığı kitap türlerini Cookie’ye kaydedebiliriz. Ziyaretçinin ikinci ziyaretinde ona önce bu sayfaların veya kitapların köprülerini sunabiliriz.


Bir Cookie’nin adı ve anahtarları (key) ile bu anahtarlara karşılık değerler olur. Örneğin:


<% Response.Cookie(“Bizim_Cerez”)(“Adi_Soyadi”)= “Necip Fazıl” %>


Bu, ziyaretçinin Browser’ına (yani sabit diskine) “Bizim_Cerez” isimli bir Cookie gönderir; bu Cookie’nin “Adi_Soyadi” adlı bir anahtarı vardır; bu anahtarın değeri ise “Necip Fazıl” olur.


Cookie kolleksiyonunun iki özelliği bulunur:


Expires (zaman aşamı süresi): Bir cookie’nin artık geçersiz olduğu tarihi gösterir.:


<% Response.Cookie(“Bizim_Cerez”).CookieExpires = “August 7, 2000” %>


Bu Cookie, 7 Ağustos 2000 tarihinden sonra kullanılmaz olacak demektir.


HasKeys: Cookie’nin String mi içerdiği yoksa anahtarları ve değerleri mi bulunduğunu belirtir, “HasKeys = False” birinci, ““HasKeys = True” ise ikinci durumu belirtir. Bir Cookie’de birden fazla anahtar ve değer bulunuyorsa, tümünü bir ASP kodu içinde yazmak, Cookie’nin gönderilmesini kolaylaştırır


Metodlar



Response nesnesinin bir çok metodu vardır; bunlardan .Write’ı yukarıdaki örneklerde sık sık kulandık:


<%


DIM Adi_Soyadi


Adi_Soyadi = “Necip Fazıl Dayanır”


Response.Write(“Merhaba, benim adım, “ & Adi_Soyadi)


%>


örneği, ziyaretçinini Browser penceresine: “Merhaba, benim adım Necip Fazıl Dayanır” yazdırır. Fakat VBScript, size bir kolaylık sağlar; buna bazı ASP tasarımcıları “eşittir metodu” adını verir:


<%


DIM Adi_Soyadi


Adi_Soyadi = “Necip Fazıl Dayanır”


%>


<%= “Merhaba, benim adım, “ & Adi_Soyadi %>


Özellikler



Response nesnesinin bir çok özelliğini kullanarak ziyaretçimize göndereceğimiz sayfaları ve diğer unsurları yönetiriz:


Buffer (Tampon) : True (doğru) olarak ayarlandığında ziyaretçiye gönderilecek sayfanın bütün unsurları bir tampon bölgede toplanır, Script’in çalışması bitinceye kadar beklenir ve HTML sayfa toptan gönderilir. Kimi zaman ASP kodumuz sonuna kadar çalıştığında ziyaretçiyi başka bir sayfaya ve siteye yönlendirebilir. Bu gibi sebeplerle, özellikle çok işlem gerektiren ASP sayfalarının baştarafına bunu sağlayan kodu koymakta yarar olabilir:


<%


Option Explicit


Response.Buffer = TRUE


%>


Flush (hemen gönder): Buffer metodu sayfanın tümünün Script’in icrası bitmeden gönderilmesini önlerken, Flush bunun tam tersini yapar. ASP, Response nesnesinin Flush metodu kullandığımızı gördüğü anda, o ana kadar icra edilmiş kodun sonucu olan HTML’i Browser’a gönderir:


<%


Option Explicit


Response.Flush


%>


Clear (Boşalt): Buffer metodu ile Script’in sonunu beklerken geçici bir alanda tutulmakta olan HTML, Clear metodu ile temizlenir, yok edilir. Flush metodunda tampondaki HTML Browser’a gönderilir; ancak Clear metodu tampon bölgedeki herşeyi yok eder. Böyle “tehlikeli” bir metod neden vardır, ve nerede kullanılabilir? Bir çok yerde: ziyaretçinin sözgelimi elektronik alışveriş sitemizde alışverişten vazgeçtiğini belirtmesi üzerine tampon bölgede tutmakta olduğumuz ve alınan mallar listesini içeren HTML’i bu yöntemle temizleriz:


<%


Option Explicit


Response.Clear


%>


Expires (Süresi dolar): Kullanıcı tersine bir ayar yapmadıysa, Browser genellikle görüntülediği sayfaları Geçici Internet Dosyaları dizinine (cache) kaydeder ve tekrar aynı sayfayı görüntülemek istediğinizde sayfayı Internet’ten edinmek yerine kendi sabit diskinden alır. Oysa özellikle haber gibi süreli bilgilerin sunulduğu Web sitelerinde bu sitenin itibarını sarsar. ASP tekniğiyle bunu önleyebiliriz. ASP sayfamızda bu sayfanın gözgelimi 60 dakikadan fazla cach dizinde tutulmamasını sağlayacak Expires metodunu kullanabiliriz:


<%


Option Explicit


Response.Expires = 60


%>


Burada yazdığımız rakamı değiştirerek, sayfanın cach’de tutulacağı dakikayı değiştirebiliriz. “Expires = 0” sayfanın hiç saklanmamasını sağlar.


End (Son): Response nesnesinin o anda icra edilmekte olan Script’i durdurarak, o ana kadar ne elde edilmişse hepsini Browser’a göndermesini sağlayan metodu olan End, aynı zamanda Buffer metoduyla tutulan HTML’in de gönderilmesine yol açar. Bu metoddan sonraki HTML veya ASP kodları icra edilmez:


<%


Option Explicit


Response.End


%>


Response nesnesinin ASP sayfasının çıktı kontrolünü sağlayan bu metodlarını aşağıdaki eğlenceli Script’le sınayabilirsiniz (ASP ile eğlence de bundan daha fazla olamaz!). Burada Browser’a gitmesi ümidiyle üç cümle var. Programı çalıştırın ve bakalım hangisi ekranda kalacak? Bu kadar eğlendiğinize göre şu soruyu da yanıtlayabilirsiniz: Neden?


<% @LANGUAGE = VBScript %>


<%


Option Explicit


Response.Buffer = True


Response.Expires = 60


%>


<HTML>


<BODY>


Bu 1 Numaralı mesajı mı Browser’a gidecek?


<%


Response.Clear


Response.Expires = 0


%>


<HTML>


<BODY>


Bu 2 numaralı mesaj mı Browser'a gidecek)


<%


Response.Flush


%>


</BODY>


</HTML>


<%


Response.End


%>


Bu 3 numaralı mesaj mı Browser’a gidecek?


</BODY>


</HTML>

dapHne
14-08-07, 22:42
ASP’nin varlık sebebi, standart CGI’ın yetersiz kaldığı noktalardan biri olan Web Server’ın her bir Web ziyaretçiyi oturumunun başından sonuna izleyebilmesi içindir, dersek durumu abartmış olmayız. ASP açısından, bir site “uygulama programı” (Application) sayılır. Her ziyaretçi de bir “oturum” (Session) sayılır. Bir takım ASP ve HTML sayfalarından oluşan bildiğimiz Site’ye application, her hangi bir ziyarete de session denmesinin sebebi nedir? Bunu her iki nesnenin işlevleri ile açıklayabiliriz.


Application nesnesi, sitenin tümüyle ilgili bilgileri (değişkenleri, nesneleri ve metodları) tutar; Session nesnesi ziyaretçinin sitemize girmesinden itibaren izini sürer. Diyelim ki bir borsa sitesi yaptınız; ziyaretçileriniz gelerek, satışa sunulan hisse senetlerinin değerlendirmelerini okuyacak ve size “Şu, şu hisse senetleri al!” diye talimat bırakacak. Bütün ziyaretçilerinizin erişeceği sadece bir veritabanınız var; buna karşılık her bir ziyaretçinin yapacağı farklı tercihler, vereceği farklı kararlar olacaktır. Application nesnesi, sitenizle (artık site yerine Web Uygulama Programı desek de ağzımız alışmaya başlasa!) veritabanına erişmekten tutun, alışverişlerie kadar sitede yapılacak bütün işlerin bütün kurallarını bilecek ve uygulayacak; Session nesnesi ise sözgelimi benim alışverişlerimi, tercihlerimi bilecektir.


HTML ve Javascript ile biraz oynadıysanız, bilirsiniz ki bir sayfadan ötekine değişken değeri aktarmak, imkansıza yakın derecede zordur. Değişkenlerin ömrü, fonksiyonla sınırlıdır. Bir ASP sayfasında herhangi bir değişkeni fonksiyon dışında tanımlamakla ve değer atamakla onu bütün fonksiyonlar için geçerli hale getirebiliriz. Fakat kimi zaman isteriz ki, bir fonksiyonun değeri bütün sayfalarda aynı olsun; ziyaretçinin sayfa değiştirmesi ile değişkenin değeri değişmesin. Bunu ASP’de yapmak çok kolaydır. ASP’de bu zorluğu yenebilmek için değişkenlerimizi Session nesnesi için oluşturabiliriz; ve bu değer ziyaretçinin oturumu boyunca devam eder; bütün ASP sayfalarındaki bütün Fonksiyonlar tarafından bilinebilir. Örneğin:


Session (“Tupras”) = 44500


bütün Session için geçerli bir Tupras değişkeni oluşturur ve ona “44500” değerini atar. Kimi zaman, değişkenin çok daha geniş kapsamlı olmasını, yani ömrünün Session ile değil bütün Application boyunca belirli olmasını isteyebiliriz. O zaman bu değişkeni Application düzeyinde tanımlayabiliriz:


Application (“Tupras”) = 44500


Bu durumda Tupras değişkeni bütün ziyaretçiler için aynı değere sahip olacakatır.


Session nesnesinin oluşabilmesi için, ziyaretçiye mutlaka bir Cookie göndererek, sitemizde (hani “Uygulama Programı” diyecektik?) bir işaret vermemiz gerekir. Daha önce, HTTP ile kurduğumuz bağlantı, belirsiz durum bağlantısıdır demiştik. Bu, Server’ın bir ziyaretçiye arzu ettiği sayfayı gönderdikten sonra, onu alıp almadığını, o sayfada ne tercihler yaptığını bilmemesi demektir. Oysa, ziyaretçiye sitemize bağlandığı anda bir Session kimliği verirsek ve her yeni sayfa talebinde bu kimliği kontrol edersek, kimin hangi oturumunu sürdürdüğünü biliriz. ASP–uyumlu bir Web Server, ziyaretçi yeni bir tercih yapmadığı taktirde her Session nesnesini 20 dakika açık tutar; sonra siler. Bu süreyi Session nesnesinin Timeout özelliği yoluyla değiştirebilirsiniz. Session belirleyen Cookie ASP-uyumlu Web Server tarafından otomatik olarak gönderilir ve takip edilir; tasarımcı olarak bizim bu konuda bir şey yapmamız gerekmez.


Bir Web programınıza aynı anda kaç kişi ulaşırsa (yani sayfalarınızı kaç kişi talep ederse), o kadar Session nesnesi oluşur; fakat siteniz bir adet olduğuna göre bir adet Application nesnesi vardır. Bu nesnenin bütün Session’lar için sitemizin ihtiyaçlarına uygun ve aynı uygulama kurallarına sahip olmasını sağlayan bir dosya vardır: Global.asa. Bu dosya PWS veya IIS kurulurken oluşturulur. ASP ile Web programlarınızı, örneğin MS Visual Studio ile oluşturuyorsanız, program sizin için seçtiğiniz dizinde bir Global.asa dosyası oluşturacaktır. Bu dosyada, çoğu zaman, sitemize ilk ziyaretçinin gelmesiyle oluşan Application_OnStart ve son ziyaretçinin çıkmasıyla oluşan Application_OnEnd ile herhangi bir ziyaretçinin bir sayfaya erişmesiyle oluşan Session_OnStart ve ziyaretçinin sitemizden çıkması ile oluşan Session_OnEnd olayları halinde ne yapılacağı yazılıdır. Bu dosyanın içeriği standart bir ASP dosyasına benzemekle birlikte adındaki uzatmanın .asp değil de .asa olmasının sebebi, dosyanın Active Server Application dosyası olmasıdır. ASP-uyumlu bir Web Server programı sitemize ulaşan ilk ziyaretçiyi gördüğü anda Global.asa dosyasını çalıştırır.


Application ve Session nesnelerin kendi başlarına en çok kullanıldığı yer, sitemize gelen ziyaretçilerin sayısını (sitemizin aldığı Hit sayısını) tutmasını sağlamaktır. Bu genellikle Global.asa pogramına bir sayaç yerleştirilerek yapılır.

dapHne
14-08-07, 22:43
ASP’nin diğer CGI tekniklerine göre kolay olmasının (peki, kabul, “kolay görünmesi” diyelim!) belki de sadece veri erişimini adeta çocuk oyuncağı haline getirmesidir. ADO, gerçekte bir ASP nesnesi olmaktan çok Server Component’i (sunucu bileşeni) sayılır. Bu bileşene biz ASP içinden bir ActiveX nesnesi ile ulaşırız.


Veritabanı, günümüzde giderek Web Programlarının temelini oluşturuyor. Sayfaların unsurları veritabanı dosyasından alınıyor; ziyaretçilerin verdikleri bilgiler veritabanına yazılıyor. Bu gelişimin başlıca sebebi, veritabanının site güncelleştirme işlerini kolaylaştırmasıdır. Söz gelimi bir sayfadaki seçenekleriniz, bir veritabanından alınıyorsa, bu seçenekleri alan VBScript kodu hiç değişmeden kalacak ve siz sadece veritabanı dosyanızda ilgili verinin alındığı alana yeni değerler girerek, sayfanızı sürekli güncel tutmuş olacaksınız. Bir diğer sebep ise veritabanı dosyalarının idaresinin kolay olmasıdır. Sözgelimi ziyaretçilerinizden aldığınız bilgileri daha sonra muhasebe kayıtlarınıza veya adres defterinize, müşteri kütüğüne ya da başka suretle kayda geçirmek istiyorsunuz. Ziyaretçilerimizin form yoluyla bize ilettiği bilgileri düzyazı dosyasına işlemenin yollarını Dosya sistemi Nesnesi’ni (FileSystem) görürken, ele aldık. Bunu yapabiliriz kolayca. Ama daha sonra düz yazı dosyasının idaresi, veritabanının idaresi kadar kolay olamaz. ASP sayfalarınız Access, Excel, Paradox, FilePro, SQL Server ve Oracle veritabanlarına ve spreadsheet dosyalarına erişebilir; bu dosyalardan veri okur ve bu dosyalara veri yazabilir. Özetle, ASP programlarımızla, SQL-uyumlu veya Windows ve diğer sistemler için yazılmış ODBC (Open Database Connectivity/Açık Veritabanı Bağlantısı) ile uyumlu her türlü dosyaya, ADO nesnesi aracılığıyla ulaşabiliriz.


ODBC ve OLE-DB

Bu kitapçığın baştarafında, ASP dosyalarınızı geliştirmeye başlamadan önce bilgisayarınızda ODBC (Open Database Connectivity/Açık Veritabanı Bağlantısı) sürücülerinin kurulu olması gerektiğini belirtmiştik. ODBC, ADO’nun kullandığı tek sistem değildir; ve Microsoft firması, ODBC’nin yerine hızla OLE-DB adını verdiği yeni bir teknolojinin alması için yoğun çaba içinde. OLE-DB, ODBC’nin Web’de sağladığı başarının üzerine bina edilen yeni bir teknoloji. ODBC, ilişkilendirilmiş (relational) veritabanlarına erişmek üzere tasarlandığı halde OLE-DB her türlü veritabanına erişebilir. OLE-DB, ASP programlarımıza yeni nesneler kazandırabilir; kullanılmaya hazır elektronik ticaret bileşenlerini kullanmaya imkan verir. Bu konuda geniş bilgiyi, Microsoft’tan edirebilirsiniz.


ASP sayfalarımızda kullanacağımız ADO nesneleri ilerde de ODBC sürücülerine erişme imkanını koruyacağı için, şimdilik sadece ODBC tekniği ile çalışmakta ve bu tekniği öğrenmekte sakınca yok. OLE-DB, ODBC’nin yerini almayacak; fakat içinde ODBC’yi de bulunduracak. Bu da şu anda oluşturacağımız ASP uygulamalarının ilerde OLE-DB tekniği ile çalışan sunucularda işleyeceği anlamına geliyor.





Şimdi ADO ile aşağıda yapacağımız küçük örnekler için bilgisayarınızda kurulu bir veritabanı programı varsa onu kullanarak bir veritabanı dosyasında uyeler adıyla şu tabloyu oluşturabilirsiniz:


Alan Adı: Veri türü


uyeNo AutoNumber (Birincil Anahtar/Primary Key)


uyeAdi metin


uyeSoyadi metin


email metin


mesaj memo


Daha sonra da renkler adıyla şu tabloyu yapın:


Alan Adı: Veri türü


renkID AutoNumber (Birincil Anahtar/Primary Key)


renk metin


Bu tablolardan birincisine bir kaç isim ve diğer bilgileri; ikincisine ise dört-beş renk adı girin. Bilgisayarınızda veritabanı oluşturma programı yoksa bu kitapçığın kodları arasında bulunan uyeler.mdb adlı MS-Access dosyasını kullanabilirsiniz. Bu dosyayı, kişisel Web Server’ınızın kök dizinine kopyalayın. Sonra, Denetim Masası’nı açın ve adı ODBC, ODBC 32 Bit, ya da ODBC Data Source olan simgeyi çalıştırın; ikinci sekme olan System DSN’i tıklayın.





Açılacak kutuda Add/Ekle düğmesini tıklayarak, yeni veri kaynağı oluşturmak için ilk adım olan veriyi okumakta kullanacağımız sürücüyü seçebileceğimiz kutunun açılmasını sağlayın. Burada, yukarıda oluşturduğunuz veri dosyasına uygun sürücüyü seçin. Örnek uyeler.mdb’yi kullanıyorsanız, birinci seçenek olan Microsoft Access Driver’ı seçmeniz gerekir. Son düğmesini tıklayın ve Access dosyasının kurulumunu yapmaya başlayalım. Buradaki Data Source Name (DSN, Veri Kaynak Adı), biraz sonra ADO nesnesiyle ilgili metodları ve deyimleri yazarken kullanacağımız veri adıdır; buraya “uyeler” yazın; çünkü örneklerde bu veriye “uyeler” adıyla gönderme yapacağız. İsterseniz, Description/Açıklama bölümüne veritabanının niteliğini belirten bir kaç kelime yazabilirsiniz. Sonra, Select/Seç düğmesini tıklayarak ve açılıcak diyalog kutusu yardımıyla veritabanı dosyasını kopyaladığınız yerde bulun; OK/Tamam’ı tıklayarak, veritabanı seçme işlemini tamamlayın.





DSN oluşturma kutularını sırasıyla OK/Tamam düğmelerini tıklayarak kapatın; “uyeler” verisi, şu andan itibaren bütün Web uygulamalarımızın hizmetine girmiş demektir.


Internet sitenize koyacağınız ve veritabanına erişmesi gereken sayfalarınız için bu işlemi gerçek Internet ortamında da yapmak zorundasınız. Veritabanı dosyanızı Internet sitenizde kök dizinine veya bir diğer dizine kopyaladıktan sonra sistem yöneticisine ya elektronik mektupla, ya da evsahibi firmanın yönetim ve teknik destek yardımı sağlayan sayfasında veritabanınızın dosya adını, yolunu, ve DSN olarak kullanmak istedeğiniz ismi bildirerek, bizim burada yaptığımız işi Server yöneticisinin yapmasını sağlamamız gerekir.


ADO’nun bize sağladığı imkanlardan yararlanabilmek için onun nesnelerini kullanılırız.

dapHne
14-08-07, 22:45
ADO’dan yararlanabilmek için kullanacağımız ilk nesne Connection’dır. Bu nesne ile veritabanı ile bağlantı sağlarız, yol açarız:


<%


Dim Veriyolu


Set Veriyolu = Server.CreateObject(“ADODB.Connection”)


Veriyolu.Open “Veri_adi”


%>


Burada, Server’ın CreateObject metodu ile ADOBD.Connection nesnesini olu&thorn;turuyoruz. Olu&thorn;turduğumuz bağlantıya istediğimiz deği&thorn;ken adını verebiliriz. Bu örnekte veriye kurduğumuz bu bağlantı Veriyolu adıyla biliyor. Bu yolla sağlayacağımız veriler, ASP programı boyunca bir isimle bilinmelidir. Veriyolunun açacağı veri kümesinin ismini buradaki “Veri_adi” kelimelerinin yerine yazarız. Bu isim, bağlantının .Open metodu ile açacağı verinin adıdır. Bu, kullanacağımız veritabanı dosyasının adı değildir. Bu isim ile söz konusu veritabanı dosyasını i&thorn;letim sisteminin ODBC aracına tanıtırken kullandığınız isim aynı olmalıdır. Bir veritabanı dosyasını ODBC aracını kullanarak sisteme tanıtma (DSN-Data Source Name) ayarının nasıl yapıldığını daha önce ele aldık. Bu üç satırla, ASP programı, Server’dan ADO aracılığıyla, sistemin “Veri_adi” kelimelerinin yerine yazacağınız isimli veriye yol açacaktır. Örneğin yukarıdaki kutuda olu&thorn;turduğumuz ODBC veri kaynağını kullanacağımız zaman, buraya “uyeler” kelimesini yazacağız,


Recordset (Kayıt dizisi)



Veritabanına bağlantıyı olu&thorn;turduktan sonra, buradaki tabir yerindeyse ham verileri, kullanılır kayıtlar haline getirmemiz gerekir. Bunu ise ADO’nun Recordset nesnesi sağlar. Kurduğumuz veriyolundan programımıza bilgi gelmesi için .Execute (icra et) metodunu kullanırız; ancak bu komuta icra edeceği bir komut vermemiz gerekir.


Ba&thorn;tan beri ADO ile kullanabileceğimiz veritabanının SQL (sequyel okunur; Structured Query Language/Yapısal Sorgu Dili) uyumlu olması gerektiğini söylüyoruz. Bu dil, verilerin sabit diske yazılması ve okunmasını düzenleyen bir çok veritabanı dilinden sadece biri, fakat en yaygınıdır. Bir veritabanından veri okumak, veri deği&thorn;tirmek veya eklemek için komutlarımızı bu dille vermek zorundayız.


ASP amacıyla SQL komutlarından çok az kısmını kullanırız; bu bakımdan ASP Tasarımcısı olmak için sınırlı da olsa SQL öğrenmek gerekir.

Hızlı SQL Kursu: Select



ASP amaçlı olarak kullanacağımız komut gerçekte sadece SELECT’tir. Fakat hatırlamamız gereken veritabanı ilkeleri var. Bir veritabanı kabaca alanlar (sütunlar) ve bunların içinde yazılı değerler (satırlar) halinde olur; her satır bir elemanın değerleridir; ve Kayıt adını alır.


SELECT Bir veritabanından veri seçmeye yarar. SQL Sorgusu da denir. Dört bölümü vardır. Tipik bir SELECT komutu &thorn;öyle yazılır:


SELECT alan1, alan2.. FROM tablo WHERE ko&thorn;ul = değer ORDER BY alan1


Seçilecek alanların adı SELECT komutunun ilk bölümünü olu&thorn;turur. Bir veritabanında birden fazla tablo bulunabilir; seçimin hangi tabloda yapılacağı FROM bölümünde gösterilir. Kimi zaman bir tablodaki alanda bulunan bütün kayıtları seçmek isteyebiliriz; fakat çoğu zaman seçimin sınırlarını daraltmak için sözgelimi bir alandaki değerlerin vereceğimiz bir ko&thorn;ula uymasını isteyebiliriz. Bu durumda “ko&thorn;ul = değer” testini WHERE bölümünde yaparız. Seçilen değerlerin hangi alandaki kayıtlara göre sıralanmasını istiyorsak, ORDER BY bölümünde bunu belirtelibiliriz. Örnek:


SELECT Adi, Soyadi, TelNo FROM Telefonlar WHERE Alankodu = 0535 ORDER BY Adi


Bu komutla veritabanının Telefonlar isimli tablosundan Adi, soyadi ve TelNo adlı sütunlarındaki kayıtlardan Alankodu sütunundaki değeri “0535” olanları seçmi&thorn; oluruz. Bir tablodaki bütün alanların bütün değerlerini seçmek için SELECT komutunu &thorn;öyle yazarız:


SELECT * FROM Veri_adi


Buradaki “Veri_adi” kelimelerinin yerine DSN’e verdiğiniz adı (orneğin yukarıdaki örnekte olduğu gibi, “uyeler” kelimesini) yazacaksınız.


SQL’in INSERT, UPDATE ve DELETE komutlarının nasıl kullanıldığını öğrenirseniz, ADO nesnesinin bunlara denk gelen ve a&thorn;ağıda nasıl kullanıldıklarını göreceğimiz yeni kayıt ekleme, kayıtları güncelleme ve silme metodları yerine kendi SQL komutlarınızı yazabilirsiniz.






Sağladığımız veri bağlantısını kullanarak, yararlanabileceğimiz bir veri grubu oluşturmak için, yukarıda .Connection metodunu kullanırken yazdığımız kodu şöyle geliştirmemiz gerekir:

<%

Dim Veriyolu, Kayitdizisi

Set Veriyolu = Server.CreateObject(“ADODB.Connection”)

Veriyolu.Open “Veri_adi”

Set Kayitdizisi = Veriyolu.Execute(“SELECT * FROM Veri_adi”)

%>

Buradaki .Execute metodu, DSN’ini verdiğiniz kaynaktaki veritabanından verileri fiilen alıp getirmeye ve bir Recordset (Kayıt dizisi) oluşturmaya yarar. Kayıtları tek tek okuması için Kayitdizisi’ne bir sonraki kayda gitmesini bildirmemiz gerekir. Bunu .MoveNext (bir sonrakine git) metodu ile yaparız. Okunan her kayıt Kayitdizi adlı değişkenin içindedir. Bu nesnenin elemanlarını herhangi bir döngü yöntemiyle ziyaretçinin Browser penceresinde görüntüleyebiliriz; bir HTML etikenin içeriği yapabiliriz; veya başka bir şekilde kullanabiliriz. Aynı döngü, .MoveNext ile bir sonraki kaydın okunmasını da sağlayacaktır. Bunun bir örneğini daha sonra göreceğiz.

Recordset.Open


Veritabanına dayanan Web uygulamalarımızda sorun buradaki gibi sadece veriyi okumakla bitmeyebilir; veriyi güncelleştirmek veya silmek isteyebiliriz. Bunun için doğruca ADO’nun .Recordset metodundan yararlanmamız gerekir. .Recordset metodu ne yapar? Tıpkı ekranınızdaki bir yazının içinde duran imleç (cursor) gibi hayalî bir imleci götürür verilerinizin en başına koyar. Bu hayali imleci veritabanı üzerinde dolaştırmak ve gittiği yerdeki değeri okutmak bizim işimizdir.

.Recordset metodu, ile bir veritabanını okuyacak imleci üç şekilde ayarlayabilirsiniz:

Static (Duragan) SELECT komutu icra edilir ve okunan kayıt arzu ettiğiniz değişkene yazılır. (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, adOpenStatic)

Forward only (Sadece ilerle) İmleç veritabanı içinde sadece ileri doğru gider ve her seferinde bir kayıt okunur. (Varsayılan imleç türü budur.) (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, adOpenForwardonly)

Dynamic (Dinamik) Veritabanına ulaşan ve değişiklik yapan başka bir kullanıcı varsa, bu değişiklik size anında yansıtılır. (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, adOpenDynamic)

Bu yöntemlerden birini seçmekle veriyi belirli bir okuma tarzında açmış olursunuz. Bu yöntemlerden hangisini seçtiğinizi .Recordset metodunu kullanacak olan .Open komutunun argümanı olarak açıkça belirtmeniz gerekir. ADO, bunun için sizden sayıl