[b:a5a602b944]ASP/KİTAP 1
Önsöz 4
ASP’ye Giriş 10
Kişisel Web Server Kuralım 11
PWS Kurulurken Hata Verirse 12
Bir Örnek Yapalım 14
Internet’te ASP 15
ODBC İşliyor Mu? 20
ASP’nin Unsurları 21
ASP’nin Dili 22
VBScript’e Giriş 23
Bir iki yazım kuralı 25
Değişkenler 26
Kötü programcılığı önlemek için! 27
Array Fonksiyonu 28
Sabit Değerler 32
VBScript’te İşlemciler (Operatörler) 32
VBScript’de Program Kontrolü 34
Mantıksal Sınamalar 35
If.. Else 35
Dönen Değer 36
Select Case 37
Döngüler 39
For..Next döngüsü 39
While...Wend 41
Do..Loop 42
Tesadüfî Sayı 44
Tam Sayı Elde Etmek için: Int ve Round 46
Dizi değişkenler için döngü: For Each..Next 47
Döngüyü durdurmak isterseniz 48
Süreçler (Prosedürler) 48
Sık Kullanacağımız Hazır Fonksiyonlar 51
Tarih ve saat 51
Karakter-dizisi Düzenleme 52
Dizi-Değişken (Array) Fonksiyonu 54
Test Fonksiyonları 56
ASP’nin Nesneleri 58
Hata (Err) Nesnesi 61
Dosya Sistemi Nesnesi 62
Metin (TextStream) Nesnesi 67
Metin Dosyası Oluşturma (CreateTextFile) 68
Varolan Metin Dosyasına Ek Yapma (OpenTextFile) 68
Sunucu (Server) Nesneleri 71
Server Nesnesi 71
Talep (Request) Nesnesi 74
QueryString ve Form 75
ServerVariables (Server Değişkenleri) 75
Cookie (Çerez) 79
Sertifika Nesnesi 80
Karşılık (Response) Nesnesi 81
Cookie’ler 81
Metodlar 82
Özellikler 83
Uygulama (Application) ve Oturum (Session) Nesnesi 86
ActiveX Veri Erişim (ADO) Nesneleri 88
ODBC ve OLE-DB 89
Connection (Veritabanına bağlantı) 92
Recordset (Kayıt dizisi) 92
Hızlı SQL Kursu: Select 93
Recordset.Open 95
ADO Sabit Değerleri 96
Recordset.Update 97
Recordset.Delete 99
Recordset.AddNew 99
DSN’siz Veri Bağlantısı 99
Veri ile HTML Etiketlerini Doldurma 101
Seçme Kutuları: SELECT 101
İşaretleme Alanları: INPUT-RADIO 104
İşaretleme Alanları: INPUT-CHECHBOX 106
ASP Kaynakları 108
ASP/KİTAP 2 110
Önsöz 111
Alıştırma Uygulamaları 113
Doğum Günü Hesabı 113
Çift Tırnak Gerekince! 116
HTML Dışında İçerik 116
Başka Sayfaya Yönlendirme 118
Ziyaretçiden Bilgi Alma 119
Form etiketlerinden bilgi alma 125
Parola İle Sayfa Koruma 126
Dinamik İçindekiler Sayfası 128
Gecikme Bildirme Sayfası 131
Form Değerlerini Yakalayalım 134
Konuk Defteri Uygulaması 140
Veri Yönlendirmeli Web Uygulaması 145
Veri için hazırlık 145
İnşaata Başlarken 148
ODBC’e Veritabanımızı Bildirelim 149
Sıra Web Programı’nda 149
ASP’de Güvenlik 166
Elektronik Adres Doğrulama 167
Zararlı Kod Temizleme 170
ADO Güvenliği ve Hata Mesajları 173
ASP Hatası Arama 177
İleri ASP Konuları 178

