• Merhaba Ziyaretçi.
    "Hoşgeldin sonbahar "
    konulu resim yarışması başladı. İlgili konuya BURADAN ulaşabilirsiniz. Sizi de beğendiğiniz 2 resmi oylamanız için bekliyoruz...

Asp'ye Giriş

yesim434

Hırçın Karadeniz Kızı Biricik Yeşim
AdminE
PWS Kurulumu

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.

Not: Kişisel Web Server kurulduktan sonra bilgisayarı yeniden başlatmak gerekir.
 
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 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.

pws1.gif

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:

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:inetpubwwwroot 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.

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.
 
Son düzenleme:
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.

Merhaba.asp
Kod:
<% @ Language = VBScript %>
<HTML>
<HEAD>
    <TITLE>ASP İLE İLK SAYFA ; MERHABA </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>
<H1> <% Response.Write("Merhaba Dünya..!") %> </H1 >
<BR>
<H2> Bugün:<%= Date %> </H2>
</CENTER>
</BODY>
</HTML>[COLOR=blue]
[/COLOR]

Ekran Görüntüsü:
merhaba-asp.webp

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.
 
Internet’te ASP

ASP teknolojisi ile olusturduğ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 isleme tabi tutar.

ASP sayfamızdaki kodlar büyük bir ihtimalle bir takım dinamik isler yapacak, örneğin hesaplamalar, arastı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 edinmis olduğunuz Hosting firmasının bilgisayarındaki sitenize yerlestirdiniz. Sonra Browser’ınızın URL hanesine bu ASP dosyasının adını yazdınız ve sayfayı talep ettiniz.

Karsı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 çalstırabilirsiniz. Sitenizde ASP sayfaları bulunacaksa ve ücretli evsahibi firmalardan site alanı edinecekseniz, sunucunun ASP-uyumlu olmasına dikkat edin.

Simdi, ilk ASP’mizi çalıştırdığımıza göre, biraz teknikten söz edebiliriz.

HTML’in ziyaretçinin bilgisayarında çalstığı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 isimize devam ederiz!” der.

ASP.DLL, kendisine bir .asp dosyasının geldiğini görünce, hemen ASP’lerin Anayasası olan global.asp’nin çalisıp çalismadığına bakar. global.asa, tıpkı diğer ASP dosyaları gibi bir düz yazı dosyasıdır ve ASP programlarının çalisma kosulları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&thorn; kodlar vardır. ASP’ye “program” özelliği kazandıran bu Script dili ile yazılm&thorn; kodlardır. ASP.DLL, önce gelen .asp dosyasında hangi Script dilinin kullanıldığına bakar ve bunun için gerekli ortamı olusturur; yani bu Script dilini yorumlayacak programı çalstırır; bu program Script’i yorumlar ve icra edilecek komutları icra eder; ASP.DLL, icra edilen komutlar, isletim 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 islerin 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 birlestirilip 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 çalsması 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 kalmams 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 anlası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 çalistığını anladığımıza göre Simdi biraz terminoloji serpistirelim ki, Webmaster meslektasları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 çalisan Script programları da “Server-Side Script” (Sunucu Tarafı Script’i) adını alır. Dolayısıyla Söyle bir sayfa yaparsanız (merhaba.htm), bu sayfada Client-Side Script teknolojisi kullanmış olursunuz

Kod:
<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&thorn;tireceğiniz bu kodun çalisması için Server’ın hiçbir Sey yapması gerekmez; kodu Browser çalistıracak ve günün tarihini size (Türkçelestirmediğiniz için İngilizce olarak) bildirecektir. Simdi, bir de Server tarafında çallisan Script içeren sayfaya örnek verelim (merhaba2.asp). Bu kodu yazarken kapanan Script etiketinden sonra nokta olduğuna dikkat edin:

Kod:
<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 çalistıracak. Bunu <SCRIPT> etiketinin içindeki “RUNAT” özelliği ile belirtiyoruz. (“Run,” çal&thorn;tır; “at” ise “içinde, üzerinde” anlamına gelir. “RUNAT” “...de çalistır” gibi bir anlama sahiptir.) Burada RUNAT’in karsısına yazdığımız SERVER ifadesi ile, Script’in Browser’a gönderilmeden önce Server’da çalistırılmasını sağlıyoruz; Server’a “Bu Script’i Server’da Çalistır!” demis oluyoruz.

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ı karsılastırırsanız, birinde noktanın olması gereken yerde olduğu halde diğerinde noktanın yanlıs 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öylemistik. 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 verilmis olan Script’i) bölümü icra etti ve sonucu Browser’a aktardı. Yani, Server’ın çalıstırdığı Script’in sonucu sayfaya ASP’den sonra eklendi. Dolayısıyla, nokta, yanlıs yerde kaldı.