Önsöz
“Merhaba: Ben bilgisayar hastası—Kroninukus computerium—üniversiteyi yeni bitirmiş bir gencim. Byte dergisiyle verilen "Internet Tasarım Rehberi" kitapçığını okuyarak HTML'i öğrenmeye çalışıyorum ve bu konuda çok istekliyim. Bundan iki ay kadar önce bir shareware program kullanarak bir site hazırladım. Fakat bu programı kullanmak için hiç bir HTML etiketini öğrenmek gerekmiyordu. Oysa ben kendi çabalarımla bu işi halletmeyi ve hatta daha da ileri götürmeyi düşünüyorum. Sizden ricam bana nereye gitmem gerektiğini bildirmeniz, ve bunun için gerekli bilgi ve belgeleri sağlamanız, bizlere yardım etmenizdir. Gayretleriniz için çok teşekkür ediyor, çalışmalarınızda başarılar diliyorum.”
Merhaba: çok değil, bir buçuk yıl önce yazdığınız bu mektuba, o günden beri sürekli karşılık verdim. Önce Byte, ardından PC World ve şimdi de PC Life dergisinin eki kitapçıklarla, bu arzunuzu yerine getirdik. Size bir harita sunduk; bu haritaya göre ilerlediniz. HTML’den sonra site yeri edinme yollarıyla işe başladık. Ardından HTML’in durağan kalıbını yırtmak için JavaScript öğrendik. Sonra, sitemizi ziyaret edenlerle etkileşmeli sayfalar yapmak, onlardan Form yoluyla bilgiler almak, konuk defterleri yapmak için CGI imkanlarını kullanmak amacıyla Perl’e sıra geldi. Şimdi yolun sonundayız. ASP tekniği ile sitelerimizi veritabanına dayalı hale getireceğiz; Server nesnelerini kullanarak gerçek dinamizme kavuşturacağız. Bunu yaparken Visual Basic Scripting Edition (veya kısa adıyla VBScript) ile tanışacağız.
Gerçi bu ve gelecek ay sunacağımız ASP Uygulamaları kitapçığıyla, birlikte yürümek üzere çizdiğimiz eğitim döneminin sonuna gelmiş oluyoruz; ama sizin önünüzde uzun bir yol var. Bu yol, Internet denen yeni iletişim aracını kullanarak, toplumumuza yeni bir soluk kazandırma yoludur. Bu yolda yalnız ilerleyeceksiniz. Bilgisayarınızın ekranının aydınlattığı yolda, klavye ile baş başasınız. Kalbiniz ve onu dolduran Bilişim Teknolojisi aşkı size rehber olacak. Daha öğreneceğiniz çok şey var hayatta. Hergün yeni teknolojilerin çıktığı bir alan seçtiğinizin farkındasınız. Sakın kafanız karışmasın: Siz ustasınız; teknoloji, adı üstünde, araçtan ibaret. Hergün yenisi ile karşılaştığınız teknolojiler sizi korkutmamalı. Sırasıyla hepsini başaracaksınız. Öğrendikçe, çok değil bir ay önce sizi korkutan bir dilin, bir tekniğin ne kadar basit olduğunu göreceksiniz. Asla “Ben bunların hepsinin altından nasıl kalkarım?” demeyeceksiniz. Sırasıyla herşeyi öğrenebilirsiniz. Daima şunu tekrar edin: “Öğrenen nasıl öğrendi ise, ben de öğrenirim!” Bu yolda aklınız ve kalbiniz size rehber olacaktır. Yeter ki onlara kulak verin.
ASP veya Active Server Pages (Etkin Sunucu Sayfaları) tekniği, sayfalarınızı canlandıracak bir tekniktir. Bu teknik, bir kaç sayfa sonra göreceksiniz ki, sil baştan bir bilgisayar programlama dili öğrenmeye gerek olmadan uygulanabilir. Bu kitapçığı yazarken sizinle yolun başından beri beraber olduğumuzu, yani HTML bildiğinizi varsayıyorum. Ayrıca Web’in nasıl çalıştığını, Server (Sunucu) ve Client (İstemci) ilişkisinin nasıl yürüdüğünü de biliyor olmalısınız.
ASP teknolojisinden yararlanmak istediğinizde Web sitesine evsahipliği yapan bilgisayarda çalışmakta olan Web Server’ın ASP teknolojisini tanıması ve sitenize bu hizmeti vermesi gerekir. ASP, bir zamanlar sadece Microsoft’un NT ve daha sonra Windows 2000 işletim sistemine dayanan MS-IIS (Internet Information Server) programında işleyebilirdi. Fakat şimdi artık NT-tabanlı diğer Web Server programları gibi Unix-tabanlı Web Server programları da ASP anlar ve işletir hale gelmiş bulunuyor. Fakat ASP sayfalarınızı gerçek Internet ortamında ziyaretçilerinizin hizmetine sunmadan önce, kendi bilgisayarınızda sınamanız gerekir. Bunun için bilgisayarınızın işletim sistemi Windows 95/98 ise Kişisel Web Server (PWS), NT 4.0 ise IIS kurulmuş olmalıdır. Sisteminiz Windows 2000 ise, IIS 5.0 kendiliğinden kurulmuş demektir.
Şimdi biraz ASP’den söz edelim. Bu kısaltmayı, “a..se..pe” veya “ey-es-pi” diye harf-harf okuyanlar olduğu gibi, “eyspi” diye bir kelime halinde okuyanlar da vardır; ve bana sorarsanız, hepsi de doğrudur. Internet programcıları, bütün görevi bir sabit diskteki HTML dosyalarını alıp, ziyaretçinin Browser’ına göndermekten ibaret olan Web Server programını yeniden tasarlamaya başladıklarında, Server’ın sadece durağan sayfaları göndermesi yerine, ziyaretçiden de veri kabul etmesinin uygun olacağını düşündüler. Bu amaçla Internet istemcisi ile sunucusunun buluştuğu noktada, yani Common Gateway Interface (Ortak Geçit Arayüzü) katmanında Web Server programının, istemci programdan (browser) kendisine bilgi ve komutlar gönderilmesini sağladılar. Örneğin bir Form’daki bilgilerin alınıp, bir dosyaya kaydedilmesi için vereceğimiz komut, sitemizin bulunduğu bilgisayarın işletim sisteminde CGI katmanı tarafından icra ettirilir. Bu manada CGI, Web Server’ın Internet ziyaretçisinin Browser’ın gelen bilgi ve komutları işlediği veya kendi işletim sistemine aktardığı noktadır. Bu gelişmenin sonucu olarak ortaya CGI programı dediğimiz şeyler çıktı. Perl, C/C++, Delphi, Visual Basic ile yazılan bu programlar Web Server tarafından çalıştırılır, ve vereceği komutlar işletim sistemine iletilir.
CGI programları ile çok şey yapılabilir; fakat Web Server’a aynı anda birden fazla kişi erişir ve aynı CGI programını çalıştırırsa, (yani aynı anda aynı formun “Gönder” düğmesini tıklarlarsa), CGI programının birden fazla “kopyası” çalışmaya başlar. Aynı anda aynı forma ulaşan kişi sayısı 4-5 ise bu belki sorun oluşturmaz; ama bu sayı arttıkça Web Server da adeta yerlerde sürünmeye başlar! Özetle CGI programları Web Server’ı yavaşlatır.
Microsoft programcıları biraz geriden gelmekle birlikte Server işine el attıklarında, istemci ile sunucunun etkileşmesini, bütün sistemi yavaşlatan “haricî” programlar yerine, işletim sisteminin bir işlevi haline getirebileceklerini düşündüler. Bunun yolu ise işletim sisteminin Uygulama Programı Arayüzü (API, Application Programming Interface) denen unsurlarını kullanmaktı. Nitekim Microsoft, oturup bir dizi Internet Server API (veya kısaca ISAPI) tasarladı. ISAPI, tıpkı CGI gibi, Web Server programının bulunduğu bilgisayardaki diğer programlarla alışverişini sağlar. Ne var ki ISAPI’den yararlanan programlar üreterek bunları Web Server’ın emrine vermek oldukça pahalı bir yol. Başka bir deyişle, bir formda Gönder düğmesinin çalışabilmesi için sözgelimi Excel ayarında bir program yazdırtmak pek akıl kârı olmasa gerek.
Bu noktada çeşitli firmalar ISAPI benzeri “yorumlayıcılar” geliştirerek, düz yazı bir Script yazmakla ve bu Script’in içindeki komutları Server programına icra ettirmekle, Web tasarımcısının hayatını çok kolaylaştırabileceklerini gördüler. Microsoft’un bu noktadaki çözümü ASP oldu. Yani bir bakıma “Server’a Aktif Sayfalar sunma” teknolojisi! NetObjects firması kendi Server Extension’larını geliştirdi. Linux-Unix dünyasında bir başka grup PHP dilinden yararlanarak PHP Sayfaları sistemini geliştirdi. Bunlardan sadece MS’un ASP teknolojisi birden fazla dil ile Script kabul edebilen teknoloji olarak, diğerlerinden ayrıldı. Bu noktaya birazdan geleceğiz; ama önce “ASP nasıl çalışır?” sorusunun üzerinde duralım.
Ama önce biraz başa dönelim: Siz Web ziyaretçisi olarak Browser’ınızın URL hanesine bir HTML sayfasının Internet yolunu ve adını yazıp (örneğin, http://www.pclife.com.tr/index.htm) Git düğmesini tıkladığınızda veya klavyede Enter/Return tuşuna bastığınız zaman ne olur? Web Server, Internet’in bulutları arasından geçip kendisine gelen bu istem üzerine, index.htm’i bulur ve yine aynı bulutların arasından sizin blgisayarınıza kadar gönderir. ASP teknoloji ile üreteceğiniz sayfanın adının uzatması ise .asp şeklinde olur. Siz bu kez URL hanesine bu dosyanın adını (örneğin http://www.pclife.com.tr/index.asp) yazarsınız. Bu durumda Web Server, bu sayfayı alıp, doğruca size göndermez: önce içindeki kodları icra eder. Sonra bu kodları ayıklar ve geriye saf ve temiz HTML kalır. Ve bu sayfa, bizim Browser’ımıza gönderilir.
Yukarıdaki son üç cümleyi lütfen yeniden okur musunuz? Nelere dikkat ettiniz:
1. ASP sayfasının içinde kod vardır.
2. ASP sayfasının kodları Web Server tarafından icra edilir.
3. ASP sayfası, Browser’a salt HTML olarak gelir.
Şimdi burada ASP ile Javascript’in farkını görebiliyor musunuz? Javascript, HTML’in içine konuluyor; ama Server’da değil, Browser’da çalışıyor. Peki CGI/Perl programı ile ASP’nin farkını görebiliyor musunuz? HTML sayfasını Perl ile yazdığınız program üretiyor (print “<HTML>\n”; kodunu hatırlıyor musunuz?); oysa ASP’de ziyaretçiye gidecek HTML’i Server ve tasarımcı birlikte üretiyorsunuz. Bu bakımdan, Javascript “istemci-tarafında” çalışırken, ASP, CGI programları gibi, “sunucu-tarafında” çalışır. Bunun sonucu ise ASP ile yazacağınız sayfaların, ziyaretçinin bilgisayarında kurulu Browser programı ne olursa olsun (Netscape Navigator, Opera, Amaya, Internet Explorer), mutlaka görüntülenecek olmasıdır. ASP sayfalarınıza koyacağınız VBScript kodları Server’da icra edileceği için, ziyaretçinin Browser’ının örneğin VBScript’i tanımayan Netscape olması, sizi hiç etkilemeyecek. Bununla birlikte ASP yoluyla üreteceğiniz sayfalarda yer alacak dinamik HTML kodlarının, her Browser’da mutlaka arzu ettiğiniz gibi yorumlanmayacağını unutmamalısınız.
Peki, ASP’nin içinde HTML ile kod yan yanadır, dedik. Nedir bu kodlar? Hangi dille yazılır? ASP yoluyla Web Server’a vereceğiniz komutları içeren bu kodlar, tabir yerinde ise, “arzu ettiğiniz bir Script dili ile” yazılabilir. Bu VBScript olabilir; Javascript veya Jscript olabilir; hatta, MS’un yeni teknolojisi olan Windows Scripting Host ile uyumlu olmak koşuluyla, kendi Script dilinizi icad edip, bunu Web Server’a öğretecek plug-in (ek program) geliştirebilirsiniz. İlk dönemlerinde ASP kodlarını VBScript ile yazmak adeta şarttı. Giderek daha çok kaynakta ASP’nin Javascript ile yazıldığını görüyorum. Fakat BT gibi sürekli gelişen ve yenilenen bir alanda, Web tasarımcısın yeni bir dille tanışmasına imkan sağlamak için bu kitapçıkta kodlarımızı VBScript ile yazacağız; dolayısıyla kitapçığın büyükçe bir bölümü VBScript’e ayrılacak.
Şimdi kolları sıvayıp; işe başlıyoruz. Bir dizinin sonu olan bu kitapçığı, Kroninukus computerium’a adıyorum. Sadece BT alanında değil, tüm yaşamında yolun açık ve aydınlık olsun. Bu eğitime birlikte başladığımızda “bilgisayar hastası” idin; eğer şimdi “usta bir bilgisayar hastası” olmanı sağlayabildimse, ben görevimi yerine getirmiş sayılırım. Bundan sonra sıra sende. Şimdi yardım edecek olan sensin. Bu yardımı kimseden esirgeme. Kim olduğunu ve işlevini daima hatırla. Kalbinde duyduğun çağrıya her zaman kulak ver.
Örnek Kodlar
İki kitapçıktan oluşan ASP rehberinin bütün örnek kodları ve veritabanı dosyaları, http://www.pclife.com.tr/......... adresinden edinilebilir. Ancak ASP öğrenirken örnek kodları kendiniz yazmalısınız. Kodlamanın incelikleri ancak kodları siz yazarsanız öğrenilebilir. Bu örneklerden sadece kendi yazdığınız kodlar hata verdiği ve hatayı bulmaktan güçlük çektiğiniz zaman, karşılaştırma amacıyla yararlanmalısınız.
Teşekkürler
Bu kitapçıktaki kodların değişik ortamlarda sınanması için için bana yardımcı olan dilini ve yazımını denetleyen dostlarım Mustafa Durcan, Osman Nuri Hömek ve Armağan Ergon’a teşekkür ederim. Varolan hatalar elbette bana aittir. Sevgili arkadaşım Mustafa Durcan’ın bütün dizinin gelişimine katkısını daima şükranla hatırlayacağım.
ASP’ye Giriş
Bir HTML sayfayı sınamak için sadece Browser programına ihtiyacınız var; bir HTML belgesini iki kere tıkladığınızda varsayılan Browser açılacak ve bu sayfayı yorumlayarak, görüntüleyecektir. Fakat uzatması .asp olan bir dosyayı iki kere tıkladığınızda ya Windows size bu dosyayı hangi programla açmak istediğinizi soracak; ya da MS Visual Studio veya Adobe Photoshop çalışacaktır. Bilgisayarınızda MS Visual Studio programı kurulu ise, onun açılması normal: çünkü MS’un ASP dahil hemen hemen bütün Web tasarım araçları Visual Studio’nun üyesi. Photoshop ise renk paletlerini belirlemek üzere kullandığı dosyalara .asp uzatmasını veriyor. Bilgisayarınızda MS Visual Studio kurulu değilse, fakat Photoshop varsa, ASP dosyalarınızın simgesi Photoshop’a ait olacaktır.
MS Visual Studio’dan yararlanmıyorsanız, ASP dosyalarınızı, (herhangi bir klasörün Görünüm menüsünden Klasör Seçenekleri maddesini seçerek ve üçüncü sekme olan Dosya Türlerini tıkladıktan sonra ASP satırını işaretleyerek ve Düzenle düğmesine basarak) Not Defteri ile ilişkilendirmek en doğru yoldur. Bu, bu kitapçıktaki örnek ASP dosyalarını oluşturmak, düzenlemek, değiştirmek için kullanacağımız başlıca programın da herhangi bir düzyazı programı olduğu anlamına gelir. ASP üretim işini herhangi bir ortamda yapabilirsiniz. Bunun için bilgisayarınızda mutlaka Windows kurulu olması gerekmez. Fakat ASP dosyalarının çalışıp çalışmadığını sınamak için sayfalarınızı gerçek Web Server’a göndermeden önce kendi bilgisayarınızda çalıştırmanız gerekir. Bunu Kişisel Web Server (PWS) veya IIS ile yapacağız.
Kişisel Web Server Kuralım
Bilgisayarınız Windows 95, 98, NT4 WorkStation veya NT4 Server ile çalışıyorsa, sisteminize bir Web Server programını siz kurmak zorundasınız. Windows 2000 Professional veya Windows 2000 Server ise Kişisel Web Server programını kendiliğinden kurar. Windows 98’e bir kişisel Web Server kurmaya geçmeden önce bilgisayarımıza bir kimlik vermemiz gerekir: Bilgisayarım/Denetim Masası/Ağ’ı tıklayarak açacağınız diyalog kutusunda ikinci sekme olan Tanımlama’yı açın ve “Bilgisayar adı” kutusuna istediğiniz adı yazın. Bilgisayarı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 Personal (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 Access 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.
<asp0001.tif>
Kişisel Web Server kurulduktan sonra bilgisayarı yeniden başlatmak gerekir.
//////////////////////KUTU//////////////////
PWS Kurulurken Hata Verirse
Windows 98’e PWS kurarken, programın Microsoft Transaction Server bölümüne ilişkin sistem kayıtları yapılırken, iki hata mesajı ile karşılaşabilirsiniz (0x80004005 ve 0xfee662). Bu, orijinal Windows 98 CD-ROM’undaki PWS Kur programının, Windows Registry dosyasının büyük olması halinde hata vermesinden kaynaklanıyor. Böyle bir durumla karşılaşırsanız, Bilgisayarım/Denetim Masası/Program Ekle Kaldır aracılığıyla, Personel Web Server’ı kaldırın. Bilgisayar kapanıp açıldıktan sonra, Windows 98 CD-ROM’unda Add-ons/PWS dizinindeki bütün dosyaları, sabit diskinizde Temp dizinine kopyalayın. Sonra http://support.microsoft.com/support.../q246/0/81.asp adresinde “Download Mstsetup.dll” satırını tıklayın. Mssetup.exe adlı bir dosya bilgisayarınıza indirilince; bu dosyayı iki kere tıklayın ve dosyanın genişletileceği yer olarak C:\Temp’i gösterin; program Mstsetup.dll dosyasının değiştirilmesini isteyip istemediğinizi sorduğu zaman “Tamam”ı tıklayın. Şimdi, C:\Temp’deki Kur.exe (Windows CD-ROM’unuz İngilizce ise Setup.exe) programını iki kere tıklayın. PWS şimdi hatasız kurulacaktır.
///////////////////KUTU BİTTİ//////////////////////////////
Windows NT4.0 Workstation veya Server’a IIS4.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çenekği işaretleyin.
Windows 98’e Kişisel Web Server kurulduğunda Masaüstü’nde Yayımla (Publish) adlı bir simge belirecektir. NT sistemlerinde 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önetici’nin çeşitli bölümlerine gitmeniz için gereken gezinme simgelerini göreceksiniz. Şimdi, açılan ana pencerede iki unsura dikkat edin:
<asp002.tif>
1. Kişisel Web Server’ınızın adı. Bilgisayarınızın adı buraya Server adı olarak yazılmış olmalı. Biraz sonra, Internet’e koymadan önce sınayacağımız ASP sayfalarını çağırırken, Browser’ın adres kutusuna burada gördüğümüz adı yazacağız.
2. Kişisel Web Server’ın bilgisayarımızda sabit diskteki gerçek adresi. Bu, sizin Kişisel Web Server’ınızın kök (root) dizinidir. Bu genellikle C:\inetpub\wwwroot klasörüdür. Kişisel Web sitesi yaparsanız, sitenin gerektirdiği bütün dizinleriniz ve dosyalarınız burada gördüğünüz dizinin içinde olmalıdır. Yapacağımız ASP dosyalarını işte bu dizinin içine koyacağız.
Bunları bir kenara not ettikten sonra, soldaki araç çubuğunda Gelişmiş simgesini tıklayın; ortadaki pencerede sanal dizinlerinizi görüyorsunuz. Bunlardan Home’u seçin ve sağdaki “Özellikleri düzenle” düğmesini tıklayın.
<asp003.tif>
Ana dizinin okuma, yürütme ve makro erişim haklarının işaretli olmasına dikkat edin. İlerde kendinize Kişisel Web Server’ınızın kök dizininde yeni bir dizin oluşturursanız (örneğin “resimler” gibi) ve içine sitenizle ilgili dosyalar koyarsanız, Gelişmiş penceresinde Ekle düğmesini tıklayarak bu gerçek dizini de sitenin sanal 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 sistemlerine 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.
Bu noktada, ASP sayfalarınızı sınayacağınız bilgisayarda Microsoft Internet Explorer programının kurulu bulunmasının şart olmadığını hatırlatalım. ASP sayfalarınızı Netscape ile de sınayabilirsiniz.
Bir Örnek Yapalım
Şimdi ilk ASP sayfamızı yapalım ve bununla kişisel Web Server programının çalışıp çalışmadığını sınayalım. Buraya kadar anlamış olduğunuz gibi ASP sayfası da HTML gibi düz yazı dosyasıdır; dolayısıyla beğendiğiniz bir düz yazı programı ile ASP yazabilirsiniz. Şimdi açın en beğendiğiniz düz yazı programını ve başlayın yazmaya. Eğer kelime-işlemci kolayınıza gidiyorsa, dosyayı ASCII veya ANSI biçiminde kaydetmeyi unutmayın (10’ncu satırın sonunda nokta olduğuna dikkat edin):
<HTML>
<HEAD>
<TITLE>ASP ILE ILK SAYFA</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<H1><CENTER>Merhaba Dünya!</H1>
<H2>Bugün:
<% Response.Write(Date) %>.
</CENTER
</H2>
</BODY>
</HTML>
Bu dosyayı merhaba.asp adıyla kaydedin ve kendi bilgisayarınızda kişisel Web Server’da veya ISS’te sınayacaksanız, bu programları çalıştırın. Browser’ınızın URL hanesine, kişisel Server’ınızın adıyla birlikte dosyanın adını yazın; ve ilk ASP programınız dünyaya Merhaba desin.
<asp0004.tif>
////////KUTU///////////////////
Internet’te ASP
ASP teknolojisi ile oluşturduğunuz sayfaları, yani içinde ASP teknolojisinin gerektirdiği kodlar bulunan HTML dosyalarını, .asp uzatmasıyla kaydederiz. Bu dosyalar talep edildiğinde, Web Server programı, eğer ASP teknolojisini tanıyorsa, talep edilenin ASP sayfası olduğunu dosya adının uzatmasından anlar; ve bu sayfayı ziyaretçiye yollamadan önce kendisi işleme tabi tutar. ASP sayfamızdaki kodlar büyük bir ihtimalle bir takım dinamik işler yapacak, örneğin hesaplamalar, araştırmalar, veri tabanından veri çekme, dosya sisteminden dosya isteme gibi görevlerini yerine getirecek, ve ortaya çıkacak olan HTML dosyasını ziyaretçiye gönderecektir. Diyelim ki bu kitapçıktaki örnekleri yaptınız ve ücretsiz Site yeri edinmiş olduğunuz Hosting firmasının bilgisayarındaki sitenize yerleştirdiniz. Sonra Browser’ınızın URL hanesine bu ASP dosyasının adını yazdınız ve sayfayı talep ettiniz. Karşınıza, ya ASP sayfasının içindeki kodları görüntüleyen veya sadece sayfanın HTML unsurlarına yer veren bir sayfa geldi! Bu Server’ınızın ASP anlamadığını gösterir. ASP sayfalarınızı ASP-uyumlu Web sunucularında çalıştırabilirsiniz. Sitenizde ASP sayfaları bulunacaksa ve ücretli evsahibi firmalardan site alanı edinecekseniz, sunucunun ASP-uyumlu olmasına dikkat edin.
//////////////KUTU BITTI////////
Şimdi, ilk ASP’mizi çalıştırdığımıza göre, biraz teknikten söz edebiliriz. HTML’in ziyaretçinin bilgisayarında çalıştığını biliyorsunuz; istemci Browser, sizin URL hanesine adını yazdığınız HTML dosyasını yine adresteki sunucu Web Server’dan ister. Web Server da bu dosyayı bulur ve içinde kayıtlı resim ve diğer unsurlarla birlikte istek sahibine gönderir. Fakat kimi zaman Server’a bize sadece bir dosyayı göndermesini değil, fakat bu dosyanın içinde kayıtlı komutlar varsa onları icra etmesini de bildirebiliriz. Bunu yapmanın bir yolu CGI programlarıdır. Bir diğer yolu ise ASP’dir. Web Server, kendisinden bir ASP belgesi talep edildiğinde, kendi kendine “Dur bakalım! ASP istendiği zaman hemen alıp göndermek yok, önce bunu ASP.DLL programına gönderelim.. Ondan sonra işimize devam ederiz!” der.
<asp0005.tif>
ASP.DLL, kendisine bir .asp dosyasının geldiğini görünce, hemen ASP’lerin Anayasası olan global.asp’nin çalışıp çalışmadığına bakar. global.asa, tıpkı diğer ASP dosyaları gibi bir düz yazı dosyasıdır ve ASP programlarının çalışma koşullarını düzenleyen kuralları içerir. (Bu dosyayı sırası gelince ele alacağız.) Yukarıdaki örnekte gördüğümüz gibi ASP dosyası hem HTML kodları içerir, hem de içinde bir Script diliyle yazılmış kodlar vardır. ASP’ye “program” özelliği kazandıran bu Script dili ile yazılmış kodlardır. ASP.DLL, önce gelen .asp dosyasında hangi Script dilinin kullanıldığına bakar ve bunun için gerekli ortamı oluşturur; yani bu Script dilini yorumlayacak programı çalıştırır; bu program Script’i yorumlar ve icra edilecek komutları icra eder; ASP.DLL, icra edilen komutlar, işletim sisteminin yardımını istiyorsa (örneğin bir veritabanından veri çekmek gibi, veya dosya sistemine bir dosya açtırmak, yazdırmak, sildirmek gibi) bu yardımın edinilmesini de sağlar. Bütün bu işlerin sonunda sizin yazdığınız HTML kodlarına ek yapmak (örneğin bir tablonun içini, çekilen verilerle doldurmak veya dosya sisteminden edinilen bir dosyanın içeriğini sayfaya aktarmak gibi) gerekiyorsa bu ekleri ASP.DLL yapar.
ASP.DLL, kendisine sevk edilen dosyayı satır satır okur ve önce dosyadaki ASP kodlarının gerektirdiği HTML değerlerini bulur; yani önce ASP icra edilir, gereği yerine getirilir. Sonra HTML bölümleri ile birleştirilip sonuçta sunucuya saf ve temiz bir HTML sayfası gönderilir. Bu sayfanın içinde bir satır bile ASP kodu bulunmaz. Eğer sayfanıza ziyaretçinin Browser’ında çalışması amacıyla Javascript veya VBScript kodları koydu iseniz, elbette bu kodlar HTML’in parçası olarak ziyaretçiye gidecektir. Fakat giden sayfada artık ASP’ye ilişkin hiç bir şey kalmamış olacaktır.
Biliyorsunuz, mevcut sürümleri itibariyle Browser programları içinde Netscape VBScript dilini anlamaz. ASP sayfalarımızda istediğimiz Script dilini kullanabiliriz; VBScript de kullanabiliriz. Netscape’in VBScript anlamamasıyla, ASP sayfalarımızda VBScript kullanmamızın bir ilgisi yoktur; çünkü ASP sayfasının ortaya çıkartacağı HTML kodunda ASP dolasıyla VBScript bulunmayacaktır; dolayısıyla ASP sayfalarınız, Netscape tarafından da anlaşılıp, görüntülenebilecektir. Tabiî ortaya çıkacak HTML sayfasının Netscape tarafından arzu ettiğiniz gibi görüntülenebilmesi için Netscape’in anlayabildiği dinamik HTML unsurlarına yer verme zorunluğunuz hâlâ devam ediyor.
ASP tekniğinin nasıl çalıştığını anladığımıza göre şimdi biraz terminoloji serpiştirelim ki, Webmaster meslektaşlarınızla biraraya geldiğinizde, gerçekten ASP ile mesela Javascript arasındaki farkı bildiğiniz belli olsun. ASP bir Server-Side Script teknolojisidir. Internet’te istemci ile sunucu arasındaki çizginin sunucu tarafına Server-Side (Sunucu Tarafı), istemci tarafına da Client-Side (evet, doğru tahmin ettiniz: İstemci Tarafı) denir. Server-Side’da çalışan Script programları da “Server-Side Script” (Sunucu Tarafı Script’i) adını alır. Dolayısıyla şöyle bir sayfa yaparsanız (merhaba.htm), bu sayfada Client-Side Script teknolojisi kullanmış olursunuz:
<HTML>
<HEAD>
<TITLE>JavaScript ile Tarih</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>

<BODY BGCOLOR=WHITE>
<H1>Merhaba Dünya</H1>
<H2>Bugün:</H2>
<H3>
<SCRIPT LANGUAGE=JAVASCRIPT>
<!--
tarih = new Date();
document.write(tarih);
//-->
</SCRIPT>
.</H3>
</BODY>
</HTML>
HTML sayfanıza <SCRIPT>..</SCRIPT> etiketleri arasına yerleştireceğiniz bu kodun çalışması için Server’ın hiçbir şey yapması gerekmez; kodu Browser çalıştıracak ve günün tarihini size (Türkçeleştirmediğiniz için İngilizce olarak) bildirecektir. Şimdi, bir de Server tarafında çalışan Script içeren sayfaya örnek verelim (merhaba2.asp). Bu kodu yazarken kapanan Script etiketinden sonra nokta olduğuna dikkat edin:
<HTML>
<HEAD>
<TITLE>VBScript ile Tarih</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>

<BODY BGCOLOR=WHITE>
<H1>Merhaba Dünya</H1>
<H2>Bugün:</H2>
<H3>
<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
Response.write(Date)
</SCRIPT>.
</H3>
</BODY>
</HTML>
Bu sayfada kullandığınız Script’i VBScript ile yazdığınızı farkettiniz. Yani? Bu HTML sayfası, Netscape’de görüntülenemez! Hayıır. Görüntülenir, çünkü Script’i Netscape değil, Server çalıştıracak. Bunu <SCRIPT> etiketinin içindeki “RUNAT” özelliği ile belirtiyoruz. (“Run,” çalıştır; “at” ise “içinde, üzerinde” anlamına gelir. “RUNAT” “...de çalıştır” gibi bir anlama sahiptir.) Burada RUNAT’in karşısına yazdığımız SERVER ifadesi ile, Script’in Browser’a gönderilmeden önce Server’da çalıştırılmasını sağlıyoruz; Server’a “Bu Script’i Server’da Çalıştır!” demiş oluyoruz.
<asp0006.tif>
Netscape bu sayfayı görüntüleyecektir; ama galiba bir terslik var. merhaba.asp ile merhaba2.asp’nin ekran görüntülerini ve kodlarını karşılaştırırsanız, birinde noktanın olması gereken yerde olduğu halde diğerinde noktanın yanlış yerde olduğunu görüyoruz. Oysa iki kodu da karşılaştırırsanız, ikisinde de nokta işareti, kodun bittiği yerde yer alıyor. Yukarıda ASP’nin icrasında HTML sayfa Server’a verilmeden önce ASP.DLL tarafından içindeki ASP kodlarının icra edildiğini söylemiştik. Nitekim, burada gördüğünüz gibi, ASP.DLL, HTML sayfayı içinde Server’ın çalıştırması gereken bölümle birlikte Server’a gönderdi; Server kendisine gelen dosyada kendi icra etmesi gereken (RUNAT=SERVER özelliği verilmiş olan Script’i) bölümü icra etti ve sonucu Browser’a aktardı. Yani, Server’ın çalıştırdığı Script’in sonucu sayfaya ASP’den sonra eklendi. Dolayısıyla, nokta, yanlış yerde kaldı.
Bundan çıkartacağımız sonuç şu olacak: ASP sayfalarımıza, Browser, Server ve ASP.DLL tarafından çalıştırılacak kodları yerleştirirken, sırasına dikkat edeceğiz ve hangi sırada icra edilmelerini istiyorsak, o sırada koyacağız.
Server ile ASP.DLL’in ilişkisi sadece Script dilini çalıştırmaktan ibaret değildir. ASP, istemciden gelen HTTP İstemi (Request) ve HTTP’ye giden Karşılık (Response) unsurlarından tutun, ActiveX Data Objects (ADO, AcvtiveX Veri Nesneleri) aracılığıyla, işletim sisteminin sunacağı veritabanına erişim imkanını ve işletim sisteminin sunduğu dosya yönetimine kadar bir çok imkanı kullanır. Bu “imkanlar” ASP’nin eline geçtiği anda “nesne” (Object) sayılırlar Şimdi bu nesnelere biraz yakından bakabiliriz.
////////////////////////////KUTU//////////////////
ODBC İşliyor Mu?
Kolları sıvayıp, ASP’ye kodu yazmaya başlamadan önce yapmamız gereken bir iş daha var: ASP sayfaları geliştirme ortamımızda, ODBC (Open Database Connectivity, Açık Veritabanı Bağlantısı) olması gerekir.
Windows 98, 95 (OSR2) veya NT4.0 işletim sisteminizde Denetim Masası’nda ODBC, ODBC32 veya “ODBC Veri Kaynakları (32 Bit)” adlı bir simge görüyor olmalısınız. Bunu açın, Sistem DSN sekmesini ve açılan pencerede göreceğiniz Ekle düğmesini tıklayın. Buradaki Access, dBase, Excel, FoxPro, Paradox sürücüleri 4.00.3711.08 veya daha büyük mü? Değilse, Microsoft’un sitesinden (http://www.microsoft.com/data/download.htm) Microsoft Data Access Components (sürüm 2.1.1.3711.11 GA, 6.2 MB) güncelleme dosyasını indirin ve sisteminizi güncelleştirin. Windows 2000 kurulu sistemlerde bunu yapmaya gerek yok. Böylece sisteminiz, ilerde yazacağımız veri-yönlendirmeli Web uygulamaları için hazır hale gelmiş olacaktır.
////////////////KUTU BİTTİ////////////////
ASP’nin Unsurları
ASP tasarımcısı olarak, biz gerçekte ASP’nin Nesneleri ile birşeyler yaparız; başka bir deyişle ASP kodlarımız bu nesnelere yöneliktir, onları kullanma ve onlardan bir sonuç alma veya onlara bir sonuç aktarma amacına yöneliktir. ASP’nin Nesneleri altı grupta toplanır:
Application/Uygulama: Bir ASP sitesi, gerçekte bir Uygulama Programı olarak görülür. Bu, HTML/CGI geleneğine aşina tasarımcı için yeni bir kavram. ASP’yi icad edenler; bir ziyaretçi bir ASP sayfasından girerek, bir sitede surfing’e başladığında, onu bir programı işleten bilgisayar kullanıcısı olarak görüyorlar. Böylece, sitemiz, her ziyaretçinin karşısına çıktığında “bir program çalışmış” gibi sayılıyor. Bu yaklaşımın Web tasarımcısı olarak bize kazandırdığı imkanları ele alacağız.
Session/Oturum: Bir ziyaretçi sitemize geldiğinde, hangi sayfamızı talep ederse etsin, bu bağlantı ASP açısından bir oturum sayılır. Her oturumun belirli bir süre devam eden özellikleri, değişkenleri ve değerleri vardır. Site tasarımında oturum özelliklerinden geniş ölçüde yararlanacağız.
Request/Talep: Browser’dan Server’a ulaşan bütün bilgiler, Request (Talep) nesnesinin ögeleridir. Bu nesneyi kullanarak, istemciden gelen her türlü HTTP bilgisini kullanırız.
Response/Karşılık: Server’dan ziyaretçinin bilgisayarına gönderdiğimiz bütün bilgiler, çerezler (cookie) ve başlıklar (Header) Response (Karşılık) nesnesinin ögeleridir. Bu nesneyi kullanarak ziyaretçiye göndermek istediklerimizi göndeririz.
Server/Sunucu: ASP, Web Server programını bir nesne olarak ele alır ve onun bize sağladığı araçları ve imkanları kullanmamızı sağlar.
ObjectContext/Nesne Bağlamı: Microsoft’un Transaction Server (MTS) programının sunduğu hizmetlere erişmemizi sağlar. MTS, ASP sayfaları içinden, uygulama programlarından yararlanmamızı sağlar. ASP uzmanlığınızı ileri düzeylere ulaştırdığınız zaman MTS ve ObjectContext nesnesinden yararlanabilirsiniz.
ASP’nin Dili
ASP, bir teknolojidir. Kendi başına bir yazım kuralı yoktur. ASP tekniğini kullanabilmek için, ASP sayfasının talep edilmesi halinde ziyaretçiye gönderilmeden önce ASP.DLL’ye teslim edilmesi bu teknolojinin kullanılabilmesi için hemen hemen tek şarttır. Bunu, dosya uzantısını .asp yaparak sağlarız.
ASP.DLL ise, dünyada mevcut bütün Script dilleri ile verilecek komutları kabul edebilir. Sadece ASP.DLL’e sayfadaki kodların hangi dilde olduğunu söylemeniz gerekir. Bunu, ASP sayfasının birinci satırında yaparız. Örneğin ASP’ye VBScript dilini kullanmasını belirtmek için bu satırı şöyle yazarız:
<% @Language=VBScript %>
ASP sayfalarında genellikle VBScript, JavaScript ve JScript kullanılır. Ancak örneğin Perl dilinden türetilen PerlScript, PHP’den türetilen PHPScript de giderek ilgi çeken ASP dilleri arasına giriyor.
Bir ASP sayfası içinde farklı Script dilleri kullanılabilir.
Biz bu kitapçıkta örneklerimizi VBScript diliyle yazacağız.
VBScript’e Giriş
Bu kitapçıktaki örneklerimizi VBScript diliyle yazacağımıza göre, önce hızlı bir VBScript kursu görsek iyi olur. Visual Basic dilini biliyorsanız, VBScript biliyorsunuz sayılır. VBScript, güçlü bir dildir; ancak Netscape firmasının hiç bir zaman Browser’ında istemci tarafında çalıştırılabilecek diller arasında kabul etmemesi sebebiyle VBScript, Web’in istemci tarafında kendisinden bekleneni yapamadı. MS’un Browser’ı Internet Explorer ise VBScript ile yazacağınız İstemci-Tarafı kodları okuyabilir ve icra edebilir.
Ne var ki ASP kodlarımız hiç bir zaman ziyaretçinin Browser’ının yüzünü göremeyeceği ve sadece Server’da çalışacağı için Server’da VBScript desteği bulunduğu sürece, ASP sayfalarınızı VBScript ile yazabilirsiniz. Bir Server’da ASP desteği varsa, VBScript desteği de var demektir.
VBScript’in hemen hemen bütün komutlarını ve yöntemlerini ASP’de kullanabilirsiniz. Ancak bunun bir kaç kısıtlaması vardır. VB veya VBScript’e ASP dışında aşina iseniz, mesaj kutusu (MsgBox) ve girdi kutusu (InputBox) aracılığı ile programlarınıza kullanıcının bilgi girmesini sağlayabileceğinizi biliyorsunuz demektir. Bu iki komutu ASP içindeki VBScript kodunda kullanamayız. Ayrıca ASP teknolojisi zaten VBScript’in bütün komutlarını ve deyimlerini kullanmanızı da gerekli kılmayacaktır. Göreceksiniz ki, mükemmel ASP sayfaları oluşturmak için bile bir avuç VBScript komutu kullanacağız.
ASP sayfalarımızdaki HTML kodları ile VBScript (veya diğer Script dillerinin) kodlarını birbirinden ayırmamız gerekir. Bu ASP.DLL’ye, HTML’in nerede bittiğini, Script diliyle yazılmış kodun nerede başladığını gösterebilmemiz için gerekli. Bunu sağlamak için Script diliyle yazılmış herşeyi “<%” ve “%>” işaretleri arasına alırız. ASP.DLL bu işaretleri görünce, içindekileri “yazmak” yerine “yapar.” Bir ASP sayfanızda HTML’in klasik “<” ve “>” işaretleri arasındaki unsurlar, ASP.DLL tarafından ziyaretçiye gönderilecek olan sayfaya aynen aktarılır; ancak “<%” ve “%>” arasındaki herşey, başta belirttiğiniz LANGUAGE etiketinde yazılı Script dilinin yorumlayıcısına verilir; yorumlatılarak, gereği yerine getirilir.
“<%” ve “%>” işaretlerine “sınırlayıcı” denir. Sınırlayıcının içinde bir veya daha çok satır kod bulunabilir. Sınırlayıcılar ve içindeki Script, HTML etiketlerinin içinde veya dışında yer alabilir. Sınırlayıcının içindeki kodlarımızı açıklamak için koyacağımız yorum satırlarının başına tek tırnak işareti (') koyarız. İşte bu kuralları uyguladığımız bir ASP sayfası örneği:
<% @LANGUAGE=VBscript %>
<html>
<head>
<title>Hoşgeldiniz!</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</head>

<body>
<center>

<%
' Yazı tipi boyutunu tutacağımız bir değişken tanımlayalım
Dim fontBoyut
%>

<%
' yazı tipi boyutunu 1'den 7'ye kadar değiştirelim
For fontBoyut = 1 To 7
%>
<font size = <%=fontBoyut%>>
Hoşgeldiniz!

<% Next %>
</center>
<h3>Bugün <% =WeekdayName(Weekday(Date)) %>, <% = Date %>.
Şu anda Server'da saat: <% = Time %>.


</h3>
</body>
</html>
Burada sınırlayıcı arasında tek veya çok satırlı VBScript kodları ile başında tek tırnak olan icra edilmeyen, yorum satırlarını görüyorsunuz. HTML etiketinin içine gömülmüş VBScript kodu ise HTML’in <FONT> etiketinde yer alıyor: <font size = <%=fontBoyut%>>. Burada karşılaştığımız “<%=” ifadesi, ASP’ye, “Bu değişkenin değerini bul ve tam buraya yaz!” dememizi sağlıyor. Bu ifade daha sonra yakından ele alacağımız Response.Write metodunun kısaltılmış halidir. HTML etiketinin içine yazdığımız VBScript bölümünün kendi sınırlayıcı işaretlerinin yine de kullanıldığına dikkat edin.
<asp0007.tif>
Bir iki yazım kuralı
VBScript komutları, anahtar kelimeleri ve değişken adlarının büyük harf-küçük harf olması önemli değildir. Yani yukarıdaki ifadelerden birini şu biçimlerden birinde yazabilirdik; kodumuz yine de çalışırdı:
For fontBoyut = 1 To 7
FOR FONTBOYUT = 1 TO 7
for fontboyut = 1 to 7
Fakat... Bu demek değildir ki, VBScript ile kodlamanın kendi gelenekleri yok! VBScript’çiler genellikle komutların birinci harfini büyük yaparlar: For gibi. Değişken adlarında ise kendinize anlamlı gelen bir biçim tutturabilir ve öyle devam edebilirsiniz.
Eğer bir kod satırı çok uzun geliyor ve daha sonra anlaşılması imkansız derecede uzuyorsa, bu satırı alt çizgi (_) ile aşağı satırda devam ettirebilirsiniz. Örnek:
<%
If degisken1 > 1 And _
değisken1 < 10 Then
%>
Değişkenler
Programcılıkta işlemlerimizi değişkenlerle yaparız. değişkeni bir kap gibi düşünebilirsiniz. Sözgelimi “Gün,” değişkenin adı ise bu değişkenin değeri Pazar, Pazartesi, Salı, vd., olabilir. Her değişken, türüne göre, ya bir ya da daha fazla değer tutar. Adından da anlaşılacağı gibi değişkenin değeri değişir! Bu değişikliği biz yapabiliriz; programın kendisi yapabilir.
VBScript’te, bir çok başka bilgisayar programlama dilinden farklı olarak değişkenlerin tanımlanması veya “beyan edilmesi,” “boyutlandırılması” gerekmez. Belirtilmemiş, önceden tanımlanmamış bir değişkene değer atamaya kalkarsanız, VBScript bunu mükemmel şekilde kabul eder. Fakat bu kötü bir programcılıktır. İyi programcılık değişkenlerin önceden beyan edilmesini gerektirir. Bunu DIM komutuyla yaparız. DIM, Dimension (boyutlandır) kelimesinden kısaltılmıştır. Pek akıllıca görünmese de bu komut, bilgisayarın değişken yeri olarak bir bellek alanının boyutunu belirtmesini sağlar. Örnekler:
<%
DIM Gun, Ay, Ogrenci, Not
Gun = “Pazartesi”
Ay = “Ocak”
Ogrenci = “Necip”
Not = 5
%>
Şimdi burada Gun, Ay, Ogrenci, Not adıyla dört değişken oluşturduğumuzu ve bunlara sırasıyla “Pazartesi,” “Ocak,” “Necip” ve “5” değerlerini atadığımızı görüyorsunuz. Bu noktada VBScript yorumlayıcısına sorsanız, “Peki, söyle bakalım, Gun değişkeninin değeri nedir?” diye, yorumlayıcı size “Bunu bilmeyecek ne var? Elbette Pazartesi’dir!” derdi. Belki bu noktada siz de kendi kendinize “Pazartesi, Ocak ve Necip kelimeleri tırnak içinde iken, acaba 5 rakamı neden tırnak içinde değil?” diye soruyorsunuz. Güzel soru. Ama cevabı için biraz bekleyeceksiniz.
Değişken isimleri, mutlaka harfle başlamalıdır; içinde noktalama işaretleri bulunamaz ve uzunluğu 255 karakteri geçemez.
////////////////KUTU////////////
Kötü programcılığı önlemek için!
Değişkenleri tanımlamadan kullanmak “kötü programcılıktır” demek, ilerde kendi başınıza elinizle program hatası getirirsiniz demektir. Daha sonra örneklerini göreceğiz; ASP, sitemize giren bir ziyaretçiye bir oturum (Session) açar ve bazı değişkenleri oturum boyunca aklında tutar. Bir sayfada kullandığınız bir değişkeni, daha sonraki sayfada kullanabilmek için, bu değişkenin değerinin yeni sayfada değişmemesi gerekir. ASP programı yazarken, bazen gelişi-güzel değişkenlere değer atayabilirsiniz. Neden? O anda aklınıza değişken adı olacak kelime gelmediği için! Bu değişken adını daha önce kullanmışsanız ve içinde biraz sonra kullanacağınız bir değer varsa, değer değiştirilmiş olacaktır. VBScript, savurgan ve dağınık programcılığı önlemek için OPTION EXPLICIT imkanını verir. Bir ASP sayfasının birinci satırı olarak
<% OPTION EXPLICIT %>
yazarsanız VBScript DIM komutuyla belirlenmemiş değişken kullanmanıza izin vermez; kullanırsanız hata verir ve durur.
Bu ifadenin işinize çok yarayacağı bir diğer nokta, kodda değişken adını yazarken hata yapmanızı önlemektir. VBScript sizin hata yaptığınızı bilemeyeceği için yanlış kelimeyi yeni bir değişken sayacaktır. Değer atamadığınız bu yeni değişkeni kullandığınız yerlerde ya programınız hata verir, ya da kendisine doğru görünen işlemler yapar, fakat beklediğiniz sonucu elde edemezsiniz. OPTION EXPLICIT, yanlış yazdığınız değişkeni yeni değişken sayarak önceden tanımlanmamış değişken kullandığınızı düşünerek, duracaktır.
///////////////////////KUTU BİTTİ/////////////
Peki, şöyle bir değişken tanımlama acaba ortaya nasıl bir değişken çıkartır:
<%
DIM Gunler(31), Aylar(12), Ogrenciler(210), Notlar(10)
%>
Bu yöntemle oluşturduğumuz kodlarla elde edilecek “kaplar,” birden fazla değer tutabilir. Yani:
<%
DIM Gunler(7), Aylar(12), Ogrenciler(21), Notlar(10)
Gunler(1) = “Pazartesi”
Aylar(3) = “Mart”
Ogrenciler(12) = “Necip”
Notlar(5) = 5
%>
Bu durumda içinde 7 ayrı değişken tutabilecek olan Günler değişkeninin 1 numaralı olanının değeri “Pazartesi,” 12 değer tutabilecek olan Aylar değişkeninin 3 numaralı olanının değeri “Mart,” 21 ayrı değer tutabilecek olan Ogrenciler değişkeninin 12 numaralı olanının değeri “Necip” ve nihayet 10 ayrı değer tutabilecek olan Notlar değişkeninin 5 numaralı olanının değeri ise 5 olacaktır. Böyle, birden fazla değer tutabilen değişkenlere Dizi Değişken veya Array denir.
//////KUTU////
Array Fonksiyonu
VBScript’in kullanılmaya hazır bir çok fonksiyonu vardır; bunlardan biri olan Array ile, kolayca dizi değişken oluşturabiliriz.
Diyelim ki, Gunler(7) dizi-değişkenini gün adları ile doldurarak oluşturmak istiyoruz:
<%
Dim Gunler = Array (“Pazartesi” , “Salı” , “Çarşamba” , “Perşembe” , “Cuma” , “Cumartesi”, “Pazar”)
%>
ile hem dizi-değişkeni oluşturabiliriz; hem de değerlerini atayabiliriz.
Bu suretle oluşturduğumuz dizi değişkenin üyelerine daha sonra sıra numaraları ile atıfta bulunabilirsiniz. Örneğin:
<%=Gunler(6)%>
bize Pazar’ı verir. Neden? Çünkü hayatlarının büyük bölümünü penceresiz ortamlarda geçiren kişiler olan dil tasarımcıları, sayı saymaya biz normal insanlar gibi 1’den değil 0’dan başlarlar; dolayısıyla Gunler dizi-değişkeni Gunler(0)’dan başlar!
/////////////////KUTU BİTTİ///////////////
Şimdi, aklınıza şu soru gelebilir: Dizi değişken oluşturacağımıza, neden “ogrenci1,” “ogrenci2,” “ogrenci3” diye değişkenler oluşturmuyoruz ve bunlara değerler atamıyoruz? Kötü soru! Dolayısıyla cevabını hemen verelim. Dizi değişkenlerde bir değişkene numarasıyla atıfta bulunabilirsiniz. Ve numara yerine bir başka değişkeni kullanabilirsiniz. Örneğin, OgrenciNo değişkeninizin değeri 12 ise
<%
....
If Ogrenciler(OgrenciNo) = “Necip”
...
%>
şeklinde bir döngü ile aradığınız öğrencinin Necip olup olmadığını sınayabiliriz. (Döngülere birazdan geliyoruz!)
Başka programlama dillerine özellikle Visual Basic’e aşina olanların aklına şöyle bir soru gelebilir: VBScript’te değişkenin metin mi, sayı mı olduğunu ayırt etmiyor muyuz? Başka programlama dillerinde bir değişkenin değeri harf ve rakamlardan oluşuyorsa, yani matematik işlem yapmaya elverişli değilse bunlara String (Alfanümerik, karakter değerler) denir. Programlama dillerinde bir de matematik işlem yapmaya elverişli değişken türü vardır: Sayı (Number). VBScript, bir değişkene alfanümerik (karakter, metin) olarak atadığınız değeri çift tırnak içine almanızı ister. Sözgelimi Ogrenci(12) değişkeni için Necip değerini atamak istiyorsunuz: Necip kelimesini çift tırnak içine almak zorundasınız. Sayı olarak kullanacağınız değerleri ise tırnak içine almazsınız. (Sayı olarak kullanacağınız değerlerin sadece rakam olabileceğini söylemek gerekmez!) Fakat, işleri karıştıran nokta, VBScript açısından değişken türü diye bir şey olmamasıdır. Visual Basic, küçültülüp Script dili haline getirilirken, değişken türü özelliği alınmayınca, ortaya işleri karıştıran (veya kolaylaştıran) böyle bir durum çıkmış bulunuyor. Karışıklık, çift tırnak içinde verdiğiniz bir değeri matematik işlemde kullanmaya kalktığınızda karşınıza çıkabilir. Rakam olmayan bir karakter-dizisini bir değişkene tırnaksız olarak atadığınızda VBScript “tanımsız değişken” vermeye kalktığınızı söyleyerek, duracaktır.
VBScript’in bu eksikliğini gidermek için bazı ASP programcıları değişken adlarının önüne karakter-dizileri için “str” harflerini koyarlar: strAy, strOgrenciler, gibi.
İsterseniz, VBScript’in karakter-dizisi ve sayı değişkenleri nasıl ayırt ettiğini veya etmediğini bir kaç örnekle görelim. Şu kodu yazarak, çalıştırın:
<% Option Explicit %>
<HTML>
<%
Dim Degisken(2), Toplam
Degisken(1) = "Necip"
Degisken(2) = "Dayanır"
Toplam = degisken(1) + Degisken(2)
%>
<% =Toplam %>
</HTML>
Sonuç: “NecipDayanır” değil mi? (Arada boşluk olmamasına aldırmayın şimdilik!) Peki; şimdi Degisken(1) değeri olarak tırnak içine alarak 5, Degisken(2) değeri olarak yine tırnak içinde 10 yazın. Programı tekrar çalıştırın. Sonuç? 510!? Peki; tırnakları kaldırın 5 ve 10’un çevresinden. Sonuç? 15. Oh, neyse! Bir an için VBScript matematik bilmiyor sandık! Bu durum VBScript’in matematik bilgisinin kıtlığından değil, tırnak içindeki değerlerin, VBScript ayrım yapmıyor bile olsa, karakter-dizisi (String) iken toplama işleminde ard arda eklenmesinden (concatenate) kaynaklanıyor. Tırnakları kaldırdığınızda, VBScript bu değerlerin sayı olduğunu anladı ve doğru işlemi, yani toplama işlemini yaptı. Şimdi VBScript’in değişkenleri ele alış tarzını daha iyi kavramak için Degisken(1) değeri olarak tırnak işareti koymadan kendi adınızı, Degisken(2) değeri olarak da soyadınızı yazın ve programı çalıştırın. Ne sonuç aldınız?
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ğer 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 veri 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
Sabit Değerler
VBScript’te bir kere verdiğiniz değeri hiç değişmeyen unsurlar (değişken diyemezdik, değil mi?) vardır. Sabit değer, bütün ASP sayfası boyunca (hatta isterseniz, bütün site, yani Uygulama boyunca) değişmeden kalır. Bu değerleri Const (constant, sabit kelimesinden türetilme) komutuyla belirtiriz:
Const DolarDeger = 560780
Const SirketinAdi = “Web Tasarım ve Site Onarım A.Ş.”
Const Slogan = “Siteler ve Kırık Kalpler Onarılır”
VBScript’te İşlemciler (Operatörler)
Bilgisayar Operatörü ile program Operatörü arasında fazla bir fark yoktur. Her ikisi de verdiğiniz değerleri ya karşılaştırır bir sonuç bulurlar; ya da bu değerlerle aritmetik işler yapar ve bir sonuç ortaya çıkartırlar. Bilgisayar Operatörü daha sonra bu iş için sizden para ister; program operatörü istemez! VBScript’in operatörleri ve yaptıkları işler şöyle sıralanır:
Operatör İşlev Sınıfı
+ Toplama Aritmetik
- Çıkartma
* Ç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.
VBScript ile yazacağımız ASP sayfalarında bu işlemcileri beklediğimiz sonucu verebilmesi için kullanım sıraları önemlidir. Bunu bir örnekle açıklayalım. 100’den 6’yı çıkarmak ve sonucu 2’ye bölmek istiyorsunuz; sonuç 47 olacaktır. Yani: 100-6/2. Değil mi? Bu işlemin VBScript’teki sonucu 97 olacaktır. Çünkü, VBScript önce 6’yı 2’ye bölecek ve elde ettiği sonucu 100’den çıkartacaktır. VBScript’te, aritmetik işlemlerin yapılma sırası şöyledir:
Operatör İşlev Öncelik
+ Toplama 3
- Çıkartma 3
* Çarpma 2
/ Bölme 2
^ Üssünü alma 1
VBScript ile hesap işlemi yaparken, aritmetik işlem sırasını karıştırarak hatalı sonuç almamak için sık sık parantez kullanmak yerinde olur. Yukarıdaki örnek şöyle yazılabilirdi: (100-6)/2. Tabii amacınız 100’ü 6/2’ye bölmek ise bu işlemi şöyle yazmalısınız: 100-(6/2).
VBScript’de Program Kontrolü
İster Script diliyle, ister gerçek programlama diliyle yazılsın, bir bilgisayar programının varlık sebebi, çeşitli durumları değerlendirerek, belirli durumlarda belirli kararlar verebilmesidir. Bunu programın kontrol öğelerini kullanarak yaparız. Programlar, bu öğeler sayesinde karşılaştırma yaparlar; belirli durumların oluşup oluşmadığını sınarlar; veya belirli bir durumun oluşmasına veya sona ermesine bağlı olarak bir iş yaparlar veya yapmazlar. Bunu sınamalarla (koşullu ifadelerle) veya döngülerle sağlarız. Kimi zaman da, programa (programın mantığı çerçevesinde) istediğimiz anda yapmakta olduğu işi durdurarak, başka bir işi yapmasını bildirebiliriz. Bunlara da Süreçler (veya Prosedürler) denir. (Adındaki Basic’e bakarak, VBScript’i basit bir dil sanmıyordunuz, umarım!)
Mantıksal Sınamalar
VBScript’te programın karar vermesini sağlayan ilk kontrol ögesini “eğer ... ise... yap!” şeklinde özetleyebiliriz. VBScript bu işlemi iki ayrı ifadeyle yaparız:
If.. Else
VBScript’in vereceğiniz bir durumun bulunup bulunmadığını sınamasını sağlar. Genel 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
Bunu bir örnekle ifade edelim: Eğer saat 12’den önce ise sayfaya “Günaydın” yazdır; saat 12’den sonra ise “Tünaydın” yazdır.
Fakat burada bir eksiklik var: Saat 18’den sonra ise sayfaya “İyi akşamlar!” yazdırmamız daha doğru olmaz mı? If döngüsü kendi içinde sınırsız Elseif (ikinci şartlı döngü) imkanı vererek bize bunu sağlar. Her Elseif’i yeni bir If gibi düşünebilirsiniz. İşte şu senaryoyu gerçekleştirecek kod örneği (hosgeldiniz01.asp):
<HTML>
<HEAD>
<TITLE>ASP ILE SAATE GORE SELAM</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<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 "
"
Response.Write "Site Onarım Sitesine Hoşgeldiniz"
%>
</CENTER>
</H2>
</BODY>
</HTML>
Bu programı çalıştırdığınız zaman, çalıştırdığınız saate göre sayfadaki selamın değiştiğini göreceksiniz. (Bu örnekte, sadece şartlı döngü işlemi yapmıyoruz; fakat aynı zamanda Hour(Now) fonksiyonu ile tanışıyoruz ve sayfadaki bütün unsurları ASP yöntemiyle yazdırıyoruz! Fakat şimdilik bu iki unsurun üzerinde de durmayın.) Programımız nasıl çalışıyor? Yukarıda başka vesile ile VBScript’in kullanılmaya hazır fonksiyonları vardır, demiştik. Bunlardan biri de o andaki saati ve tarihi bildiren Now() fonksiyonudur. Bu fonksiyondan dönen değerle bu andaki saati öğreniyoruz; ve bunu önce 12 ile karşılaştırıyoruz. Fonksiyondan dönen değer, eğer 12’den küçükse, programımız Response (Karşılık) Nesnesi’nin .Write Metodu’nu kullanarak (Nesneler ve Metodlar meselesi üzerinde de durmayın!) ziyaretçinin Browser penceresine “Günaydın” yazdırıyor.
////////////KUTU////////////
Dönen Değer
Fonksiyonlar, kendilerini göreve çağıran VBScript komutlarına ve işlemlerine bir değer sunarak karşılık verirler. Buna fonksiyondan dönen değer denir. Yani diyelim ki Now() fonksiyonunu göreve çağırdınız. Bu fonksiyon derhal işletim sisteminden saati ve tarihi öğrenerek kendisini göreve çağıran işleme bildirir. Daha sonra VBScript’in kullanılmaya hazır diğer bir çok fonksiyonunu kullanacağız ve kendi fonksiyonlarımızı yazacağız. Ne zaman bir fonksiyona bir noktada atıf yaparsak, o noktaya fonksiyon tarafından bir değer getirileceğini bimemiz gerekir.
////////////////KUTU BİTTİ////////
Eğer bu ilk sınamanın sonucu doğru değilse, VBScript If satırından sonraki birinci deyimi atlayacak ve ikinci deyimi icra edecektir. Yani eğer saat 12’den küçük değilse, ElseIf satırı icra edilecektir. ElseIf de tıpkı If gibi işlediği için bu kez yeni bir sınav yapılacak ve saatin 18’e eşit veya büyük olup olmadığı sınanacaktır. Eğer saat 18’e eşit veya büyükse, (sınav sonucu doğru ise) ilk satır icra edilecek ve ziyaretçinin Browser penceresine “İyi akşamlar!” yazdırılacaktır. Eğer bu sınavın sonucu da doğru değilse, ElseIf’in ikinci satırı icra edilecektir. Bu satırda ise Else bulunuyor. Else, If ve ElseIf gibi sınav yapmaz; ne olursa olsun, kendisinden sonra gelen deyimi yerine getirir. Yani saat 12’den küçük değilse, 18’den küçük veya 18’e eşit değilse, yani 12 ile 17 arasında ise, ekrana “Tünaydın” yazılacaktır.
Select Case
VBScript’in bir diğer duruma bakarak karar verme ifadesi, Select Case (Durum Seç) yapısıdır. Bu kontrol öğesinin nasıl çalıştığını şöyle özetleyebiliriz:
Durum Seç (Durumların listesi veya durumları belirten bir değişken)
Durum 1 : Yapılacak işler
Durum 2: Yapılacak işler
Durum 3: Yapılacak işler
Durum n: Yapılacak işler
Seçmeyi Bitir
VBScript, verdiğiniz durum listesine veya içinde çeşitli değerler bulunan değişkene bakarak, bu değişkenin her bir değerini bir “durum” sayacak ve verdiğiniz durumlardan hangisini tutuyorsa, ona ait komut dizisini icra edecektir. Yukarıdaki sayfamızı bu kez bu yapıyı kullanarak yazalım (hosgeldiniz02.asp):
<HTML>
<HEAD>
<TITLE>ASP ILE SAATE GÖRE SELAM</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<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 "
"
Response.Write "Site Onarım Sitesine Hoşgeldiniz"
%>
</CENTER>
</H2>
</BODY>
</HTML>
Select Case komutuna, içindeki değerleri “durum” sayacağı dizi veya değişken olarak VBScript’in kullanılmaya hazır fonksiyonlarından Hour(Now)’ı veriyoruz. Bu fonksiyondan, 0 ile 24 arasında bir değer dönecektir. Bu değer Select Case için bir durum demektir. Select Case, bu değer ile altta sıralanan Case’leri karşılaştıracak ve elindeki değer hangi Case’i tutuyorsa ona ait komutları icra edecektir. Sonuncu Case’e lütfen dikkat edin: Burada Case olarak Else (başka) veriliyor. Bu bizi, 17’den 23’e kadar olan saatleri sıralamaktan kurtarır. 0’dan 11’e kadar olan saatlerle 12’den 17’ye kadar olan saatleri sıraladığımıza göre başka hangi saat olursa olsun, ziyaretçimize “İyi akşamlar!” dileyebiliriz. Eğer 24’den sonra ve 04’den önce ziyaretçinize “İyi geceler!” dilemek isterseniz, bu programı nasıl değiştirirdiniz?
Döngüler
Sınama bir programın akışını kontrol için kullanacağımız birinci en önemli unsur ise, döngü de ikinci en önemli unsur sayılır. Hatta programcının tembellik katsayısına göre, belki de birinci en önemli unsuru bile sayılabilir! Çünkü Döngü (Loop) programa, bir işi biteviye yaptırmaya yarar. Tabiî bu iş sonsuza kadar sürecek olursa, buna Endless Loop (Sonsuz Döngü) denir; en iyi program ve Windows dondurma yöntemidir! VBScript’te kullanabileceğimiz döngü yöntemleri şunlardır:
For..Next döngüsü
Programın bir işi belirli kere yapmasını istiyorsak, ona yapacağı işi bir sayaç değişkeniyle birlikte, For döngüsüyle bildiririz:
For sayaç = başlangıç To son Step adım
yapılacak işler
Next
Burada, “sayaç” yerine istediğiniz bir değişken adını, “başlangıç” yerine sayacın başlamasını istediğiniz sayıyı, “son” yerine sayacın durmasını istediğiniz sayıyı, ve “adım” yerine, sayacın kaçar-kaçar artmasını istediğinizi yazabilirsiniz. En sondaki Next deyimi ise döngünün bir sonraki adıma geçmesini sağlar. Bu adımda sayaç, Step kelimesi varsa, karşısındaki değer kadar arttırılır ve yapılacak işler yeniden yapılır. Bir örnek yapalım (gunler.asp):
<HTML>
<HEAD>
<TITLE>ASP ILE GÜNLERI SAYMA</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<H2>
<CENTER>
<%
Dim Gunler
Gunler = Array("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar")
For sayac = 0 to 6
Response.Write Gunler(sayac)
Response.Write "
"
Next
%>
</CENTER>
</H2>
</BODY>
</HTML>
Bu ASP kodunda, Gunler adıyla bir dizi-değişken oluşturuyoruz ve bu değişkenin yedi hanesine, günlerin adlarını atıyoruz. Sonra, sayac adlı sayacı 0’dan 6’ya kadar arttırıyoruz (Bir sayaç birer birer artsın istersek, Step bölümüne adım sayısı yazmayız). Şimdi kendimizi bir an için VBScript’in yerine koyalım ve birinci adımda yapacağımız işi düşünelim: “Hmm.. Programcı bey, benim sayac’ı önce 0 yapmamı istiyor; peki sayac 0 olsun. Sonra, Gunler dizi-değişkeninden sayaç değeri ile aynı sayıyı taşıyan değişkeni alıp, bunu ziyaretçinin Browser’ına yazmamı istiyor. Peki, Gunler(0) ne imiş, bakalım. Hmm Gunler(0) Pazartesi imiş. o halde ziyaretçinin ekranına bir Pazartesi kelimesi yazalım. Sonra bir de
kodu yazmamı istiyor. Onu da yazalım.. Şimdi, sırada Next var. Yani bir sonraki adıma devam edeceğiz. Step değeri olmadığına göre sayacı bir arttırayım. Sayaç böylece 1 oldu. ...”
Ve böylece VBScript, sayacın son değeri olan 6’ya ulaşıncaya kadar, biteviye Gunler dizi-değişkeninden sayacın değerine göre değer seçerek ve bunu ekrana yazdırarak, işini yapacaktır. Bu bakımdan VBScript, güvenilir ve çalışkan bir arkadaştır!
While...Wend
Ne var ki, program mantığı bazen bize böyle açık ve seçik bir sayaç kurma imkanı vermez. Sayaç olarak kullanacağımız değer, programın başka bir bölümü tarafından üretiliyor olabilir. Veya bu değer ziyaretçi tarafından belirlenmiş olabilir. Özetle yapılmasını arzu ettiğimiz işin ancak sayaç bir değerden azsa, çoksa veya eşitse yapılmasını, bu durum değişirse durmasını isteyebiliriz. Bu