Bundan çıkartacağımız sonuç su olacak: ASP sayfalarımıza, Browser, Server ve ASP.DLL tarafından çalıstırılacak kodları yerlestirirken, 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 Karsılık (Response) unsurlarından tutun, ActiveX Data Objects (ADO, AcvtiveX Veri Nesneleri) aracılığıyla, işletim sisteminin sunacağı veritabanına erisim imkanını ve isletim 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.
 
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 ( ) 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.


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.
 
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.
 
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.





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.
 
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).
 
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.





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 "<BR>"


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 "<BR>"


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 <BR> 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. Bunu While (..iken) komutuyla yapabiliriz. While döngüsünü kullandığımız zaman sayacı bizim arttırmamız gerekir.


Sözgelimi, yukarıdaki programın 7 günün tümünü ekrana yazmasını değil de, mesela gün sayısı 5’den küçük ise yazmasını istiyor olabiliriz. Bu durumda kodumuzda For.. Next arasında kalan bölümde şu değişikliği yapabiliriz:


While sayac <= 5


Response.Write Gunler(sayac)


Response.Write "<BR>"


sayac = sayac + 1


Wend


Burada While döngüsünün Wend kelimesiyle sonlandırıldığına dikkat edin. While satırındaki sayacı değiştirdik, programın sayaç 5’den küçük veya 5’e eşit iken işlemesini sağladık. For’dan farklı bir diğer ifade ise sayacı arttıran “sayac = sayac + 1” ifadesidir. Bu ifade, ilk bakışta garip görünebilir. Fakat bilgisayar açısından bu “sayac’ın o andaki değerini al, 1 ile topla ve bulduğun yeni değeri sayacın mevcut değerinin yerine yaz!” demektir. VBScript sayacı bir arttırdıktan sonra önce While satırındaki şartın gerçekleşip gerçekleşmediğine bakar; gerçekleşmiş ise Wend’i izleyen ilk satıra gider; gerçekleşmemişse While döngüsünün içindeki işi yapmaya devam eder. Kendinizi VBScript’in yerine koyup, birinci ve ikinci adımda nasıl düşündüğünüzü ve ne iş yaptığınızı söyleyebilir misiniz?


Do..Loop


Do (Yap) komutu ile kuracağımız döngüler iki ayrı türde olabilir: bu döngü ile bir dizi komutu, bir koşul doğru iken veya doğru oluncaya kadar yaptırabiliriz. Bu yöntemlerden her biri iki ayrı şekilde yazılabilir. Bir koşul doğru iken bazı işlerin biteviye yapılmasını istiyorsak, Do While yöntemini kullanırız:


Do While koşul


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


Loop


Bu ifade ile VBScript koşul doğru olduğu sürece istediğimiz işi yapacaktır. Buradaki Loop kelimesi, döngünün başa dönmesini sağlar. Bu yöntemden şu şekilde de yararlanabiliriz:


Do


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


Loop While koşul


Burada, Loop komutu şartın hâlâ doğru olup olmadığını sınar ve doğru ise verilen işleri yapar; artık değilse bir sonraki satıra geçer.


Döngünün bir şart gerçekleşinceye kadar bir işi yapmasını ise Do Until yöntemiyle sağlarız. Bu durumda döngü şöyle yazılır:


Do Until koşul


koşul gerçekleşinceye kadar yapılacak işler


Loop


Bu ifade ile VBScript koşul doğru oluncaya kadar istediğimiz işi yapacaktır. Buradaki Loop kelimesi, döngünün başa dönmesini sağlar. Bu yöntemden şu şekilde de yararlanabiliriz:


Do


koşul gerçekleşinceye kadar yapılacak işler


Loop Until koşul


Burada, Loop komutu şartın henüz gerçekleşip gerçekleşmediğini sınar ve henüz gerçekleşmemişse verilen işleri yapar; gerçekleşmişse bir sonraki satıra geçer.


Visual Basic metinlerinde bu döngüye verilen klasik örnek, bilgisayara yazı-tura attırmaktır! Biz de ASP sayfamıza yazı-tura attırabiliriz. Bunun için şu kodu yazın ve yazi-tura.asp adıyla kaydedin:


<% Option Explicit %>


<HTML>


<HEAD>


<TITLE>ASP ILE YAZI-TURA</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 ParaAt, Yazi, Tura, Atis


Randomize


Yazi = 0


Tura = 0


Atis = 0


Do While Tura < 3


atis = Atis + 1


ParaAt = Int(Rnd * 2) + 1


If ParaAt = 1 Then


%>


Yazı!<P>


<%


Yazi = Yazi + 1


Else


%>


Tura!<P>


<%


Tura = Tura + 1


End If


Loop


%>


3 Tura getirebilmek için parayı <%=Atis%> kere atmak gerekti!


</HTML>


Bu kodda şu ana kadar karşımıza çıkmamış olan Randomize (Tesadüfî sayı bulma) Fonksiyonu’nun kullanıldığını görüyoruz.
 
Geri
Top