Professional Documents
Culture Documents
ASPHakkinda Hersey
ASPHakkinda Hersey
ASP yani Active Server Pages Microsoft firması tarafından klasik HTML sayfalarına dinamik bir yapı
kazandırmak amacıyla ortaya çıkarılmış bir teknolojidir. Internet yeni bir teknoloji olduğundan insanlar
hayal gücü sınırlarını bu yeni teknoloji ile zorlamaktadırlar. ASP de bu yeni teknolojinin yeni bir parçası
olmuştur.
ASP ile web sayfalarınızı dinamik hale getirebilirsiniz, bunu yapmak için ASP sunucu(server) tarafında
sizin yazmış olduğunuz kodları çalıştırır ve istemci(client) tarafına ona özel görüntülenmesini istediğiniz
sayfayı görür. şimdi ilk başlangıç için karışık görünebilir bu yüzden isterseniz web progracılığından biraz
bahsedeyim.
Web programcılığı, W3C tarafından standart haline getirilen HTML(Hiper Metin Anlamlandırma Dili) ile
start almış ve CGI, JavaScript, ASP, VRML gibi dillerle devam etmiştir. şimdi bu dillerin farkı şudur; bu
dillerin bazıları sunucu tarafında bazıları ise istemci tarafında çalışmaktadır. ılk olarak HTML’i ele alalım;
HTML dosyarınının içeriğini hepimiz biliyoruz. Bu içerik bağlandığınız sunucu tarafıdan bilgisayarınıza
yollanır ve sizde bulunan web görüntüleyici(Internet Explorer, Netscape gibi.) tarafından size sayfa
anlamdırılarak gösterilir. Yani tüm görüntüleme işlemini sizin bilgisayarınız yapar. HTML’den sonra çıkan
Javascript teknolojisi de buna yakındır. Yani dosyalar bağlandığınız bilgisayar tarafından size yollanır ve
siz onları bilgisayarınızda düzenleyip görüntülersiniz. Dikkat ettiyseniz javascript(js) içeren sayfalar diğer
sayfalara göre daha geç yüklenmektedir, çünkü tüm o js kodları sizin bilgisayarınızda çalıştırılır ve tabi bu
da performans kaybına yol açar.
ASP ise tamamen Sunucu Tarafında (server side) çalışan bir programlama dilidir. Tüm kodlar sunucu
tarafında çalıştırılır ve size sadece HTML kodları gönderilir. Böylece performans olarak büyük bir avantaj
elde edilmiş olur, tabi bu web sunuculuğu yapacak bilgisayarınızın hızlı olmasına da bağlıdır. Örnek olarak
OSYM’yi düşünün sizden aldığı bir ösym numarası ile orada bir program çalıştırır ve bu program size
sadece girmiş olduğunuz numaraya ait sonucu bir html dökümanı olarak döndürür.
Sunucu taraflı programlamanın diğer bir avantajı ise güvenliktir. Örneğin js kodları Kaynağı görüntüle
dediğinizde görülebilmektedir. Eğer siz güvenlik açısından kullanıcıların görmemesini istediğiniz bir
program çalıştırıyorsanız sunucu tarafı programlama yapmalısınız. Bu tip programlamanın ilk örneği CGI
ile gerçekleşmiştir. Perl dili kullanılarak üretilen bu kodlar pekçok kişi tarafından rahatça kullanılamamıştır
çünkü CGI çalıştırmak için hosting yaptığınız yerde bu desteğin verilmesi gerekmektedir. Fakat asıl en
büyük sorun bu kodları geliştiriken sizin hiçbir şekilde deneyememiz olmuştur. Çalıştığından emin olmak
için programı sunucuya yüklemeniz gerekmektedir.
Lafı uzatmadan ASP’nin bir sunucu tarafı programlama olduğunu söyleyeyim ve bu konuyu bitireyim.
şimdi bahsedeceğim diğer bir özellik de ASP geliştirmede kullanılan script dilleri. En yaygın olarak
kullanılan script dili VBScript’tir. Hepimiz ilk programcılık günlerimizi herhalde qbasic kodu yazarak
geçirmişizdir. VBScript de temel itibariyle Visual Basic dilini kullanarak program üretmemize yarar. Bunun
yanında JavaScript de kullanılabilir, fakat günümüzde js’yi kullanarak program geliştirmemizi sağlayan
yeni bir dil JSP(Java Server Pages) bulunmaktadır. Bu yüzden Asp’nin anadili bence Vbscript olarak
kalacaktır.
Asp’nin avantajlarıdan ve çalışma mantığından bir önceki konuda söz ettim. Bu avantajlar göz önüne
alındığında elelktronik ticaret için en kullanışlı dil olma avantajı vardır. Çünkü güvenlik bu tür
uygulamalarda çok önemlidir ve Asp de bize bu güvenliği sağlamaktadır. Diğer avantajı ise çok kolay bir
dil olmasıdır. Gerçekten bir perl ile program geliştirebilecek kişi sayısı sınırlıdır ama Asp’yi biraz
programlama bilgisi olan herkes çözebilir ve çok kısa zamanda iyi işler ortaya koyabilir.
Asp ile veritabanına bağlanıp gelen verilerden faydalanarak sayfalar üretebilirsiniz. Bunun için SQL,
Access veya Oracle kullanabilirsiniz. ODBC bağlantısı yapabileceğiniz tüm veritabanlarına Asp kullanarak
erişebilirsiniz.
Asp ile her şeyin başında dinamik sayfalar hazırlayabilirsiniz. Böylece her kullanıcıya farklı bir sayfa
gösterebilirsiniz. Html ile bunu ypamanız imkansızdır ancak farklı sayfalar yaparak bu sorunu
çözebilirsiniz. Bu da zamandan ve yerden büyük kayıp demektir.
Asp kullanarak elinizdeki bilgiyi kolayca diğer insanların kullanımına açabilirsiniz. Sizde bulunan bir
uygulama programını Asp ile entegre çalıştırabilirsiniz. Bu da sizin B2B ve B2C uygulamalar geliştirmenizi
sağlar.
Artık işin mantığını kavradığınızı sanıyorum. Ve ilk Asp kodumuzu yazma vakti geldiğine inanıyorum.
Klasiktir ya ben de bunu kullanayım. Ekrana Asp kodu ile Merhaba Dünya yazdıralım. Kullanmak
istediğiniz herhangi bir editörde yeni bir sayfa açın ve aşağıdaki kodları yazın.
<%@language=Vbscript%>
<html>
<body>
<% response.write("Merhaba Dünya") %>
</body>
</html>
ışte ilk asp dosyası. şimdi bunu deneme.asp olarak kaydedin. Bu dosyayı c:\inetpub\wwwroot dizini
altına kopyalayın. Boş bir Internet Explorer açıp location kısmına :
http://localhost/deneme.asp yazın. Ekrana Merhaba Dünya yazısı çıkmalı. Eğer çıkmıyorsa, sorunu
şimdiden çözelim ki ileride diğer kodları çalıştırabilin. Bu konu oldukça önemli bir konu olduğu için onu
ayrı bir başlık olarak ele almak istedim. Eğe sorun yaşıyorsanız "Yazdığım Kodları çalıştırırken hata
alıyorum" makalesini okuyun.
Forumdan takip edebildiğim kadarıyla ve gelen özel sorular neticesinde bir süredir IIS
(Internet Information Services) hakkında yazmayı tasarlamıştım, ancak farklı sebeplerle bu iş
gecikti.
Neden IIS?
IIS ile ilgili bir dizi halinde yazmayı düşündüğüm makalelerde tüm yönleriyle IIS'ten bahsetmek
istiyorum. Ancak IIS'ten bahsetmeden önce kısaca PWS(Personel Web Server) ile ilgili birkaç
noktaya değinme gereği hissediyorum :
1. PWS, hepimizin bildiği gibi Windows 98 üzerinde çalışmaktadır. Windows ME ile beraber PWS
gelmemektedir. Birkaç makina üzerinde yapmış olduğum denemelerde Windows 98 CD'si
içerisinde yeralan PWS'yi Windows ME üzerinde kurduğumda hiçbir problemle karşılaşmadım
(Uzun süreli kullanmadığımı belirtmek isterim). Ancak düzgün çalıştıramayan ve problem
yaşayanların varlığını biliyorum (Windows ME ve PWS ile ilgili olarak
http://www.aspnedir.com/makaleler_icerik.asp?id=169 adresinde yer alan makaleye
bakabilirsiniz).
2. Belki de çoğumuz ilk ASP kodlarını PWS üzerinde yazmıştır. Ancak Windows 98 ve PWS bize
gerçek server ortamını sağlamadıkları için çoğu zaman yazdığımız kodları servera
gönderdiğimiz zaman çalışmadığını, hata verdiğini görmüşüzdür.
3. Windows 98 bir server işletim sistemi olmadığı için, kullandığımız bileşenler (component) ile
ilgili hatalar ve problemler oluşabilmektedir.
4. Eğer ASP ile sadece hobi olarak uğraşmıyorsanız, çalıştığınız ortamlarda Windows 2000
Server ile meşgul olacaksınız demektir. Bu nedenle Windows 2000 Server üzerinde çalışmak
yararlı olacaktır.
5. Server üzerinde çalışacak olan ASP kodlarının tüm geliştirme aşamasında benzer bir
ortamda çalışmak size oluşabilecek hataları daha kolay görme, anında çözümler üretebilme gibi
avantajlar sağlayacaktır. Yazdığınız kodun IIS üzerinde nasıl bir tepki vereceğini
programlamayı tam olarak bitirmeden görme şansına sahip olabileceksiniz.
Yukarıda yazdığım sebeplerden dolayı tüm arkadaşlara kodlarını, eğer imkanları müsaitse
Windows 2000 Server üzerinde veya en azından Windows 2000 Professional Edition üzerine IIS
kurarak (kurulum sırasında default olarak yüklenmez) yazmalarını tavsiye ediyorum.
KURULUM
Windows 2000 Server üzerinde yüklenmemiş olma ihtimali ve Professional üzerine kurulması
gerektiği için nasıl olduğunu bilmek amacıyla kısaca IIS'in kurulumundan bahsetmek
istiyorum :
IIS linki üzerine çift tıklayarak veya "Details" linkine basarak IIS içerisinde yer alan bileşenleri
(server ve servisler) görebilir, ihtiyacınız olanları işaretleyerek kurulmalarını sağlayabilirsiniz.
Sıra ile bunlardan bahsedelim :
Common Files : IIS'in çalışabilmesi için gerekli dosyalar. Bu dosyaların mutlaka kurulması
gerekmektedir.
Documentation : IIS, Web ve FTP serverlar üzerinden publish (yayın) ile ilgili yardımları ve
örnekleri içeren dökümanlar.
File Transfer Protocol (FTP) Server : Dosya upload ve download işlemleri için gerekli olan
servis.
Frontpage 2000 Server Extensions : Frontpage ve Visual Interdev aracılığı ile web
siteleriniz üzerinde işlem yapabilmenizi sağlayacak olan araç.
Internet Information Services Snap-In : IIS için gerekli olan yönetim arabirimi.
Internet Services Manager (HTML) : Browser aracılığı ile IIS'i ve web sitelerinizi
yönetmenizi sağlar.
NNTP Service : Açılımı Network News Transfer Protocol olan NNTP servisi vasıtasıyla server
üzerinden haber grupları yayınlayabilirsiniz.
SMTP Service : Açılımı Simple Mail Transfer Protocol olan SMTP servisi aracılığıyla server
üzerinden mail gönderebilirsiniz. Bu servis ile sadece mail gönderebilirsiniz, mail
alabilmek için bir mail server'a ihtiyacınız vardır.
Visual InterDev RAD Remote Deployment Support : Bu bileşen yardımıyla server'ınız
üzerindeki dosyalara Visual InterDev ile uzaktan bağlanılarak direkt üzerinde çalışılabilmesi için
gerekli desteği sağlayabilirsiniz.
World Wide Web Server : En önemli bileşen. Server'ınız üzerinden web sitelerinin tüm
dünyaya yayınlanabilmesi için gerekli servis.
İhtiyacınıza göre istediğiniz bileşenleri seçtikten sonra sırasıyla OK ve Next tuşlarına basıyoruz.
Böylece IIS kurulumunu tamamlamış oluyoruz (Bu işlem için işletim sisteminin CD'sine
ihtiyacınız olacaktır).
NOT : Windows 2000 Professional yukarıda saydığımız bileşenlerin tümünü içermez. FTP
Server, Frontpage 2000 Server Extensions ve SMTP Service bileşenlerini içermektedir.
Merhabalar,
IIS'E ERİŞİM
Web-FTP sitesi tanımlamak ve ayarlarını yapmak için IIS'e birkaç farklı yoldan
ulaşabilirsiniz :
1. Start/Settings/Control Panel/Administrative Tools/Internet Services Manager
yolunu izleyerek,
2. Start/Programs/Administrative Tools/Internet Services Manager yolunu
kullanarak,
3. "My Computer"e sağ tıklayıp, "Manage" seçeneğine basarak açılacak olan "Computer
Management" penceresinde "Services and Applications" bölümünden IIS'e
ulaşabilirsiniz.
Genelde üçüncü yolu kullanmayı tercih ediyorum, çünkü "Computer Management"
penceresi vasıtasıyla IIS ile uğraşırken erişmem gerebilecek hemen tüm araçlara
ulaşabiliyorum (Event Viewer, Local Users and Groups, Services, DNS servisi gibi).
Bu penceredeki seçenekler yardımıyla yapılacak olan ayarlar, o makina üzerinde yer alan tüm
siteler için geçerli olacaktır.
Master Properties :
Bu bölümde WWW Service (Web Sitesi Yayınlama Servisi) ve FTP Service (FTP Sitesi
Yayınlama Servisi) hizmetlerinin tüm sitelerinde geçerli olacak ayarlar yapılabilir.
Her bir servis içi "Edit" tuşuna basılarak açılacak olan pencere yardımıyla ayarlar
gerçekleştirilebilir. Bu ayarlardan daha sonra, Web sitesi ve FTP sitesi oluşturmayı
anlatacağım bölümlerde bahsedeceğim.
Web siteleri üzerinden ziyaretçiye iletilmesi istenmeyen dosya tipleri de yine bu bölümden
kaldırılabilir.
Server Extensions :
Server Extensions bölümünde Frontpage Server Extensions ile hazırlanmış Web
siteleri için ayarlar yapılabilir.
General :
Performance:
Web sitesinde yer alacak sayfa sayısını belirtilerek veya özel ayarlar yapılarak en iyi
performans alınması sağlanabilir.
Client scripting : Frontpage Server Extensions tarafından otomatik oluşturulacak
istemci taraflı scriptler için kullanılacak olan dil JavaScript veya VBScript olarak
belirlenir.
Options :
Permissions :
IIS yazı dizisinin ilk makalesinde neden IIS kurma ihtiyacında olduğumuzdan ve IIS
kurulumundan (http://www.aspnedir.com/makaleler_icerik.asp?id=225) bahsetmiştik. İkinci
makalemizde ise IIS'e nasıl erişebileceğimize ve IIS'teki genel ayarlara
(http://www.aspnedir.com/makaleler_icerik.asp?id=227) değinmiştik.
Internet Information Services altında Default Web Site, Administration Web Site ve
yaptığınız kuruluma göre Default FTP Site, Default SMTP Virtual Server, Default NNTP
Virtual Server servislerini bulabilirsiniz.
Default Web Site, IIS'in kurulumu esnasında oluşturulur. Ana dizin olarak
"inetpub/wwwroot" klasörü seçilidir. Eğer bu siteyi hiçbir ayarını değiştirmeden korur ve
tüm web sitelerini "inetpub/wwwroot" klasörü altına yerleştirirseniz
şeklinde ulaşabilirsiniz. Default Web Site, otomatik
http://IP_Adresi/klasör_adı
oluşturulmasına rağmen Microsoft tarafından kullanılması pek tavsiye edilmemektedir.
Her server veya IIS kurulumunda Administration Web Site için port değişmektedir. Port
numarasını sağ tıklayarak açılan menüden "Properties" e basıldığında görüntülenen
"Administration Web Site Properties" penceresinde yer alan "TCP Port" bölümünden
öğrenebilir ve değiştirebilirsiniz.
Default SMTP Virtual Server ile serverdan herhangi bir mail server kurmaya gerek
kalmadan mail gönderebilirsiniz. Bu servis ile SMTP aracılığıyla mail gönderebilirsiniz,
mail alamazsınız.
Default NNTP Virtual Server , server üzerinden newsgroup hizmeti vermenizi sağlar.
Web sitesi oluşturmak için, Internet Information Services'a sağ tıklayıp açılan menüden
New >> Web Site 'a basıyoruz.
Açılacak olan "Welcome to the Web Site Creation Wizard" isimli sayfada "Next" tuşuna
basıyoruz. "Web Site Description" sayfasında oluşturacağımız web sitesi için bir
açıklama giriyoruz. Örnek : "Test Sitesi". Bu açıklama IIS'te görünecektir (Default Web Site
gibi). Tekrar "Next" tuşuna basıyoruz. "IP Address and Port Settings" sayfasında web
sitemiz için IP, port ve header bilgilerini giriyoruz.
.
Enter the IP address to use for this Web site : Oluşturduğumuz web sitesine
ulaşılabilecek olan IP adresini burada tanımlıyoruz. Bu IP adresi, domainin DNS
kayıtlarında yer alan IP adresi ile aynı olmalıdır.
TCP port this web site should use : Oluşturduğumuz siteye hangi porttan ulaşılacağını
burada belirliyoruz. Varsayılan olarak bu değer 80 'dir. Normalde bu port değiştirilmez.
Host Header for this site : Oluşturduğumuz siteye ulaşılması için gerekli olan bilgiyi
buraya yazıyoruz. Bu genelde www.siteadi.com şeklindedir. Eğer www'den farklı bir
header kullanmak istiyorsanız öncelikle bunu DNS kayıtlarına geçirmeniz gerekir. Daha
sonra da bu kısma yazabilirsiniz. Ör : test.siteadi.com
Tekrar "Next" tuşuna basıyoruz. "Web Site Home Directory" sayfasında sitemizin yer
aldığı klasörün harddiskteki tam adresini ister elimizle giriyoruz ister "Browse" tuşu ile
yerini buluyoruz. Adres kutusunun altında yer alan "Allow anonymous access to this
Web site" kutusu varsayılan olarak işaretlidir. Böylece internet üzerinden herkes web
sitenize ulaşabilir. Tekrar "Next" tuşuna basıyoruz. "Web Site Access Permissions"
sayfasında web sitesi üzerinde nelerin çalışabileceğini ve ziyaretçilerin web sitesi üzerinde
yapabileceklerini belirliyoruz.
Read : Varsayılan olarak işaretlidir. Web sitesinde yeralan tüm sayfaların görüntülenmesi
için gereklidir.
Run scripts (such asp ASP) : Varsayılan olarak işaretlidir. Web sitesinde yer alan ASP
sayfalarının çalışabilmesi için gereklidir.
Execute (such as ISAPI applications or CGI) : Oluşturduğumuz web sitesinde CGI ve
ISAPI uygulamalarının çalışması için bu kutuyu işaretliyoruz.
Write : Oluşturduğumuz web sitesinde ziyaretçilere dosya yazma hakkı vermek için bu
kutuyu işaretliyoruz. Dikkat : Normalde böyle bir izin verilmez!.
Browse : Oluşturduğumuz sitenin klasörlerinde ziyaretçilerin dolaşabilmesini sağlamak için
bu kutuyu işaretliyoruz. Böylece ziyaretçiler sitede yer alan tüm sayfaları ve resim gibi
nesneleri görebilirler. Dikkat : Normalde böyle bir izin verilmez!.
Tekrar "Next" tuşuna basarak sitenin oluşturulma aşamasındaki ayarları bitiriyoruz. Son
sayfada "Finish" butonuna tıklayarak başarıyla web sitemizi oluşturmayı tamamlıyoruz.
ASP'de Form ve Veri İşleme
Genel olarak bir form içindeki bilgiler diğer bir sayfaya gönderilir ve bu sayfa içinde çeşitli
işlemlere tabi tutulur.
Örneğin:
<form action="uye_ekle.asp" method="post" name="frmUyeBilgileri"> gibi bir
yapıyla bilgiler ayrı bir dosya içinde değerlendirir. Yapısallık açısında iyi bir yöntem gibi görünse
de istemeden de olsa proje içinde dosya karmaşasına yol açılmış olunur.
Bunu önlemek için güzel bir yol mevcut. Dikkat ettiyseniz, yukarıdaki örnekte method
kısmını kırmızı ile yazdım. İşte anahtarımız bu.
Şöyle bir fikir jimnastiği yapalım. Action kısmında yer alan dosya ismi bizim
formumuzun içinde bulunduğu dosya olursa ne olur? Tabi ki sayfa yeniden yüklenir ve form boş
olarak görüntülenir. Aslında bilgiler post edildi. Fakat bu bilgileri işleyebilmemiz için birkaç
düzenleme yapmamız gerekiyor.
1- .ASP dosyamızın başına aşağıda ki kodu eklemeliyiz. Görüldüğü üzere bu kod boolean
tanımlı bir değişkeni post edilme durumuna göre 1 veya 0 yapıyor.
</form>
<%
Else
'Herhangi bir bilgi Post Edildikten sonra görüntülenecek sayfa
txtAd=Request.Form ("txtAd")
IsaretliSayisi = Request.Form ("chkUyeID").Count
End If
Görüldüğü gibi yöntem oldukça basit. Bundan sonra formdan gelen bilgilere göre sayfanın ikinci
bölümünü daha alt parçalara bölmek de mümkün.
ASP, Tarih, Veritabanı
ASP ile tarih işlemleri hep sorunlu olmuştur. İşte size bir çözüm anlatan makale.
HTML ilk olarak uğraşmaya başladığımda bir yere bir tarih yazmak istediğimde <b>30.12.3002
Perşembe</b> yazmam yeterli oluyordu. Ama sayfa ve güncelleme sayısı arttıkça bu ve bu gibi işler
içinden çıkılmaz bir hal almaya başlamışlardı. Oldukça uzun bir süre böyle cebelleştik. Ama gün geldi "ve
Microsoft, ASP' yi yarattı." Artık hiçbir şey eskisi gibi değildi. Her şey çoook güzeldi.
Ama bir gün, iş evimde kendi ülke ayarlarımdan farklı bir sunucuda dosyalarımı host etmeye geldiğinde
ASP ile yazdığım sitenin çuvalladığını gördüm. Tarihler 30.12.3002 değil de 12/30/2002 şeklinde çıkmaya
başladı. (Titiz bir insan için önemli bir problem.)
İşte o zaman bir karar verdim. "Ne gerek var, bu tarih formatına" dedim. Tamam işler daha kolaydı. İşimi
kolaylaştıran bir çok artısı vardı. Ama karşı sunucuda işler umduğum gibi gitmiyordu. Böylece tarihleri
kendi formatımda saklamaya ve gerekli dönüşüm fonksiyonları ile ekrana yazdırmaya başladım. VB Script'
in Mid() fonksiyonu bu işler için tam biçilmiş kaftandı.
Tarihleri, artık veritabanında tarih tipinde değil metin tipinde 8 karakterlik bir alanda saklamaya
başlamıştım. Sıralamada sorun yaşamamak için YILAYGUN (30021230) şeklini benimsedim. 2 karakter
deyip geçmemek gerek. Biraz hesaplama yapıldığında aslında ne kadar vahim bir durum olduğu ortaya
çıkar.
Kayıt Sayısı
Alan Sayısı
Boyut (KB)
Boyut (KB)
1 Char
2 Char
Tablo 1 - Kayıt sayısı ve Alan Sayısı Faktörlerin göre 2 bytelık bilginin kapladığı alan.
Yukarıdaki tabloda 2 bytelık bilginin nelere yol açabileceğini sergilemeye çalıştım. Belki 10 Milyon kayıt
biraz abartılı olabilir ama .mdb içindeki 100.000 kayıt hiç de abartılı değil. Veritabanımız içinde tarih
sakladığımız 4 adet alan olması halinde yaklaşık 780 KB' lik fazla yer işgali ile karşı karşıya kalırız. Size
rahatlıkla söyleyebilirim ki 5 tablodan oluşacak ufak bir uygulamanızda bile ortalama 10 adet alanda tarih
saklamak zorunda kalırsınız. Yüksek trafikli sitelerde size getireceği yükü hayal edebilirsiniz...
Ayrıca, hosting aldığınız firmaya ülke ayarlarını kurdurmanın zorlukları ve/veya imkansızlıkları
düşünüldüğünde yöntem geleneksel ama işe yarar bir yöntemdir.
Çeşitli forumlarda sık sık karşılaştığımız bir sorun var. "Access veri tabanımı download edilmekten nasıl
koruyabilirim?"
Kötü niyetli kişiler adres satırından (dosyanın yolunu ve adını bir şekilde öğrenmiş olduğunu
varsayıyoruz.) bu dosyayı çağırarak indirme işlemine başlayabilirler.
Öncelikle bu sorun profesyonel olarak hizmet veren hosting firmalarında yaşanmıyor. Özellikle ücretsiz
alan sağlayan firmalardaki bir güvenlik açığı. Firmanız kim olursa olsun bunu önlemek son derece basit.
Tek yapmanız gereken .mdb, .inc, .js gibi uzantılı dosyalarınızı .asp uzantısı ile değiştirmek. Bu yöntemin
tek dez avantajı var. Bu dez avantaj .mdb uzantılı dosyalarda karşımıza çıkıyor. Local olarak dosya ile
çalışmak istediğinizde dosyanın uzantısını değiştirmeniz gerekiyor...
Uygulamalarınızı daha güvenli hale getirmek için aşağıdaki örnekler tablosunu bir inceleyin.
Güvensiz Güvenli
<!-- #INCLUDE FILE="../INCLUDE/XXX.INC" <!-- #INCLUDE FILE="../INCLUDE/XXX.ASP"
--> -->
set set
cn=server.createobject("ADODB.Connectio cn=server.createobject("ADODB.Connectio
n") with cn n") with cn
.provider="Microsoft.JET.OLEDB.4.0" .provider="Microsoft.JET.OLEDB.4.0"
.open "Data Source=" & .open "Data Source=" &
server.Mappath("../fpdb/xxx.mdb") Server.Mappath("../fpdb/xxx.asp")
end with end with
İlk örneğimizde, include etmek istediğimiz dosya xxx.inc dosyasının yolu, adı gibi bilgiler html kodları
içinde görülür. Bu .inc dosyanın adını ve yolunu yazarak çok rahat indirebilir.
İkinci örneğimizde, bir .js dosyasını include etmek istiyoruz. Çok uzun uğraşlarla yazdığınız bir javascript
ve uzantısını .js bıraktığınızda bu da html kodu içinde göründüğünden kişiler çok rahatça bunu
indirebileceklerdir. Son örnekte ise durum biraz farklı kişinin .mdb dosyasına ulaşabilmesi için gerekli
bilgiyi html kodları içinden elde etmesine imkan yok. Ama diyelim ki kişi bir şekilde yolu ve adını öğrendi.
Eğer hosting firmanız bu açığı kapatmamışsa kişi .mdb dosyasını kendi bilgisayarına alabilir ve
ulaşmaması gereken bilgilere ulaşabilir.
Eğer, bu dosyaların uzantısı .asp olumuş olsaydı kişinin bunları indirmesine imkan olmayacaktı. Adres
satırına örneğin "www.xxx.com/fpdb/xxx.mdb" yazarsa dosya bulunamadı hatası yer. Yok
"www.xxx.com/fpdb/xxx.asp" yazarsa bu sefer server çağrılanın bir asp dosyası olduğunu düşünür fakat
çalıştıramaz. Her iki şekilde de dosyanın adres satırından URL yazarak indirilmesi önlenmiş olur.
Bu yöntem, indirilmesini istemediğiniz .css, .txt ve bunlar gibi diğer dosyalar için de kullanılabilir...
Bu makalede programcıklarımızı daha dinamik hale getirmek için ASP programlarımız içerisinde başka
Bir ASP sayfasının içine bir dosya dahil etmek için temel HTML taglarından olan “#INCLUDE” tagını
kullanabilirsiniz. Bu tag hem ASP sayfalarında hem de standart HTML sayfalarında kullanılabilmektedir.
Dosya dahil etme işlemi iki durumda faydalıdır. İlk olarak aynı içeriği web sitenizdeki birçok sayfaya
Diyelim ki, web sitenizdeki her sayfanın tepesine koymak istediğiniz standart bir logonuz var. Logoyu
bir başlık dosyasına yerleştirip, daha sonra bu başlık dosyasını her ASP sayfasının içine dahil
edebilirsiniz.
Şirket logosunu bir başlık dosyasıyla görüntülemek web siteniz için tutarlı bir görünüm oluşturmayı
kolaylaştırır, ayrıca ileride şirket logosu değişirse sayfalarınızda değişiklik yapmayı da daha kolay hale
getirir. Bu durumda web sitenizdeki bütün sayfalarda değişiklik yapmak yerine, sadece başlık dosyasını
Dosya dahil etme işlemi ayrıca, standart bir fonksiyonlar ve prosedürler kümesini birden fazla ASP
kütüphane olarak tek bir dosyada toplayıp, sonra da bu dosyayı diğer ASP sayfalarına dahil
edebilirsiniz. Eğer birden fazla ASP sayfasında kullanmanız gereken yeni bir fonksiyona ihtiyacınız
Bir ASP sayfasına bir dosya dahil etmek için #INCLUDE tagı kullanılır. Dahil edeceğiniz dosya web
sunucunuzun erişebileceğiniz herhangi bir klasöründe bulunabilir. Tagın iki kullanım şekli
bulunmaktadır. ASP sayfasına kendisi ile aynı klasörde bulunan bir dosya dahil edileceği zaman,
Yukarıda bulunan ASP sayfası kodun bulunduğu satrıda baslik.asp isimli dosyayı dahil ediyor. Burada
#INCLUDE tagının <% ve %> sembolleri arasında kullanılmadığına dikkat etmek gerekiyor.
Dahil edeceğiniz dosya ASP scriptleri içeren bir dosya ise, bu dosyaya dosya uzantısı olarak “.asp”
vererek onları ASP dosyası haline getirmeniz iyi olur. Böylece, web sitenize giren kullaniciların
dosyanın içeriğini görmesini engellemiş olursunuz. Eğer dahil edeceğiniz dosyayı “.htm” ya da “.inc”
gibi bir uzanti verirseniz, herhangi bir dosyayı bir web tarayıcısında açarak dosya içeriğini (ASP
kodlarını) görüntüleyebilir.
Dinamik include:
Dosya dahil ederken bir değişkenin değerine bağlı olarak farklı dosyaları dahil etmek
<%
ID = “5.txt”
%>
Maalesefi yukarıdaki ASP sayfası istendiği şekilde çalışmayacaktır. Problem şudur, #INCLUDE tagı da
dahil olmak üzere bütün taglar, sayfadaki scriptler işlenmeden önce işlenir. Bu da demektir ki
yukarıdaki örnekte bulunan #INCLUDE tagı, ismi <%=ID%> olan bir dosyayı dahil etmeye
Eğer bir değişkenin değerine bağlı olarak farklı dosyaları dinamik şekilde dahil etmek
istiyorsanız, ya bir ya bir vbscript şartlı ifadesi (if), yada bir vbscript select...case ifadesi
<%
ID = 2
Select Case ID
Case 1
%>
<%
Case 2
%>
<%
End Select
%>
Burada şu husus önemli: yukarıdaki scriptteki dosyalar şartlı olarak dahil edilmiyor. #INCLUDE tagı
bütün scriptlerin çalıştırılmasından önce yorumlandığı için, select...case ifadesi yorumlanmadan önce
bütün sayfalar dahil edilerek tek bir büyük dosya halinde birleştiriliyor. Sonra bu büyük dosyanın
Çok fazla dosya dahil edilerek büyük bir ASP dosyası oluşturulması problemlere yol açabilir. Problemler
bir kullanıcı tarafından ilk defa bu sayfayı talep etdiğinde çıkacaktır. Web sunucunuzun sayfayı
oluşturması uzun bir zaman alabilir. Sayfa değiştirilmediği yada web sunucunuz kapatılmadığı
müddetce, sonraki talepler çok daha hızlıbir şekilde karşılanabilir. Çünkü web sunucusu sayfayı ön
hafızaya alacaktır.
Global.asa:
Global.asa dosyası ASP scriptleri içerir fakat normal bir ASP sayfasının aksine global.asa dosyası içerik
görüntülemek için kullanılmaz. Bunun yerine global.asa dosyası global uygulama olaylarını ele almak
için kullanılır. Bir diğer değişle tüm scriptlerimiz içerisinde kullanacağımız fonksiyonları yani global
fonksiyonları bu dosya içine yerleştiririz. Çünkü server ASP dosyalarından önce bu dosyayı işleme
sokacaktır.
Global.asa dosyasını kullanmadan önce bir ASP uygulaması oluşturmanız gerekir. Bu işlemi sadece
Bu dosyanın içeriği standart bir ASP dosyasına benzemekle birlikte adındaki uzaltmanın .asp değilde
Bir asp uygulaması oluşturduktan sonra global.asa dosyasını uygulamanızın ana dizinine (root)
ekleyebilirsiniz. Global.asa dosyası içerisinde yine vbscript kullanacağız fakat normal vbscript
Session_OnStart:
Bu olay bir ziyaretci web sitesine girdiğinde tetiklenir. Ziyaretci ilk sayfa talep anında bu işlem
gerçekleşir.
Session_OnEnd :
Bu olay bir oturum sona erdiğinde tetiklenir. Bir kullanıcı oturumu zaman aşımına uğradığında yada
Application_OnStart:
Bu olay web sunucunuz başlatıldıktan sonra web sitenizden ilk sayfa talep edildiği zaman tetiklenir.
Application_OnEnd:
Bu olay sunucu kapatıldığı zaman tetiklenir ve herzaman session_onend olayından sonra gerçekleşir.
Application ve session nesnelerinin kendi başlarına en çok kullanıldığı yer, siteye gelen ziyaretcilerin
sayısını tutmasını sağlamaktır. Bu genellikle global.asa dosyasına bir sayaç yerleştirerek yapılır.
Global.asa dosyası içerisinde <% veya %> tagları kullanılmaz. Bunun yerine, scriptin başlangıç ve
bitişi HTML <script> tagı ile işaretleniyor. <script> tagının runat özelliğine server değeri verilerek,
bunun istemci tarafında değil, sunucu tarafında çalışan bir script olduğu belirtiliyor.
Bu makale sonunda tüm temel ASP komutlarını bitirmiş olduk. Bundan sonra önce gelişmiş ASP
yöntemleri üzerine bilgi edinip sonra örnek uygulama yazılımı üzerine eğileceğiz.
ASP'de Mantık Kontrolleri
ASP'de Mantık Kontrolleri
İster ASP diliyle, ister başka programlama diliyle yazılmış olsun, bilgisayar programlarının
varlık sebebi, çeşitli durumları değerlendirmek ve kararlar verip bu doğrultuda işlemine devam
etmektir. Bunu programlarda mantık kontrol komutları ile yaparız. Program bu öğeler
sayesinde karşılaştırmalar yapar, belirli koşulların yerine gelip gelmediğine bakar veya belirli
bir durumun oluşuna veya sona erişine bağlı olarak başka bir işlemi başlatır veya bitirir. Kimi
zaman da, programa yapmakta olduğu işi durdurarak, başka bir iş yapmasını bildirebiliriz.
If – Then – Else
<%
if şart then
işlemler]
else
end if
%>
Bunu bir örnekle ifade edelim; Programımız eğer saat 12’den önce çalıştırılırsa sayfada
“Günaydın”; eğer saat 12’den sonra çalıştırılırsa sayfa da “Tünaydın” yazısının yazdırılacağı
<%
response.write “Günaydın!”
else
response.write “Tünaydın!”
end if
response.write “Sayfamıza
hoş geldiniz”
%>
Program çalıştırıldığı zaman, çalıştırdığınız saate göre programdaki selam tarzının değiştiğini
saati ve tarihi bildiren now() fonksyonudur. (hour() fonsyonu ise içindeki tarih ve saatin
yanlızca saat basamağını gösteren bir fonksyondur) fonksyondan dönen değer eğer 12’den
Eğer bu ilk karşılaştırmanın sonucu doğru değil ise yani saat 12 den büyük ise, doğru ise
yapılacaklar alanındaki komutlar pas geçilerek yanlış ise yapılacaklar alanındaki komutlar
bir karşılama yazmamız daha doğru olmaz mı? If döngüsü kendi içerisinde sınırsız elseif
imkanı vererek bize bunu sağlar. Her elseif yeni bir if gibi işlem yapar.
<%
if şart1 then
yapılacak işlemler]
yapılacak işlemler]
else
end if
%>
<%
response.write “Günaydın!”
response.write “İyi
akşamlar”
else
response.write “Tünaydın!”
end if
response.write “Sayfamıza
hoş geldiniz”
%>
Select case
VbScript’in bir diğer duruma bakarak karar verme ifadesi, select case (durum seç) yapısıdır.
Durum seç
Seçmeyi bitir
Vbscript, verdiğiniz durum listesine veya içinde çeşitli değerler bulunan değişkene bakarak,
bu değişkeni bir “durum” sayacak ve verdiğimiz durumlardan hangisini tutuyorsa, ona ait
<%
case 5,6,7,8,9,10,11
response.write “Günaydın!”
case
12,13,14,15,16,17,18
response.write “Tünaydın”
case 19,20,21,22
response.write “İyi
akşamlar”
case else
end select
response.write “Sayfamıza
hoş geldiniz”
%>
Select case komutuna, içindeki değerleri “durum” sayacağı dizi veya değişken olarak
ile 24 arasında bir değer dönecektir. Bu değer select case için 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 çalıştırılacaktır. Sonuncu case’e lütfen dikkat edin: burada case olarak else
Döngüler
Mantık kontrolleri bir programın akışını kontrol için kullanacağımız birinci önemli unsur ise,
döngü de ikinci en önemli unsur sayılır. Hatta programcının tembellik katsayısına göre benki
de birinci en önemli unsur bile sayılabilir! Çünkü döngü (loop) programa, bir işi bitesiye
kadar yaptırma imkanı verir. Tabii bu iş sonsuza kadar sürecek olursa, buna endles loop
For-Next döngüsü
Programın bir işi belirli kere yapmasını istiyorsak, ona yapacağı işi bir sayaç değişkeni ile
Yapılacak işler
Next
Burada, “sayaç” yerine istediğimiz bir değişken adını, “başlangıç” yerine sayacın
başlatılmasını istediğimiz sayıyı, “son” yerine sayacın durmasını istediğimiz sayıyı, ve “adım”
yerine, sayacın kaçar kaçar artmasını istediğimizi 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 artırılır ve yapılacak işler yeniden yapılır. Bir örnek yapalım.
<%
Dim gunler
gunler = Array(“Pazartesi”,
“Salı”, “Çarşamba”,
“Perşembe”, “Cuma”,
“Cumartesi”, “Pazar”)
for sayac = 0 to 6
response.write
gunler(sayac)
next
%>
günlerin adlarını atıyoruz. Sonra sayac adlı sayacı 0 dan 6’ya kadar arttırıyoruz (sayacın
birer birer artmasını istersek step komutunu yazmayız). Şimdi kendimizi bir an için vbscript
yerine koyalım ve birinci adımda yaptığımız işi düşünelim: “hımm.. programcı bey, benim
sayac’ı önce 0 yapmamı istiyor; peki sayac 0 olsun. Sonra günler dizi-değişkeninden sayac
değeri ile aynı sayıyı taşıyan değişkeni alıp bunu ekrana yazdırmamı istiyor. Peki, gunler (0)
ne imiş, bakalım. Hımm gunler (0) Pazartesi imiş. O halde ziyaretcinin ekranına bir Pazartesi
kelimesi yazalım. Şimdi sırada next var. Yani sonraki adıma devam edeceğiz, step değeri
Ve böylece vbscript, sayacın son değeri olan 6’ya ulaşıncaya kadar 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
While-wend döngüsü
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 ziyaretci tarafından belirlenmiş olabilir. Özetle yapılmasını arzu
etdiğimiz işin ancak sayaç bir değerden azsa, çoksa ve eşitse yapılmasını, bu durum
değişirse durmasını isteyebiliriz. Bunu while (..iken) komutuyla yapabiliriz. While döngüsü
sayısı 5’den küçük ise yazdırmasını istiyor olabiliriz. Bu durumda kodumuzda for-next
response.write
gunler(sayac)
sayac = sayac + 1
wend
Burada while döngüsünün wend kelimesi ile sonlandığına dikkat edin. While satırındaki
sayacı değiştirdik, programın sayaç 5’den küçük veya 5’e eşit ilen çalışmasını sağladık.
For’dan farklı bir diğer ifade ise sayacı artıran “sayac = sayac + 1” ifadesidir. Bu ifade ilk
bakışta garip görünebilir. Fakat bilgisayar açısından bu “sayacın o anki değerini al, 1 ile
topla ve bulduğun yeni değeri sayacın mevcut değerinin üzerine yaz” demektir.
Sayfayı Yazdır
Farklı bir sayfa yazdırma yöntemi. Sayfanın sadece içeriğini yazdırmanızı sağlayan bir script ve
açıklaması
Kağıt üzerinden okumak, çoğu zaman bilgisayar ekranından okumaktan cazip gelebilmektir
hâlâ. Bazen de zorunluluktan ötürü, belgelerin çıktısını almak ihtiyacı hissedebiliriz. Bu gibi
sebeplerle hemen hepimiz internette dolaşırken bazı sayfaları yazdırma ihtiyacı duyarız.
Yazdırma işlemini Internet Explorer (veya diğer web browserlar) yardımıyla gerçekleştirebiliriz.
Browser'da File (Dosya) menüsünden Print (Yazdır) bölümüne tıklayarak o anda
görüntülenmekte olan sayfanın çıktısını alabiliriz.
Eğer bir web sayfası hazırlıyorsanız ziyaretçiye bu hizmeti kendi sayfanız içerisinden vermek
isteyebilirsiniz. Bunun için yapmanız gereken sayfanızın başına (head) aşağıdaki kodu
yazmanız
<script language="JavaScript">
function yazdir()
{
print();
}
</script>
ve sayfa içerisinde
<a href="#" onclick="yazdir()"> Sayfayı
Yazdır! </a>
Yazdırma işlemini browser menüsünden veya yukarıdaki kod ile yaptığınızda sayfanın tamamı yani
sayfada yeralan tüm resimler, bannerlar, butonlar vs. gibi gerekli - gereksiz herşey yazdırılacaktır. Bu
makalede bahsedeceğimiz kod yardımıyla, sayfanızın sadece içeriğini yazdırmış; gereksiz bölümlerin
basılmasını (bannerlar, sayfanıza ait resimler vb..) engellemiş olacaksınız.
Yazdırma scriptinin yaptığı işlem aslında basit bir temele dayanmaktadır : Sayfada yeralan include
dosyaları temizleyerek sadece asıl metnin yazdırılmasını sağlamak. Kısacası bu scriptin çalışabilmesi için
sayfalarınızın temel içeriğinin (bannerlar, menüler, sayfanın üstünde ve altında yeralan bilgiler vb..)
include file olarak yeralması gerekmektedir.
Script, çalıştığında kendisini refere eden sayfanın adresini alır, bu sayfanın içeriğini satır satır okuyarak
ekrana yazar. Böylece sayfa içerisinde yeralan include dosyaların işletilmesini sağlar. Scriptin head
bölümüne yukarıda yer alan yazdır() fonksiyonunu ekler ve body tagına da <body
onload="yazdir();"> kodunu eklerseniz script çalıştığı anda direkt yazdırma işlemini gerçekleştirecektir.
sayfayazdir.asp
<%@ Language=VBScript %>
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>Sayfayı Yazdır
<script language="javascript">
function yazdir()
// yazdırma işlemi için gerekli fonksiyonu tanımlıyoruz
{
print();
}
</script>
</HEAD>
<!-- sayfayazdir.asp çalıştığında yazdırma işleminin direkt gerçekleşmesi için gerekli kodu ekliyoruz--
>
<BODY onload="yazdir()">
<br> <%
'Gerekli değişkenleri tanımlıyoruz
Dim strReferrer, objFSO, objOpenFile, strLine
' sayfayazdir.asp direkt çalıştırılmış ise refere eden bir sayfa olmayacağı için
' hata oluşacaktır. Böyle bir durum gerçekleşmesi ihtimaline karşılık mesaj verilmesi
' sağlanıyor.
End If
</BODY>
</HTML>
Değişkenler
ASP'de değişkenler konusunu bu makalede enine boyuna inceleyeceğiz.
Bütün programlama dillerinde olduğu gibi vbscript (asp) de de değişkenler terimi vardır. Bu terim
sayesinde program içerisinde işleyeceğimiz sayısal veya metinsel değerleri kullanmaktansa bu değerlerin
yerini tutan bir değişkeni kullanırız. Bu sayede program içerisinde daha esnek bir yapı kurabiliriz.
Değişkenleri temsil eden adlar vardır, örneğin “isim” değişkeni (refiye, ilknur, meral, günce… gibi) isim
değerleri alır. Anlaşıldığı üzere değişkenin adı değişmiyor fakat değişken içerisinde tutulan değer
değişebiliyor. (bu değişiklik programcının kontrolunde meydana geliyor.) Verilen değer program akışına
gore farklılaşabildiği için bu terime değişken diyoruz.
Asp de değişken tanıtma işlemi için “Dimension” (boyutlandır) kelimesinin kısaltılmışı olan “DIM” komutu
kullanılır. Bu komut yardımı ile kullanılan değişkenler kod başlangıcında belirtilerek tanımlanır.
<%
Option Explicit
Dim Ad
%>
Örnekte görüldüğü gibi dim komutu ile “Ad” değişkenini tanımlamış olduk bu tanımlamayı yapmadan
önce “option explicit” komutunu kullandık. Bu komutu kullanma amacımız Ad değişkenini programın
ilerleyen aşamalarında bir daha kullandırtmamak (değişken adı olarak) ve karışıklık olmasını
engellemektir (değişken değeri değiştirilebilir fakat bu isimde başka bir değişken kullanılamaz). Bu
tanımlama işlemini:
<%
Ad = “Günce Akkoyun”
%>
Şeklinde kullansak dahi program hatasız çalışacaktır. “Option Explicit” komutu ile,
<%
Option Explicit
Ad = “Günce Akkoyun”
%>
Şeklinde bir kullanım mutlaka hata verecektir. (Variable is undefined : ‘Ad’) bu hata bize değişkenimizin
tanımlanmadan kullanıldığını hatırlatır. Doğru kullanımı ise
<%
Option Explicit
Dim Ad
Ad = “Günce Akkoyun”
%>
Şeklinde olacaktır.
Seri Değişkenler :
Vbscript programları içerisinde bir değişkene birden çok değer verilebilmektedir. Bu olaya “Seri Değişken”
denilmektedir. Örnek vermek gerekirse 7 kişilik bir sınıf içersindeki öğrencilerin isimlerini tek bir
değişkende tutabiliriz.
<%
Option Explicit
Dim Ad(7)
Ad(1) = “Günce”
Ad(2) = “Refiye”
Ad(3) = “Meral”
Ad(4) = “Alp”
Ad(5) = “Serap”
Ad(6) = “Sezer”
Ad(7) = “İlknur”
%>
Şeklinde bir tanımlama yaptığımız zaman “Ad” değişkenine 7 farklı değer vermiş olduk. Kaç farklı değer
alabileceğini dim komutu ile değişken tanımlarken parantez içerisinde boyutlandırmış olduk. Bu örnekte
neden her isim için farklı değişken kullanmadık ta bir seri kullandık diyecek olursanız. Yani
<%
Option Explicit
Ad1 = “Günce”
Ad2 = “Refiye”
Ad3 = “Meral”
Ad4 = “Alp”
Ad5 = “Serap”
Ad6 = “Sezer”
Ad7 = “İlknur”
%>
Hemen cevabını verelim; dizi değişkenlerde bir değişkeni numarasıyla kullanabilirsiniz ve numara yerine
başka bir değişken kullanabilirsiniz.
Not : değişken tırnak içerisinde ise string özelliğindedir. Matematiksel işlem yaptırılamaz.!!
<%
...
numara = 6
response.write Ad(numara)
...
%>
Şeklinde bir kullanım ile 6 numaralı “Ad” değişkenini ekrana yazdırmak gibi bir işlem gerçekleşecektir. (bu
programcıkta ilk olarak “numara” değişkenine 6 değerini atadık ve bu “numara” değişkenini “Ad(numara)”
şeklinde seri içerisinde kullandık.)
Sabitler :
Program içerisinde herzaman değişken değerleri değişebilir değil bazende sabit olmaları istenebilir. Bu tip
değişkenlere (değişken demek biraz yanlış ama..) bir kere değer atandıktan sonra birdaha değiştirilemez
(sabit değer bütün program boyunca (hatta isterseniz bütün site boyunca) değişmeden kalır). Bu işlemi
vbscript içerisinde “Constant” (Sabit) kelimesinin kısaltılmışı olan “Const” komutu yardımı ile yapılır.
Const terimi ile değer verilmiş bir değişkenin tanımlanmasına gerek yoktur.
<%
Option Explicit
%>
Şeklinde kullanılan bir sabit değişkene başka bir veri atanmaya çalışıldığı zaman hata verecektir.
<%
Option Explicit
Const Url = “Jeoloji.net”
....
Url = “Superonline.com”
%>
Yani “Url” sabitine kendi değeri dışında bir değer verilmek istenmiştir fakat hata mesajı verecektir. ( Illegal
assignment: 'Url’ ).
Vbscript programlama dilinde kullanılan değişkenlere genel olarak variant denir. Variant genel olarak bir
grubu temsil eder ve alt grupları mevcutdur. Bunlar değişkenin cinsine gore otomatik olarak tanınır.
(diğer programlama dillerinde bu özellik yoktur ve değişken tanımlanırken veri tipi yani variant grubu
tanımlanır fakat asp de bu olay yordamcı tarafından otomatik gerçekleşir.)
Değişkenler II (Devamı)
Ilk makalenin devamı...
Operatörler :
Değişkenlerimiz arasında işlemler yaptırabiliriz. Bu işlemler için operator dediğimiz işaretleri kullanırız.
Bu operatorler bildiğiniz matematiksel operatorlerdir.
+ Toplama
- Çıkartma
* Çarpma
/ Bölme
^ Üs alma
= Eşitşik
< Küçüktür
> Büyüktür
<> Farklılık
And Ve
Or Veya
Not Değil
<%
Option Explicit
Dim Ad,Soyad,isim
Ad = “Günce ”
Soyad = “Akkoyun”
isim = Ad + Soyad
respose.write isim
%>
Sonuç “Günce Akkoyun” şeklinde olacaktır. Unutmamak gerekir ki her operator her veri tipinde
kullanılamaz. Sayısal veya metinsel özellikteki verilere göre kullanım alanları değişir.
Hazır Fonksiyonlar :
Vbscript içerisinde değişkenlerimizi kontrol altında tutabilmemiz için bir dizi hazır fonksiyon
içermektedir. Bu fonksiyonları gruplara ayırırsak beş ana grupta toplanırlar.
Metin işlemleri :
Metin işlemleri isminden anlaşılacağı metinler üzerinde işlemler yapmamıza olanak tanıyan
fonksiyonlardır. Bu fonksiyonlar diğer programlama dillerinde de aynen vardır. Kullanımlarına gelince.
InStr : Uzun bir değişken içerisinde (string) daha kısa bir değişkenin (string) bulunup bulunmadığını
arar; bulursa kısa değişkenin uzun değişken içerisinde kaçıncı karakterden itibaren başladığını belirtir.
Diyelim ki
<%
Option Explicit
Dim Metin, Ara, Bul
Ara = “dağlar”
Bul = InStr(Metin,Ara)
respose.write Bul
%>
Örneğimizde aratılan değişken (dağlar) aranan metin içerisinde 10. karakterden itibaren başladığı için
çıktı olarak “10” değeri ekrana yazdırılacaktır. (response.write komutu ekrana değer yazdırmada
kullanılır. İleride açıklanacaktır.)
<%
Option Explicit
Dim Metin,Uzunluk
Uzunluk = Len(Metin)
respose.write Uzunluk
%>
<%
Option Explicit
Buyuk = Ucase(Metin)
respose.write Buyuk
%>
Lcase : Ucase fonksiyonunun tam zıttıdır, şöyleki verilen değişken içerisindeki büyük harfleri küçük harfe
dönüştürür.
<%
Option Explicit
Kucuk = Lcase(Metin)
respose.write Kucuk
%>
Space : İçerisinde vereceğimiz değer kadar boşluk olan bir string yaratır.
<%
Option Explicit
Dim Bosluk
Bosluk = Space(5)
respose.write Bosluk
%>
String : Space fonksiyonu gibi çalışır. İstediğimiz sayıda ve istediğimiz bir karakterde bir string oluşturur.
<%
Option Explicit
Dim Degisken
respose.write Degisken
%>
Program çıktısı “GGGGG” şeklinde olacaktır. (fonksiyon içerisindeki 5 değeri karakterin tekrar etme
sayısıdır.)
Left : Bir string içerisinde soldan (baştan) verdiğimiz sayı kadar olan stringi bize verir.
<%
Option Explicit
Metin = “Refiye”
Soldan = Left(Metin, 3)
respose.write Soldan
%>
Program çıktısı olarak “Refiye” değerinin soldan üç harfi olan “Ref” olacaktır.
Right : Bir string içerisinde sağdan (sondan) verdiğimiz sayı kadar olan kısmını bize verir.
<%
Option Explicit
Metin = “Refiye”
Sagdan = Right(Metin, 3)
respose.write Sagdan
%>
Program çıktısı olarak “Refiye” değerinin sağdan üç harfi olan “iye” olacaktır.
Mid : Bir string içerisinde başlangıç noktasını ve karakter olarak boyutunu verdiğimiz alanda yer alan
stringi verir.
<%
Option Explicit
respose.write Deger
%>
Sonuç olarak “Erhan Arı” değerinin dördüncü harfinden itibaren iki karakter olan alan yani “an” değeri
çıkacaktır.
Replace : Verilen string içerisinde istenilen bölümleri bulup başka bir string ile değiştirmeye yarar.
<%
Option Explicit
Deger1 = “Orhan”
Deger2 = “Erhan”
Sonuc = Replace(Metin,
Deger1, Deger2)
respose.write Sonuc
%>
Metin değişkeni içerisinde “Orhan Arı”, deger1 olarak tanımlanmış kısmı “Orhan” , bulup deger2 olarak
tanımlanan “Erhan” değişkeni ile değiştirilecek ve çıktı olarak “Erhan Arı” gösterilecektir.
Sayısal işlemler :
Kullanılan tüm sayısal fonksiyonarın kullanım biçimi aynıdır. Fonsiyon sonucu bir değişkene atılır ve
işlemlerimize devam edilir. Matematik te kullanılan tüm foksiyonlar aynen geçerlidir bunların bazıları Cos,
Sin, Tan, CoTan, Log, Ln vb.. şeklindedir. Kısa kısa bu fonksiyonlara değinelim.
<%
Option Explicit
Sayi = 90
Sonuc = Cos(Sayi)
respose.write Sonuc
%>
Sonuç olarak “90” sayısının kosinisü olan “-0,4480” değeri çıkar (unutmayın trigonometrik işlemlerde
Tarih işlemleri :
Visual basic programlama dilinin hemen hemen tüm zaman fonsyonları vbscript’te de aynen kullanılır.
<%
Option Explicit
Dim Tarih
Tarih = Date()
respose.write Tarih
%>
<%
Option Explicit
Dim Saat
Saat = Time()
respose.write Saat
%>
Now : O anki tarih ve saati aynı anda verir. (25.07.1997 03:11:40 gibi)
<%
Option Explicit
Dim Simdi
Simdi = Now()
respose.write Simdi
%>
Weekday : Verilen tarihteki günün haftanın kaçıncı günü olduğunu verir (1 gibi)
<%
Option Explicit
Dim Gun
Gun = Weekday(Date)
respose.write Gun
%>
Weekdayname : Verilen değere karşılık gelen gün ismini verir. (1 için Pazar gibi)
<%
Option Explicit
Dim Tarih
Tarih = WeekDayName(1)
respose.write Tarih
%>
Month : Verilen tarihteki ayın sayısal olarak değerini verir. (06.05.2001 için 5 gibi)
<%
Option Explicit
Dim Ay
Ay = Month(date)
respose.write Ay
%>
Monthname : Verilen değere karşılık gelen ay adını verir. (5 için Mayıs gibi)
<%
Option Explicit
Dim Tarih
Tarih = MonthName(5)
respose.write Tarih
%>
Day : Verilen tarihin gün kısmını sayısal olarak verir. (25.07.1997 için 25 gibi)
<%
Option Explicit
Dim Gun
Gun = Day(date)
respose.write Gun
%>
Year : Verilen tarihin yıl kısmını sayısal olarak verir. (25.07.1997 için 1997 gibi)
<%
Option Explicit
Dim Yil
Yil = Year(date)
respose.write Yil
%>
Vbscript, bu değerleri dorudan işletim sisteminden alacağı için bölgesel ayarlar olarak nasıl
tanımlanmışsa öyle gösterilecektir. Eğer serverda tarih ve saat türkçe ayarlanmamışsa programda da
ayarlı standarta göre veriler işlenecektir. Örneğin ingiltere standartlarına göre ayarlanmış bir serverda
ay adları Ocak, Şubat şeklinde değil January, February biçiminde dönecektir bunlara dikkat edersek
Test İşlemleri :
Bazende değişkenlerimizin hangi tipde olduğunu sınamamız gerekir bu eksiği kapatmak için vbscript
içerisinde test fonksiyonları geliştirilmiştir. Bu fonsiyonlardan dönen değer 1 veya 0 yani doğru yada
Isarray : değişkenin dizi değişken (array) olup olmadığını sınamak için kullanılır.
Isempty : değişkenin bir veriye sahip olup olmadığını sınamak için kullanılır.
Isnull : değişkene tanımlandıktan sonra hiç değer atanıp atanmadığını sınamak için kullanılır.
Isnumeric : değişkenin sayısal bir değer olup olmadığını sınamak içine kullanılır.
<%
Option Explicit
Bos = Isempty(Isim)
respose.write Bos
%>
Program çıktısı olarak False değeri dönecektir. Çünkü isempty fonsiyonu ile sınadığımız değişkenin bir
değeri var.
Dönüştürme işlemleri
Şimdilik bu kadar programcı dostlarım. Gelecek yazımda akış kontrolleri ve asp nesnelerini
geçebilirsiniz.
Herkese Merhabalar...
Bu yazımızda, değişik bir konu ile beraberiz. Evet bu sefer, uzun uzadıya kodlar ile işimiz yok. Konumuz
başlıkda da yazdığı gibi ASP de garfik barlar yapmak. Bugün ASP ile uğraşan herkesin iyi kötü bir
Veritabanı vardır. Bazen ziyaretcilerimize, bazende kendimiz için istatistikler hazırlarız ve bunları HTML
formatında tablolarda gösteririz. Bu bilgileri tablolarda gösterirken, gerek nümerik olarak sayı-adet
gerekse yüzdesel olarak gösteririz. Bilgileri hem görsellik açısından, hemde bir bakışta daha iyi görebilme
bakımından renkli barlar ile gösterebiliriz.
Bunu şimdi ufak bir örnek ile yapalım. Ben burda sizlere daha kolay anlatabilme açısından küçük bir
Veritabanı hazırladım. DB'mizin adı "bar.mdb" olsun. ıçinden bilgi alıp göstereceğmiz tabonun adı da
"bilgi" olsun. Ve yine bu tablonun içinde, meslek adında bir field(alan) olsun.
Gördüğünüz gibi yukarıda adını söz ettiğim Veritabanının bir kesiti var. şimdi, biz burda örnek olsun diye
"meslek" adlı alandaki bilgileri istatistksel olarak tabloya barlar ile dökelim.
<%
dim baglanti,dizi,sql
set baglanti=server.createobject("adodb.connection")
baglanti.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("bar.mdb")
%>
Ardından, bize o alandaki mesleklerin herbirini sayıp derleyecek olan SQL sorgumuz.
<%
SQL="select count(*) as toplam from bilgi where meslek= 'Bilişim' or meslek='hukuk' or
meslek='mühendis' or meslek='kamu' or meslek='banka' or meslek='sigorta' or meslek='Sağlık' or
meslek='Medya' or meslek='eğitim'"
set dizi=baglanti.execute(SQL)
dim toplam
toplam=dizi ("toplam")
SQL="select count(*) as toplam from bilgi where meslek = 'Bilişim'"
set diz i=baglanti.execute(SQL)
%>
<td width="50%">Bilişim</td>
<td width="50%" bgcolor="#808080" 2" align="LEFT"><table align="left" height="18" width="<%=
((dizi("toplam")*100)\toplam)*2 %>" border="1" cellspacing="0" cellpadding="0" bgcolor="blue"
bordercolor="#000000" style="border-style: solid">
... ve burada da yukarıda şablonda olduğu gibi diğer meslekler için tablolamaya devam ediyoruz !
Evet, bunu derlediğiniz zaman, sayfanızda yaklaşık şöyle bir çıktı alacaksınız: ( Not : Yukarıda table renk
kodları ile, aşğıdaki çıktı resminin renkleri tutmaz. Sadece örnek teşkil etmesi amacı ile resmedilmiştir.)
Tabii hemen belirtelim, yukarıdaki saedece basit bir örnek. Ama bunu baz alarak, daha büyük
Database'lerin istatistik çıktılarını rahatlıkla alabilirsiniz. Ayrıca barları renklerini her hücre için değişik de
yapabilirsiniz. Daha da fantazi yapmak isteyenler, html renk kodları ile yetinmezler ise bunu yerine bir
gradient ile hazırlanmış şık bir gif de oraya koyabilir.
Türkiye’de ve Dünyada Asp Hosting firmaları
Sitemi Nasıl Yayınlarım?
Web'de, hobi olarak yada işletmesinin tanıtımını yapmak isteyenlerin en büyük problemleri doğru ve ucuz
web yayınlama ortamıdır.
Bu konuda özellikle son günlerde çok sayıda soru gelmekte.Web sitesi kuruyorum bunu internette nasıl
yayınlarım?
Hazırlamış olduğumuz web sitesini yayınlamak için mutlaka yapmamız gereken iki işlem vardır:1-
Sitemiz için bir isim bulmak ve tescil etmek,2-Sayfalarımızı yayınlayacak bir server alanı ayarlamak.
Her iki işlem içinde hem bedava servislerden hem de ücretli servislerden faydalanabiliriz.Eğer sitemiz
bir şirket veya kuruma ait ise ücretli servislerden faydalanmak en doğrusu.Çünkü bedava hizmet veren
hosting firmaları, alan adı olarak uzun isim kullanmakta(Mesela:www.servis sağlayıcı ismi/sizin aldığınız
isim gibi) ve sayfalarında kendi reklam bannerlarını yayınlamakta.Bu da bir işletme sitesi ziyaretçileri
için pekte hoş karşılanacak bir durum değil.Eğer ki kendi amatör sitemizi yayınlıyorsak bu durum
ziyaretçiler tarafından pek dikkate alınmaz.Alan ismine gelince uzun alan isimlerini kısaltmakta pek tabiki
mümkün.www.cjb.net stesinden alacağınız bedava alan ismini sitenize yönlendirerek.Böylece uzun va
karmaşık gibi görünen alan isminiz www.alanadı.cjb.net şeklinde olacaktır.
ısim tescil işlemini nasıl yapacağız sorusuna gelince.Bu işlemi yapabileceğimiz yerli ve yabancı siteler
mevcut.Bunların başında register.com gelmekte.Yerli tescil işlemi yapan sitelerin başında
domaintescil.com ve mynet.com bulunmakta.Eğerki alacağımız alan adının sonunda tr ibaresinin
bulunmasını istiyorsak bu tescili yapabileceğimiz tek kurum Ankara'daki Ortadoğu Teknik Üniversitesidir.
Sitemizin tasarım ve alan adı tescili işlemlerini tamamladıktan sonraki aşama sayfalarımızı
yayınlayacağımız alana.Bir web sitesini yayınlamak isteyen kişi yada kuruluşun kendisine sorması gereken
üç soru vardır: 1-Tasarladığım web sitesi ne kadar alan kaplayacak,2- ıhtiyacıma cevap verebilecek servis
sağlayıcı hangisi, 3-Bunların maliyeti ne olacak.
Bu soruların cevabını sağlayacak pek çok bedava ve paralı servis sağlayıcıları mevcut.Bunları kısaca
tanıtmadan önce bir servis sağlayıcıdan neler beklemeliyiz?ılk olarak siteye erişim kolaylığı
sağlamalı,bununda en kolay yolu ftp desteği sağlaması.Bunun yanında web tabanlı uzaktan yönetime
olanak sağlaması.Alan ismimize ait mail hizmeti verip vermediği.Trafik kısıtlaması olup olmadığı gibi
olanakları minimum olarak sağlamalı.
şimdi yerli ve yabancı asp desteği veren bedava ve ücretli servis sağlayıcılara kısaca göz atalım:
websahibi.com(Web sahibi): 10 MB Web alanını 1 YIL 15$ gibi gayet ucuz bir rakama kiralayan firma
oldukça hızlı bir altyapıya sahip olup kullanıcılarına ASP , PHP desteği sağlamakta...
interca.com(interCa Internet Hizmetleri): Windows 2000 Server üzerinde ASP, PHP, CGI, XML ve
Access Database destegi vermektedir.
si.net.tr(Sim ınternet Hizmetleri): Uygun fiyatlara Hosting hizmeti veren firma ASP , PHP Desteğinin
yanında FTP , E-Posta Listesi , SSL Secure Server gibi hizmetlerde vermekte.
bizimhost.net(Bizimhost): Ayda sadece 6$ gibi küçük bir rakama 50 Mb Web Alanı* Sınırsız POP3 ve
Web Mail , Asp , Ms Access Veritabanı ve MsSQL Server 7 Desteği , Ftp Erişim , gibi hizmetler veriyorlar.
WebHostme.com: Free Hosting & Free Email sunan bu firma size FrontPage ,ASP ve MS-Access
(Database) desteği sağlamakta.Domaininizi alıp hostunu bu serverler üzerinden free yaptırabilirsiniz.
CFM-Resources.Com: Size Free Cold Fusion, ASP ve FTP desteği sağlayan bu sitede Access database
kullanıyorsunuz.
AtFreeWeb.com: 20 Mb.Free ASP Hosting sağlayan firma size aynı zamanda FTP olanağıda sağlamakta.
Tek dezavantajı sayfanın üst tarafında bir Banner'ın olması.
brinkster.com: Brinkster bir çok ASP 'cinin -baştada benim- free hizmetleri ile yakından tanıdığı , eski
bir firmadır.Free ASP Hosting'i.30 mb yer veriyor.FTP desteği yok.wwwxx.brinkster.com/kullanici şeklinde
bir adres veriyor. hizmetlerinin yanında 10,95 USD aylık rakamla paralı hosting hizmeti
sağlamaktalar.Reklam yok
ata.net: Atanet "NT Hosting, UNIX hosting, Web Hosting, E-Commerce Hosting, Domain Registration"
gibi alanlarda hizmet vermektedirler...Ayrıca webpartner sistemini ilk uygulamaya başlayan firmalar
arasındadırlar.
7host: Brinkster'den sonra en popüler free hosting.50 mb yer veriyor.FTP hesabı ve sınırsız email
yönlendirme mevcut.Bir kontrol paneli sayesinde hesabınızı kontrol etme özelliği var.Reklam var
phdiji: Bir Fransız hosting firması olan Phidji inanılmaz özellikleri ile değil free sunucuları ücretli
sunucuları bile geride bırakıyor.100 Mb yer, SmartUpload, FSO ve ASPMail desteği veren hostinge
dosyalarınızı FTP programı ile de yollayabiliyorsunuz.
kriweb.com(Kriter web hizmetleri): Alan boyutunu ve mail adedini kendiniz belirleyebileceğiniz ASP
ve UNIX hizmeti veren,FTP desteği yanında web tabanlı yönetim ve mail hizmetleride kullanıcılara
sunulmakta.Ücretlendirme istediğinğiz hizmet türüne göre değişmekle birlikte fiyatları gayet uygun.
<html>
<head>
</head>
<body>
<form method="post" action="form_isle.asp">
</form>
</body>
</html>
Bu dosyamızda ilk başta <form> tagının "action" özelliği ile dosyayı işleyecek dosyanın adını ve uzantısı
girdik.ıki tane text ve bir tane submit butonu oluşturduk.Birinci texte "ad" ismini verdik.ıkincisine ise
"soyad".Bunlara bu adları vermemizin sebebi form_isle.asp dosyasında bunları kullanıcak olmamız.
<html>
<head>
</head>
<body>
ad=Request.Form("ad")
soyad=Request.Form("soyad")
%>
<%=ad%> <%=soyad%>
</body>
</html>
İnternetin geliştirilmeye başladığı sıralarda yazılımcılar HTML kullanmaya başladılar. Ancak bu kodla
yapılabilecekler çok sınırlıydı; sadece resimler, metinler ve linkler üzerine kurulmuş bu sistem web
sayfalarında monoton bir ortam yarattı. Başlarda interaktiflik yoktu yani sayfa ile client (kullanıcı)
arasında bir bir bağ mevcut değildi. Bir mağazanın vitrininden bakar gibi bakıyorduk yapılanlara. Daha
sonraları insanlar bu monotonluktan kurtulmak için çabaladılar ta ki Microsoft’un dehaları BackOfice
tabanlı işletim sistemi mimarisini bulana kadar.
Artık Back Ofice sayesinde server (sunucu) yapıları gelişmeye başladı işin içine etkileşim girdi ve NT4 ile
IIS (internet information server) geliştirildi, böylece komplex bir internet programlama dili için çalışan
microsoft ASP’yi (active server pages) piyasaya sürdü.
HTML dilinde program kodları client taraflı çalışır, yani server komutları yolar client ise bu kodları
yorumlayarak ekrana yansıtır. Bu sistem güvenlik ve etkileşim açısından çok zayıftı. Web sayfalarının
kodları her ziyaretçinin browserına (internet tarayıcısına) gönderildiği için kodların güvenliği azalır. Bütün
kod client tarafında çalıştığı için etkileşim olmaz, tıpkı mağaza örneğinde olduğu gibi vitrinden bakmakla
yetiniyorduk.
ASP dilinin çalışma tarzı ise tamamen farklıdır. Asp ile yazılmış bir kod tamamen server (sunucu)
tarafında çalışır ve client’a sadece çıktılar gelir (yani client asp ile yazılmış bir sayfaya girdiği zaman,
server direkt olarak sayfayı tıpkı bir program çalıştırır gibi işletir). Ve sayfa çıktılarını HTML diline çevirir.
Daha sonra elde edilen veri çıktılarını sizin browserınıza gönderir. Bu çıktılar ise browserinızca
yorumlanarak ekrana yazdırılır.
Asp’nin çalışma mantığından bahsettiğimize göre asp nin neye benzediğine bakalım. Server taraflı
programlar (asp) herzaman “<%” ile başlar ve yine herzaman “%>” ile biterler bunlar (taglar) dışında
yazacağınız kodlar server tarafından çalıştırılmayacak ve client’a direkt yollanacaktır. Bu taglardan “<%”
a açılış tagı “%>” tagınada kapanış tagı denmektedir.
“Server server, Peki ama benim serverım yok ki!” diyenleri duyuyor gibiyim. Sizin için Microsoft PWS
(personal web server) denilen yazılımı geliştirdi. Bu yazılım sayesinde windows 95 veya 98 işletim
sistemleriniz üzerine ufak çaplı bir asp sunucusu kurma şansınız olacak ve yazdığınız kodlarını kendi
sisteminizde çalıştırabileceksiniz. Server dışında, başka yazdığınız kodların nasıl çalıştığını görmeniz için
bir web browserınız olmalı (internet explorerı tavsiye ederim). Kodlarınızı yazmanız için bir metin
editorune ihtiyacınız olacak (ben notepad kullanıyorum ve tavsiye ediyorum) bunun dışında bir de front
page programınızın kurulu olması size hız kazandıracaktır. Unutmayın asp çalıştırmak için sadece server
gerekmektedir. Diğer bileşenler işlemlerimizi hızlandırması için araçtır.
Sayfalarınız internetten yayımlamanız için bir hosting ihtiyacınız olduğunu belirtmeden geçmeyelim ancak
bu hizmeti veren serverların neredeyse hepsi paralı firmalardır. Benim tavsiyem kendi bilgisayarınızda
yazdığınız ve çalıştırdığınız (PWS kullanarak) programcıklarını internet üzerinden bedava hizmet veren
serverlar üzerinden yayımlamanız ve bu işi öğrenene kadar bedava serverlarda kalmanız ve acemilik
atmanızdır. Bu bedava hizmeti veren firmalardan en iyisi (benim tercihim) Ewebcity dir..
(http://www.ewebcity.com)
Pws e geçmeden önce biraz ewebcity den bahsedelim; ilk tercih nedenim reklamsız bir servis olmasıdır
yani diğer bedava hizmet sağlayıcılar gibi sayfalarımızda isteğimiz dışında reklam olmamasıdır. Diğer
özelliklerine yakından bakarsak. Asp scriptlerine izin veriyor olması (asp nesnelerini isteğimiz dahilinde
kullanabiliyoruz), database desteğinin mevcut olması (MS Access türü veritabanlarımıza işlem yapmamıza
olanak sunuyor.), veritabanları kök dizini altındaki “/db“ dizini dışında çalıştırılamaz. Öte yandan asp ile
oluşturacağınız text dosyalarınızı da bu dizin içerisinde bulunduracaksınız (çünkü tahmin etdiğimiz üzere
yazma izni sadece o klasöre verimiş), ewebcity nin kötü yanlarından birisi ftp desteği olmaması. “E peki
nasıl yükleyeceğiz sayfaları” diyen arkadaşlar için bir dosya yükleme sayfası yapmış ewebcity. Ancak
testlerimde bu sistemin ftp erişimine göre çok daha hızlı olduğunu fark ettim), mail bileşeni yok (evet
maillarımızı web üzerinden göndermek için kullanacağımız bileşenlere erişim hakkı yok) size verdiği url
(internet adresi) ise http://wwwX.ewebcity.com/uye_adi/ (buradaki X yerine size o anda müsait olan
numara geliyor. Örneğin www4...)
Pws (personal web server) adından anlaşılacağı üzere “kişisel web sunucusu” dur. Yani sizin işletim
sisteminizi basit bir web sunucusuna çevirir. Bundan sonraki tüm işlemlerinizi bu server üzerinden
gerçekleştireceğiniz için bu basamak çok önemlidir. PWS kurmak için ilk önce bu programı bulmanız
gerekiyor. Microsoft kolayca bulabilmemiz için windows 98 cd’sinde bu programa yer verdi.
Personal web server’ı kurabilmeniz için bilgisayarınızda ya bir ethernet kartı yada bir modemin bulunması
ve TCP/IP protokolünün yüklü olması gerekmektedir (zaten bu protolün yüklü olmaması halinde internete
bağlanamazsınız). Şimdi personal web server kurulumuna geçebiliriz. Bunun için windows 98 cd’sinde
bulunan \add-ons\pws\ dizini altındaki kur (yada setup) programına tıklayınız. Açılacak pencerede sizden
yüklemek istediğiniz bileşenleri soracaktır. Bu alanda “Front Page 98”, “Microsoft Data Access
Components”, “Ortak Program Dosyaları” (Comman Program Files), “Personal Web Server”, “Transection
Server” seçeneklerini mutlaka kurmanız gerekmektedir. Çünkü ASP ve benzeri web uygulamaları bu
bileşenler yüklü olmadan çalışmaz.
Pws kurduktan ve bilgisayarınızı yeniden başlattıktan sonra masa üstünüze de bir icon ve taskbarda (sağ
alt tarihin yanı) bir simge belirecektir. Masa üstünüzdeki yayımla butonuna tıkladığınızda “Persona web
mamager” başlıklı bir pencere açılacaktır. Pencerenin sağ tarafında beş adet buton göreceksiniz. Bu
butonlardan en üstdeki “Ana” butonuna bastığınız zaman sağ tarafdaki ekranda çıkan buton yardımı ile
serverınızı başlatıp durdurabilirsiniz. (buton üzerinde “dur” yazıyorsa sistem çalışıyor demektir). Web
serverinız http://bilgisayar_adi şeklinde aktif hale geçecektir (bilgisayar_adi sizin bilgisayarınızın
kurulumu sırasında network tanımında verilmiş isimdir eğer bilmiyorsanız http://localhost da
yazabilirsiniz). Bir siteye erişmek için yazdığınız url adresi bir siteye gitmektedir (http://www.jeoloji.net
gibi) bu site isimlerine “hostname” diyeceğiz “localhost” ise özel bir hostname dir. Sizin bilgisayarınızdaki
serverı işaret eder (herzaman) ip adresi olarak da “127.0.0.1” adresini kullanır. Yani bu iki adres aynıdır
(http://localhost , 127.0.0.1).
Gelişmiş menusu ise web serverınızla ilgili ince ayrıntıları yapmanızı bunlardan en önemlisi olan sanal
dizinler (virtual directorys) bilgisayarınızın fiziksel dizinlerinden farklıdır. Adı üstünde sanal dizin. Birbiriyle
alakasız iki fiziksel klasörü “home” ana dizini altında sanal dizin olarak tanımlayabilirsiniz. “home” ifadesi
sunucunuzun ismine tekabul eder. Benim sunucumun (PWS) ismi “akkoyun” olduğuna göre buradaki
sanal dizinler browserdan http://akkoyun/sanal_dizin_adi şeklinde yazılarak çağrılabilir. (veya
http://localhost/sanal_dizin_adi ). Buradaki sanal dizin ağacına istediğiniz kadar sanal dizin
ekleyebilirsiniz. İsterseniz ekleme işine bir göz atalım.
Ekle butonuna bastığınız zaman açılacak pencerede “dizin” alanına sunucunuz üzerindeki fiziksel yolunu
yazdıktan sonra “diğer ad” kısmına sanal dizininize ulaşmak istediğiniz isimi yazmanız gerekmektedir.
Erişim seçenekleri kısmına hiç dokunmadan “tamam” butonuna basarak işlemimizi bitiriyoruz. Bu
işlemden sonra sanal dizininimizin dizin ağacında görünmesi gerek. Şunu belirtmek istiyorum : sanal dizin
olarak eklediğiniz fiziksel klasörün tüm alt dizinleride sanal dizin olacaktır. İstemediğimiz sanal dizinleri
“kaldır” butonuyla kaldırmak mümkündür.
Varsayılan belgeyi etkinleştir alanında ise, browserdan siteniz (http://akkoyun/) veya bir alt bir alt dizini
(http://akkoyun/jeoloji) çağrıldığında sunucu o dizinde belirli isme sahip belgeler aramaya başlar. Eğer
bulursa onu browsera gönderir. İşte sunucunun otomatik olarak açmak istediği dosyalara PWS “varsayılan
belge” diyor. Varsayılan belgeler genellikle şunlar dır: “index.html, index.htm, index.asp, default.asp,
default.html main.asp, main.html vs...”. Varsayılan belgeyi etkinleştir seçeneği tıklanmış ise sunucu
belirtilen isimdeki dosyaları otomatik açmaya çalışır. Biz o seçili olarak kullanacağız. O alandaki metin
kutusuna ise istediğiniz varsayılan belgeleri yazmakta özgürsünüz, ama unutmayın ki bu sadece sizin
serverınız için geçerlidir. Örneğin Pcnet hostinglerinde varsayılan belgelerini şu şekilde sıralamaktadır :
“Default.htm, default.asp, index.htm, index.html, index.cfm, index.asp”. Yani bu şu demek bu
serverlarda mevcut bir hostinginizde (web sayfasını sizin yerinize serverlarında bulundurma işlemi) ana
dizinde bulunan default.asp ve main.asp dosyalarından default.asp sıralamada yukarıda olduğu için
çalışacaktır. Diğer dosya (main.asp) ise sadece http://xxxxxxx/main.asp yazınca çalışacaktır.
Daha altta bulunan seçeneklerden “dizinde göz atmaya izin ver” seçeneği tıklanırsa ziyaretciler sitenizin
klasörlerinin içeriklerini gözleme imkanına kavuşur, tabi o klasörde varsayılan belgenin yokluğu veya
varsayılan belgenin etkin olmadığı durumlarda. Diğer seçenek ise sunucunun ziyaretçi loglarını tutmasına
yarar (ziyaretçilerin tüm bilgilerini bir dosyada saklar) ama bizim işimize yaramayacağı için
işaretlemiyoruz.
Pws kurulurken c sürücünüz üzerinde bir “inetpub” dizini oluşturacaktır. Bu dizin içerisindeki “wwwroot”
dizini ismindende anlaşılacağı üzere web sitenizi yayımlayacağınız dizin olmaktadır. Web browserınızdan
http://localhost yazdığınız zaman wwwroot dizini altındaki sayfalarınız gösterilecektir.
Şimdi ilk asp programcığımızı yazarak programcılığa merhaba diyelim isterseniz. İlk programcığımızda
ekrana serverın o anki tarihini yazan bir script yazacağız. (ilk olarak basit sistemlerden başlıyarak ileriki
sayılarda daha komplex programcıklara geçeceğiz).
<html>
<head>
<title>Merhaba Dünya</title>
</head>
<body>
<%
response.write date
%>
</body>
</html>
Evet bu programcıkta kullandığımız “response.write” fonksyonun anlamı kendinden sonra gelen fonksyon
veya değişkeni ekrana yazdır demektir. Bu fonksiyonların kullanımını ilerde ayrıntılı şekilde inceleyeceğiz.
Programda yer alan başlangıç ve bitiş tagları arasındaki komutlar server tarafından çalıştırılarak client
tarafına çıktıları yollanacaktır. Bakın yukardaki programımız clint tarafındaki browserımıza nasıl yollanmış
(internet explorerda kaynağı görüntüle diyebilirsiniz).
<html>
<head>
<title>Merhaba Dünya</title>
</head>
<body>
3/27/2001
</body>
</html>
Gördüğünüz gibi client (kullanıcı) a hiçbir asp kodu gitmedi. Sadece sunucu tarafından çalıştırılan
programımızın çıktısı olan tarih değeri gitti. Sanki biz bu sayfayı günlük değiştirip her gün yeni tarihleri
giriyormuşuz gibi. işte asp teknolojisi webmasterlara böyle kolaylıklar sağlıyor. Bütün işlemi sunucuya
yüklemiş oluyoruz.
Active Server Pages(ASP) Tasarımı
Her geçen gün internet hayatımızın ve işimizin ayrılmaz bir parçası olmaya devam ederken; web siteleri
de basit ve statik olmaktan çıkıp içerik yönünden zengin, dinamik, data içeren ve işleyen, komplike
uygulamalar olma yönünde hızla değişmekte ve gelişmektedir. Dinamik script teknolojileri içeren birkaç
değişik teknoloji -örneğin ASP ve Perl- bu konuda uygulamalar geliştirmek için bizlere yardımcı
olmaktadır.
Aslında uygulamayı tasarlamak, mantığını ve akış diyagramını oluşturmak uzun zaman alan ve kodları
yazmaktan daha zor bir iştir.
· Dizayn
· Kodlama
· Test etme
· Dağıtımın gerçekleştirilmesi olarak adlandırılabilir.
Genelde dizayn aşamasına, programın ilk kodlamasının yapılmasından daha fazla zaman ayrılması
gerekmektedir. Çünkü ancak düzgün bir tasarım ile program stabil olabilecektir. Elbette dizayn
aşamasının bitirilmesi ile uygulama geliştirme bitmeyecektir. Hâlâ önümüzde geçilmesi gereken zorlu
aşamalar bulunmaktadır.
Klasik program geliştirme anlayışı içerisinde, yukarıdaki akış takip edilir. Geliştiriciler kodları yazmaya
başlamadan önce uygulamanın tasarımı ile ciddi vakitler harcamaktadırlar. Örneğin büyük yazılım
şirketleri, kodları yazacak olan programcılar tek bir satır bile yazmadan önce detaylı planlar oluştururlar
(Belki ülkemiz için çok geçerli olmayabilir ama...).
Dizayn aşamasında sitenin görünüşü ve HTML kısımları yanında programlama yönü çok fazla vakit
alamamaktadır. Elbetteki HTML dizaynın önemsiz olduğu söylenemez. Kullanıcılar (ziyaretçiler) HTML
olarak sitenin dizaynından etkilenmektedirler. Görsel tasarımı kötü yapılmış bir sitede dolaşmak sıkıcı
olacak ve kullanımı zorlaşacaktır. Böyle olunca ilk ziyaretten sonra aynı kişi bir daha uğramayacak ve
belki bir süre sonra site ziyaretçisiz kaldığı için kapanma noktasına gelecektir.
Programlama (script) tasarımı, programcılar için direkt önemli olmakla birlikte kullanıcılar (ziyaretçiler)
için o kadar önemli değildir. Örneğin sizin ASP ile oluşturduğunuz siteniz güçlü, kolay değiştirilebilir ve
güncellenebilir kodlar(scriptler) içeriyor ise programcılarınız yeni özellikler eklemek için kodlama kısmına
çok fazla zaman harcamayacaklardır. Ziyaretçileriniz de dolaylı olarak bundan faydalanacaklardır.
Programcılarınız hızlı ve daha az hata içeren (çünkü fazla kod yazmaları gerekmeyecektir) kodlar
yazdıkları için ziyaretçilerinizde sürekli güncel, zengin içerikle karşılaşabileceklerdir. Ayrıca iyi tasarlanmış
scriptler, daha az bakım gerektirecek ve çalışan kodlar üzerine yeni özellikler ilave etmek gayet kolay
olacaktır.
ıyi bir ASP tasarımı planlama, dökümantasyon, yukarıda bahsettiğimiz uygulama geliştirme aşamaları ve
sabır gerektirmektedir. Ayrıntılı bir ASP sayfası oluşturmaya başlamadan önce bu siteyi tamamlamak için
nasıl bir scripte ihtiyacınız olduğunu düşünmelisiniz: Sitedeki diğer ASP sayfaları ile benzer özellikler
taşımalı mıdır? Daha önce oluşturduğunuz projedekiler ile benzer fonksiyonellikte bir sayfa oluşturabilir
misiniz? Oluşturacağınız sayfayı bir sonraki projenizde kolaylıkla yeniden kullanabilir misiniz?
Eğer ASP scriptleri yazmaya başlamadan önce tasarıma yeterli zaman ayrılmaz ise maalesef benzer
kodlar için tekrar vakit ayırmak ve düşünmek gerekmektedir. Ancak daha önceden böyle işler için zaman
ayrıldığı takdirde benzer scriptler yazılırken ne yapılacağı, hangi problemler ile karşılaşılacağı bilindiği için
daha az vakit harcanacaktır.
Akıllıca tasarlanmış ASP scriptleri sadece geçerli olan projemizde kullanılmayacak, belki ileride
yapacağımız işlerde de bizlere fayda sağlayabilecektir. Bir kez sağlam, esnek ve düzgün bir kod yazarak
bunu ileriki projelerimizde birkaç ufak değişiklik ile çok rahat kullanma şansı elde edebiliriz.
Hızla ve acele ile gelişigüzel yazılmış kodlar bir zaman sonra tekrar geriye dönüp üzerinde inceleme
yapmayı gerektirebilmektedir.
En başta her sayfada kullanacağınız bir sayfayı oluşturup top.htm adıyla kaydetin.şimdi bir ".asp" dosyası
ile bu menüyü kullanalım.
include.asp
<%html%>
<%head%>
<%title%>ınclude Kullanımı
<%/head%>
<%!--#include virtual="top.htm"--%>
<%/body%>
<%/html%>
Bu sayfada sadece 1 satırlık bir kod kullandık ve binlerce sayfaya aynı şeyleri yapmaktan kurtulduk.Bu
uygulamayı kullanmak için her sayfaya <%!--#include virtual="top.htm--%> kodunu yerleştirmelisiniz.
Makale ile ilgili sorunuz varsa aykutsaka@aspnedir.com adresine bildirebilirsiniz.
inceleyeceğiz.
Server Nesnesi:
Request nesnesi ile ASP programcıklarımıza veri girişi (gönderimi) yaptık. Response nesnesi ile
programdan veri çıktısı aldık. Peki bu verilerimizi işlerken server hep sabit mi çalışacak. Tabiki hayır.
ASP nin dinamik yapısı nedeniyle server üzerinde yapılan işlemler belirli parametrelerle tanımlanabilir.
Unutulmaması gereken en önemli nokta server nesnesi ile request nesnesinin bir özelliği olan
değişkenlerin alınabileceği bir özellikdir (sadece okunabilir / read only). Fakat server nesnesi serverın
1. ScriptTimeOut
2. CreateObject
3. MapPath
4. HTMLEncode
5. URLEncode
ScriptTimeOut:
Türkçesi “zaman aşım süresi” olan bu komut yardımıyla ASP’nin dinamik olarak oluşturduğu HTML
yoğunluğuna bağlıdır. Örneğin içerisinde birçok birbiri içine geçmiş döngü olan bir script tamamen saf
Bu özellik hem okunabilir hemde yazılabilir bir özelliktir. Bu yazılabilme ve okunabilme deyimleri ileride
sıksık karşımıza çıkacaktır. Bunu şu şekilde açıklayabiliriz: okunabilme özelliği bir nesnenin bir
metodunu kullanırken o metoddan değer alabileceğimiz anlamına gelir. Bir örnekle açıklarsak;
<%
A = Nesne(1).Metod(1)
%>
Bu örnekte “A” değişkenimize “Nesne(1)” nesnesinin “Metod(1)” metodundan geri dönen değeri
atadık.
Yazılabilme özelliği ise bir nesnenin bir metoduna değer verebilme özelliğidir. Örnekle
açıklamak gerekirse;
<%
Nesne(2).Metod(2) = “B”
%>
Bu kullanım tarzını derslerimize ilk başladığımız sıralarda anlatmıştık. Eşitliğin sol tarafı her zaman
kaynağı vermektedir. Sağ taraf ise her zaman hedefi verir. Örneğimizde “Nesne(2)” nesnesinin
“Metod(2)” metoduna “B” değerini vermiş bulunuyoruz. Bu iki özelliği aynı anda da kullanabilmekteyiz.
Bu kadar teorik bilgi verdikten sonra server nesnesinin scripttimeout özelliğine geçebiliriz.
olduğunu öğrenebiliriz. Burada adı geçen değerin birimi saniyedir yani timeout olayı
<%
STO = Server.ScriptTimeOut
Response.Write STO
%>
Bu kullanım şekli ile ekrana o anda ayarlı olan timeout değeri dönecektir. Örneğimizde bu değer “90”
olarak bulunmuştur.
Not: TimeOut değeri herhangi bir ayar yapılmamış ise geçerli değer olarak 90 alacaktır.
ScriptTimeOut özelliğini ayarlamak ve yeni bir değer vermek istersek bunu nesnenin
<%
Server.ScriptTimeOut = 60
%>
Bu şekildeki bir kullanım ile scriptimizin timeout süresini 60 saniye olarak ayarlamış bulunuyoruz. Yani
bir diğer değişle scriptimiz 60 saniye içerisinde bir HTML kodu üretemez ise server otomatik olarak
CreateObject:
Sunucuya yüklenen her komponent için bir PROGID (GUID) belirleyici vardır. Bu numara komponenti
refere eder. Bu numara yardımı ile komponenti ASP içerisinde kullanılabilen bir nesne olarak
tanımlayabiliriz. İşte bu işlem için Server nesnesinin Create Object özelliğindne faydalanabiliriz.
Bizim burada anlatdığımız nesnelerin dışında piyasada kullanılan ve bir çok değişik işlemi
için ilk olarak tanımlamamız gerekir. Server createobject bu işlemi yapan komutdur.
Kullanımı oldukça basit olan bu özellik yardımı ile kendi nesnelerimizi tanımlayabilir ve
kullanabiliriz. Örneğin;
<%
Set Nesne =
Server.CreateObject
(“Akkoyun.Web”)
%>
Bu şekilde “Akkoyun.Web” Nesnesini “Nesne” ismi ile tanımlamış bulunuyoruz bu
Örneğin;
<%
Nesne.Metod = “Deneme”
%>
Yukarıda createobject ile tanımladığımız “Nesne” isimli nesnemizin bir metodunu kullandık.
İleriki derslerimizde nesne yazmayı (COM,DCOM ve XML Servlet) öğreteceğiz ama vakti gelince.
MapPath:
scriptlerimizde kullanabiliriz. Amacı, mantıksal (sanal) yol bilgisini bir istemci tarayıcısı
için kullanılabilir hale, yani sunucudaki fiziksel yola uygun hale getirmektir. Aşağıdaki
örnekte olduğu gibi, root dizininden hangi sanak dizine dallanacağını gösterilebilir.
<%
Dim Fiziksel
Fiziksel =
Server.Mappath(“/Akkoyun”)
%>
“Fiziksel” değişkeni içerisindeki gerçek yol bilgisi, c:\inetpub\wwwroot\akkoyun olacaktır.
HTMLEncode:
Normal şartlar altında bir web sayfasında “<Table>” yazdırmak bir hayli zordur çünkü server bu
komutu bir HTML tagı olarak yorumlar ve derlemede işletir. Halbuki biz bu tagı sunucuya göstermek
istiyoruz.
İşte bu noktada HTMLEncode metodu devreye girer. Bu metod yardımı ile kullanıcının
görmesini istediğimiz tag, komut yada özel sembolleri kullanıcıya direkt olarak
<%
Response.Write(
Server.HTMLEncode
(“<%=now%>”)
%>
Yukarıdaki örnekte görüldüğü gibi kullanıcı ekranında “<%=now%>” şeklinde bir çıktı almış olacağız.
URLEncode:
URLEncoded hale dönüştürür. Tüm boşluklar + işareti ile değiştirilir vediğer işaretler ise
% işareti ile başlayan onaltılık düzendeki ANSI eşdeğerleri ile değiştirilirler. URLEncode
görebilirsiniz.
<A HREF=”Test.asp?ID=
<%
Server.URLEncode(“33%”)
%>
33% </A>
tablonun kullanılış biçimi şu şekildedir. Kullanacağınız karakterin bulunduğu sütündaki değer ile
bulunduğu satırdaki değeri toplayarak bunu “%” işareti ile belirtmektir. Örneğin;
Ò sembolünü kullanmak istiyorsanız bulunduğu stündaki değere (160) bulunduğu satırdaki değeri (14)
ANSI kodlarının toplam 4 basamaktan oluşması gerektiğini unutmayın ve değer eğer 4 basamaktan
Bu kodları ALT+ şeklinde kullanabilirsiniz. ALT tuşuna basılı tutarken “0033” rakamlarını kodlamanız
1- Cookie
2- Buffer
4- Expires
6- Clean
7- End
8- Flush
9- Redirect
10- Write
Bu fonksiyonlardan bir tanesini request nesnesi içerisinde anlatmış fakat tam anlaşılması için response
nesnesi ile beraber kullanılmalı ve anlatılmalı demiştik.
Cookie (çerezler):
Cookie’lerin ne olduğun ne işe yaradığını anlatmıştık, ufak bir tekrar yapıp konu bütünlüğü sağlamak
Cookie’ler, Netscape tarafından, web sunucularıyla istemcilerin etkileşiminde ortaya çıkan bir açığı
düzeltmek için geliştirildi. Cookie’ler olmadan, web sunucuları ve tarayıcılar arasındaki etkileşim bir
monologdan farklı olmazdı. Yani server clientdan gelen bilgileri saklayabilirken, istemciler bu işlemi
yapamayacaklardı.
Örneğin bir siteyi kişiselleştirmek ve her ziyaretciye kendine göre bir içerik yada görünüm ayarlamak
isterdek. Ziyaretci siteyi her ziyaretinde sadece kendi ayarladığı kunuları ve/veya görüntüyü
görebilmesi gerekmektedir. Bu işlemi ziyaretcinin bilgisayarına bir veri kaydetmeden yapmak birhayli
zahmetlidir.
Bu islem için Cookie’ler kullanılmaya başladı. Böylece asp programları da istemci tarafında veri kayıdı
Ön bir bilgi verecek oluyrsak şöyle söyleyebiliriz: Cookie’ler response nesnesi ile kaydederken request
İki tür cookie mevcuttur: oturum cookie’leri ve kalıcı cookie’ler. Oturum cookie’leri hafızada saklanırlar
(ileriki konularda ayrıntılı olarak anlatılacaktır.), diğer taraftan kalıcı cookie’ler aylarca hatta yillarca
Not: yukarıdaki kısım geçen ay yayımlanmıştır. Bu ay sadece konu bütünlüğü sağlamak amacıyla bilgi
olarak verilmiştir.
Kalıcı cookie’lere asp içerisinde cookiel komutu ile erişim sağlayıp üzerinde işlem yaptırtabiliriz. Bunu iki
Bunlardan ilki bir cookie kaydetmek için kullandığımız yöntemdir. Bu yöntem response nesnesinin
içerisinde kullanılır. Bu şekilde istenilen değişkenler bilgisayar üzerinde kalıcı olarak saklanır ve
Aşağıda bi cookie değişkeninde nasıl veri saklanacağına ilişkin kod yeralmaktadır. Dikkate edilecek
olursa değişken tipi ne olursa olsun değişken adı eşitliğin sol tarafında yazılmıştır. Değişkene verilecek
<%
Response.Cookie(“ad”) = “gunce”
%>
Yukarıdaki örneğimizde response (yanıt) nesnesini kullanarak “ad” isimli çerezimize (cookie) gunce
değerini atadık. Bu şekilde kaydettiğimiz cookie ziyaretci bilgisayarında bir sonraki işlemimize kadar
Bir cookie, cookie adı ve anahtar (key) ile bu anahtara karşılık bir değerden oluşur. (anahtar kısmı
zorunlu kullanım değildir kullanılmasada olur ama işlevsellik açısından kullanmak faydalıdır). Örneğin:
<%
Response.Cookies(“cerez”)(“ad”)
= “Haldun Özer”
%>
Yukarıdaki örnekte ziyaretcinin bilgisayarında cerez isminde bir cookie oluşturup bu cookie içerisinde
ad değişkenine haldun özer değerini atamış olduk. Bu şekilde verilerimizi daha derli toplu bir şekilde
Bir çereze istediğiniz içeriği koyabilirsiniz. Bununla birlikte, çerezlerin belirli sınırlamalarınında farkında
toplam en fazla 300 çerez bulundurabilir. Ayrıca, tek bir web sitesi ziyaretcinin bilgisayarına 20’den
fazla çerez ekleyemez. Son olarak belirli bir cookie 4 KB’tan fazla veri barındıramaz. Bu sınırlama,
çerezin isminin boyu ve çerez içinde bulunan bilginin boyutuna göre ayarlanır.
Cookie fonksiyonunun veri alışverişi dışında iki adet özelliği vardır bunlar yardımı ile sistemlerimizi
daha interaktif geliştirmemiz mümkün olmaktadır. Bunlardan ilki Expire (zaman aşımı süresi) dir.
CookieExpire:
bilgisayarda durucak onu kaydetmedik? İşte bu soruya yanıt bulmaya çalışan Microsoft ustaları cookie
Bu özellik sayesinde cookie’lerin ömrünü belirleyebilirsiniz. Bu tarih geçtikden sonra çerezlerimiz artık
<%
Response.Cookies(“cerez”) =
“Haldun Özer”
Response.Cookie(“cerez”).
%>
Bu örnekte kullandığımız “cerez” isimli cookie 14 Kasım 2001 tarihinden sonra kullanılamaz hale
gelecektir.
HasKeys:
Cookie’lerin alt anahtarlar içererek birçok değişkeni bir tek cookiede tutabileceğini yukarıda
örnekleyerek anlatmıştık. Bu özelliğin kullanılabilmesi için belirtilmesi gerekir bunun içinde haskeys
<%
Response.Cookies(“cerez”).(“a”)
= “Refiye”
Response.Cookies(“cerez”).(“b”)
= “Meral”
Response.Cookies(“cerez”).(“c”) =
“İlknur”
Response.Cookie(“cerez”).
Response.Cookies(“cerez”).
HasKeys
%>
Bu kullanım tarzı ile cerez isimli cookimize 3 adet alt anahtar atıyıp bu anahtarlara bir değer verdik.
Daha sonra bu cookiemizin ömrünü ayarladık ve alt anahtarları (dictinary) kullandığını belirtdik.
Böylece alt anahtar kullanan 14 kasım 2001 son kullanım tarihli bir çerez yaratmış olduk.
bilgisayardan nasıl geri çağıracağımızı biliyormuyuz? İsterseniz bir de bu konuya göz atalım.
Not: Bir siteyi ziyaretimizde bilgisayarımıza kaydedilen bir çerezi sadece o site geri çağırıp kullanabilir.
Çerezleri Okumak:
Yukarıda anlatılan şekilde kaydettiğimiz çerezlerimizi programlarımız içerisinde geri çağırmak için
<%
ad = Request.Cookies(“cerez”)
Response.Write ad
%>
Yukarıdaki örneklerde kaydettiğimiz “cerez” isimli cookieyi request nesnesini kullanarak geri çağırdık
ve ad değişkenine atadık. (dikkat edilecek olursa değer atanacak değişken eşitliğin solunda, bu
Bu şekilde basit çerezleri okuyabileceğimiz gibi alt anahtarları olan bir çerezide aşağıdaki şekilde
okuyabiliriz.
<%
a=Request.Cookies(“cerez”).(“a”)
b=Request.Cookies(“cerez”).(“b”)
c=Request.Cookies(“cerez”).(“c”)
Response.Write a
Response.Write b
Response.Write c
%>
Örneğimizde 3 adet alt anahtara sahip bir cookienin nasıl okunduğu görülmektedir. Unutmadan
belirtmekte fayda gördüğüm bir konuda şu; kayıt yaparken kullandığınız çerez adını çerezi
Bu makalemizde geçen makalede kaldığımız yerden devam ederek response nesnesinin cookie
Buffer (tampon):
Response nesnesinin bize tanıdığı bir diğer kolaylık ta buffer (tampon) özelliğidir. Standart bir asp
Bu işlemin kontrolunu buffer komutu ile yapmaktayız. Varsayılan değeri false (yanlış) olan bu özellik
eğer aktif hale geçirilir ise serverda bulunan script server tarafındaki derlenme işlemi bitmeden istekde
Özellikle çok işlem gerektiren scriptlerde baş tarafında bu kodun kullanmakta yarar olabilir.
<%
Option Explicit
Response.Buffer = true
%>
Bilgisayar programlama literatüründe bir verinin işletilmesi bitmeden çıktı verilmemesi işlemine
engeller demiştik. Flush ise bunun tam aksine o ana kadar işlenmiş (derlenmiş) kodu
browser tarafına yollar. Kullanımı ise aşağıdaki gibidir. Programımızın istenilen herhangi
<%
...
...
Response.Flush
...
...
%>
Bu şekilde kullanıldığı zaman response.flush komutunun üzerinde kalan kısım tamamen işletilene
kadar beklenir ve bu işltim bitdiği anda çıktılar ziyaretciye yollanır, ve ardından alt tarafta kalan kısım
Clear (temizle):
Buffer methodu ile script’in sonuna kadar derlenilmesini beklerken bir alanda tutulan HTML, clear
metodu ile tamamen temizlenebilir. Flush metodunda o ana kadar işletilmiş olan kod ziyaretciye
yollanırken clear metodunda ise o tamponda o ana kadar yapılmış tüm işlemler silinir.
Böylesine tehlikeli bir metodun kullanım alanlarını sorgulayacak olursak, -ki aklınızda
neden böyle bir komut yapılma gereksinimi duyulmuş gibi bir soru kalabilir- birçok yerde
tampon bölgede tutulmakta olan alınan mallar listesini içeren HTML bu yöntemle
temizlenebilir.
<%
...
...
Response.Clear
...
...
%>
Bu şekildeki bir kullanımda clear metodunun üzerinde kalan ve işletilen kodların HTML çıktıları bu
satıra gelindiği an temizlenir. Ve tamamen silinir. O satırdan sonraki komutlar ise yine normal olarak
olmaktadır.
Kullanıcı aksi bir ayar yapmadıkça ziyaret edilen websiteleri “Geçici İnternet Dosyaları”
hız bakımdan artısı olan bir özelliktir. Ama haberler gibi süreli bilgilerin yeraldığı bir
sitede bu tip bir uygulama sitenin prestijini sarsacaktır. Bu sistemi asp ile kontrol
ise asp içerisinde response nesnesinin bir metodu olan expires metoduyla
yapabilmekteyiz.
<%
Option Explicit
Response.Expires = 60
%>
Bu şekilde kullanıldığı zaman o sayfanın ziyaretcinin cahce kısmında en fazla 60 dakika
saklanabileceğini göstermiş olur. Yani bu kodun yeraldığı sayfaya girdikten sonra 60 dakika geçmeden
Not : bu işlemi atlayarak o anki ziyaret edilmekte olan siteyi serverdan yeniden almak için (cacheden
End (sonlandır):
Response nesnesinim bir diğer metodu olan end metodu o ana kadar işletilmiş olan tüm
<%
...
Response.End
%>
AddHeader (başlıklar):
Response nesnesi bize istemci browserindeki sayfanın HTTP parçasının başlık olarak yollanarak
girildiğini, sayfanın yapısının nasıl değiştirilebileceğini, kullandıkları her başlığın birer tekli (unique)
sayı olduğunu belirtir. Örneğin yönlendirme (redirection) metodu tarayıcıya 303 başlıklı değerini yollar.
Başlığın değeri statucode olarak alınır ve çoğunlukla response nesnesinin statüsü olur.
ulaşabilirsiniz.
Mutlaka şimdiye kadar benzer bir hata mesajı görmüşsünüzdür. 404 (document no found) sayfa
bulunamadı gibi. Tüm kodlar 3 dijit içerir normal doküman 200 OK değerini verir. İlk dijit sorunun
İlk dijit 1 olduğu zaman bunun anlamı “bilgi” demektir. İlk dijit 2 olduğu zaman bunun anlamı
“başarılı” demektir. İlk dijit 3 olduğu zaman bunun anlamı “yönlendirme” demektir. İlk dijit 4 olduğu
zaman bunun anlamı “istemci hatası” demektir. İlk dijit 5 olduğu zaman ise bunun sunucudan
Kendi başlığımızı response nesnesinin addheader metodu ile oluşturabiliriz. Bunun için iki bağlı
parametre gerekmektedir. İlki isim ve ikincisi içerikdir. Bunun için aşağıdaki gibi bir yazım geçerli
olucaktır.
<%
Response.Addheader
“deneme“,”123“
%>
Burada “deneme” isimli yeni başlık için “123” değerini tanımlamış oluyoruz.
Write (yazdır):
metod yardımı ile HTML yardımı ile ekrana çıktı alabilmekteyiz. Bu metodun kullanımını
bundan önceki sayılarımızda yer yer anlatmıştık. Genel olarak kullanımı aşağıdaki
gibidir.
<%
%>
Burada kullandığımız yere bağımlı olarak bir “PC Net” çıktısı alınacaktır.
Bir diğer kullanım şekli ise başlangıç ve bitiş tagları arasına eşitdir kullanarak yazdırmaktır. Aşağıdaki
örnekte görülmektedir.
Response.write metodunda dikkat edilmesi gereken bir özellik özel karakterlerin yazımıdır. Bu özel
<%
%>
Görüleceği gibi tırnak kullanılmasını istediğimiz yerlere çift tırnak işareti yerleştirdik.
Bu özel karakter yazımının bir diğer yoluda CHR() fonksiyonu yardımı ile yazdırmaktır.
Redirect (yönlendir):
Belkide çok sık kullanmayacağınız bir komut olmasına rağmen oldukça işlevseldir. Bu komut yardımı
ile ziyaretciyi istediğiniz sayfalara otomatik olarak tönlendirebilirsiniz. Kullanımı aşağıdaki şekildedir.
<%
Response.Redirect
“http://www.akkoyun.net”
%>
Bu şekildeki bir kullanımda site otomatik olarak tırnak içerisinde parametre olarak verilmiş siteye veya
sayfaya yönlenecektir.
Request nesnesinin sağladığı bir diğer özellik de servervariabledır. Bir istemci tarafından
serverda bir ASP programcığının çalıştırılmasıyla server kullanıcı için bir takım değişkenler
oluşturur. Bu değişkenler ASP programcığını çalıştıran her kullanıcı (client) için farklılık
serverdan hangi değişkeni alıcağımızı ise “istek metodu” yardımı ile yaparız. Aşağıda server
<%
değişken = Request.
servervariables(“istekmetodu”)
%>
Bu örnekte server tarafında olan bir değişkeni programcığımız içerisinde kullanmak amacıyla
bir değişkene atadık. Bunu da yapmak için request (istek) nesnemizin server variables
özelliğini kullandık.
İstek metodu serverdan alıcağımız değişkenin tanımıdır. Bu metodları ise aşağıdaki gibi
sıralayabiliriz.
AUTH_TYPE
CONTENT_LENGTH
DOCUMENT
DOCUMENT_URL
O an kullanılmakta olan doküman dosyasının sanal yeri.
DATE_GMT
DATE_LOCAL
GATEWAY_INTERFACE
LAST_MODIFIED
LOGON_USER
PATH_ INFO
PATH_TRANSLATED
QUERY_STRING
URL dizisi sonundaki soru işareti ile (?) ayrılmış bölümden sonraki bilgi.
REMOTE_ADDR
İstemcinin IP adresi
REMOTE_ HOST
REMOTE_IDENT
Eğer RFC931 doğrulamasını destekliyor ise istemcinin host adı
REMOTE_USER
REQUEST_METHOD
SCRIPT_MAP
SCRIPT_NAME
SERVER_NAME
SERVER_ PORT
SERVER_ PORT_SECURE
SERVER_PROTOCOL
bağlıdır
SERVER_SOFTWARE_URL
<%
IP = Request.
servervariables(“REMOTE_ADDR”)
%>
<%
SN = Request.
servervariables(“SCRIPT_NAME”)
%>
<%
LM = Request.
servervariables(“LAST_MODIFIED”)
%>
<%
RM = Request.
servervariables(“REQUEST_METOD”)
%>
Request metod özelliğini kullanan bu örnekte ise RM değişkenimize örneğe gönderilen
verinin gönderiliş biçimi atanacaktır. İki farklı değer karşımıza çıkabilir bunlar GET yada
Cookies:
Cookieler, Netscape tarafından, web sunucularıyla istemcilerin etkileşiminde ortaya çıkan bir
açığı düzeltmek için geliştirildi. Cookieler olmadan, web sunucuları ve tarayıcılar arasındaki
etkileşim bir monologdan farklı olmazdı. Yani server clientdan gelen bilgileri saklayabilirken,
Bu islem icin cookieler kullanılmaya başladı. Böylece asp programları da istemci tarafında
Ön bir bilgi verecek oluyrsak şöyle söyleyebiliriz: cookieler response nesnesi ile kaydederken
İki tür cookie mevcuttur: oturum cookieleri ve kalıcı cookieler. Oturum cookieleri hafızada
saklanırlar, diğer taraftan kalıcı cookieler aylarca hatta yillarca kalabilirler. Kalici cookieler
Request nesnesi ile response nesnesinin cookie özelliği ile kaydedilmiş cookieleri çağırabiliriz (not:
response nesnesi ileriki sayılarda aytıntılı açıklanacaktır). Response nesnesi ile cookie kaydı şu şekilde
yapılır:
<%
Response.Cookies(“degisken”)
= deger
%>
Bu şekilde “degisken” isimli cookiemize bir değer atamış olduk.
Kaydedilmiş bir cookieyi asp programcığı ile alıp bir değişkene tamak için ise,
<%
degisken =
Request.Cookies(“deger”)
%>
Görüldüğü üzere request nesnesini kullanarak değer isimli cookiemizi bir değişkene atadık.
Cookieler alt anahtarlara bölünebilir. Yani bir diğer değişle alt kategorilere ayrılabilir. Örnek vermek
gerekir ise:
<%
degisken =
Request.Cookies
(“deger”)(“altdeger”)
%>
Yukarıdaki örneğimizde deger kategorisine ait altdegeri değişkenimize aktardık. Bu şekilde kullanılan
cookieler için alt anahtarlarını olduğunu belitmek gerekmektedir. Bunun için ise :
<%
degisken =
Request.Cookies(“deger”).HasKey
%>
Şeklinde bir tanımlama gerekmektedir. Bu şekilde kullandığımız cookienin alt anahtarlarını
Aynı şekilde cookielere veri kaydı yaparken (response nesnesi ile) alt anahtarlar
kullanılabilir.
Response nesnesi hakkında bilgi vermediğimizi için bu özellik hakkında daha ayrıntılı bilgiyi
response nesnesinden hemen sonraki ay özel inceleme olarak değinilecektir. Cookieleri tam
TotalBytes:
Request nesnesinin bize sunduğu kolaylıklardan bir taneside totalbytes özelliğidir. Bu özellik
sayesinde request nesnesi ile istemciden alınan bilgilerin (querystring, form ve cookie
Örneğin istemci tarafından doldrulan bir form içerisinde 100 karakter var ise ve bu
serverdaki bir asp tarafından request nesnesi ile alınıyorsa totalbytes özelliğimiz de 100
değerini alır. Yani istemciden sunucuya gönderilen verinin tamamının byte biriminden
değeridir.
Kullanımı oldukça basit olan bu nesne çok fazla kullanım alanına sahip olmamakla birlikte bazı
<%
sayac =
Request.TotalBytes
%>
Yukarıdaki örneğimizde istemciden sunucuya gönderilen verinin miktarını sayac isimli
değişkenimize atadık.
Malumunuz "On Error Resume next" olayı bize bir scriptin ASP sayfasında çalışırken hatalı olması
durumunda hatalı satır veya fonksiyonun bir alt satırndan devam ederek çalışmasını sağlar. Böylece script
kitlenmez. Fakat tabii bu durumda Scriptin içinde tüm fonksiyonlar işlevini yerine getirmez. Bu "On error
rersume next" olayı ile birlikte kullanabileceğimiz olay Error loging dir. WriteToLogFile adlı fonksiyon ile
bunu sağlayabiliriz.
Diyelim elimizde içine değerler aktarılacak bir "deneme.txt" dosyası olsun. Bu dosya kendi local
makinamızda C:\ sürücünün altında kayıtlıdır. Dosyanın açılması yada kapanması yukarıda adı geçen
"WriteToLogFile" adlı fonksiyon ile yapılır. String olarak yazdırır ve başarılı olması halinde true aksi
takdirde false döndürür. Örnek vermek gerekirse:
Yukarıdaki örnekde gördüğünüz gibi herhangi bir sebepden dolayı doğacak hatalar böylece deneme.txt
adlı dosyamıza kaydolacaktır. Local makinemizde bunu direk dizinden görerek, diğer bir sunucuda ise
dilediğimiz bir yönetim sayfasına include yöntemi ile dahil ederek görebiliriz. Tabii unutulmaması gereken
husus, Sunucuda ilgili klasörde yazma hakkımızın bulunması gerekir. Yoksa TextStream Nesnesinden
faydalanarak yapacağınız bu işlem gerçekleşmeyecektir, yani deneme.txt dosyası hiç oluşmayacak yada
içine yazma esnasında sunucundan bun işleme hakkınız olmadığını belirten bir hata alacaksınız.
Application Nesnesi global düzeyde oldugu icin her zaman global.asa dosyası altında tutulur.
Burada gösterilen kod günümüzde asp çatısı altında bulunan hemen hemen her sitede
kullanılmaktadır. Sitemizde şuanda kaç kişi var?
**************************************************************
Sub Application_OnStart
'Eğer aktif bir application yoksa bu demektir ki application nesnesi ilk defa başlıyor.
Application("AktifKullanici") = 0
End Sub
Sub Session_OnStart
'Her yeni kullanıcı için açılan session nesnesine tekil dosyalardan olduğu gibi
Session.Timeout = 20
Session("baslangic") = Now
'ornek olarak her kullanıcının session nesnesinde baslangıç degişkenine zamanı değer
olarak yazdırıyoruz.
Application.Lock
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application("AktifKullanici") = Application("AktifKullanici") - 1
Application.UnLock
End Sub
</SCRIPT>
**************************************************************
<html>
<body>
</body>
</html>
**************************************************************
kullanırız vs. Kullandığımız her nesnenin ise beliri özellikleri vardır. Örneğin kesme işlevini
ASP tekniğinde işlemlerimizi gerçek hayatda olduğu gibi nesnelere yaptırtırız. Nesne
işleyen, veritabanından notları alarak geçeni kalanı belirleyen veya öğrencilerle ilgili
birçok değişkenimiz var: demek ki sizin ASP programınızda “öğrenci” diye bir nesneniz var.
Metod (method) : bir nesnenin işlemesi, çalışması için kısaca kendisinden bekleni yerine
getirebilmesi için çalışma yöntemlerine ihtiyacı vardır. Dolayısıyla bir ASP nesnesinin
değişkenlerden ibaret değildir. Bir kere, ASP programında kullandığımız script dilinin getirdiği
nesneler vardır. ASP programınızı javascript ile yazarsanız başka, vbscript ile yazarsanız
başka nesnelere sahip olursunuz; ancak her ikisinde de ortak olan “scripting” nesneleri
vardır. Bunları birazdan ayrıntılı olarak ele alacağız. Sonra web serverin size hazır sunduğu
nesneler vardır. Bunları daha sonraki sayılarda göstereceğiz. Ve tabii, browser’ın bir HTML
sayfasının bölümlerini nesne sayarak oluşturduğu nesneler vardır. Bunları da diğer nesneleri
ele alırken sırası geldikçe değineceğiz. (Tabii bir de ASP programınızı javascript ile yazarsanız
vbscript’ten farklı olarak kendisi nesne-yönelimli bir dil olan javascript’in oluşturmanıza
imkan veren nesneleri vardır. Fakat bu nesneler bizim konumuz dışında kaldığı için
incelenmeyecektir.)
Nesneler nasıl olmuş olursa olsunlar, daima size bir değer verirler.
Nesne.Özellik = Değer
Bir nesnenin bir özelliğinin değeri, bizim için değişken değeri gibi önem taşır.
Nesnelerin özelliklerinin değerini değişkenlere atayabiliriz ancak bunu yaparken nesnenin bir
için veri göndermeliyiz. (bir fonksiyona kullanması için gönderilen değere argüman/argument
denir);
Tarayıcı nesne modelinin tam aksine ASP nesnelerinde bir hiyerarşi söz konusu değildir.
Nesne modeli, bize bir sunucu nesnesini metodları ve özellikleri ile birlikte, scriptler arasında
kullanabilmemizi, sağlar. Bir ASP uygulaması geliştirebilmek için server (sunucu), application
(uygulama), session (oturum), request (istek) ve (response) yanıt nesneleri kullanılır. (şekil
1)
Uygulama ve Oturumlar
Aplication nesnesi bir ASP uygulamasının tamamını simgelendirir. Session (oturum) nesnesi
sunucuya gönderilir ve sunucudan response nesnesi ile geri gönderilen sonuç bilgisi ile
sonlanır.
Request Nesnesi
Request nesnesi bir bilgi alma nesnesidir. Bu nesne yardımı ile yazdığımız scriptler dışarıdan
veya bir önceki sayfadan bilgi almakda kullanılır. Bünyesinde dört adet ana fonksyon
bulundurmaktadır. Bunlar;
1- Cookie
2- ServerVariables
3- Form
4- QueryString
5- TotalBytes
Veri Transferi :
ıstemci tarafında, request nesnesine bilgi depolanır ve sunucuya HTTP belge isteğinin bir
parçası olarak gönderilir. Sunucu bu bilgiyi dekod eder ve ASP boyunca kullanılabilir hale
getirir. Sunucuya bilgi göndermenin iki yöntemi vardır; birincisi sayfadaki <form> kısmını
kullanmak ve ikinci olaral da URL’nin sonuna bir sorgu stringi gibi eklenerek doğrudan
sağlanabilir.
Bu veriyi bir ASP scriptine göndermek için HTML içinde form oluşturmak ile mümkün
olmaktadır. Eğer formun metod özelliği “GET” şeklinde ise verimiz URL sonuna ekli olarak
gönderilmektedir. Ama formun metod özelliği “POST” şeklinde ise verimiz HTTP belgesinin bir
Gerek form içerisinde gerekse URL sonunda string olarak gönderilen verileri ASP içerisinde
kullanmak için veriyi (server tarafından dekod edilmiş bilgiyi) bir değişkene aktarmak
gerekmektedir.
Bunu ASP içinde 2 farklı şekilde yapmaktayız. Bu farklılık verinin gönderiliş tarzından ileri
gelmektedir. Eğer verimiz URL sonunda bir sorgu stringi şeklinde gönderilmiş ise veriyi:
<%
isim =
request.querystring(“veri”)
%>
URL sonuna ek veri olarak gönderilen “veri” datasını verdik. Bu data url sonunda şu şekilde
gözükmektedir.
Test.asp?veri=”M. Günce”
Yukarıda ki örnekden görüleceği gibi “M. Günce” verimizi test.asp sayfasına URL sonuna
eklenmiş olarak gönderdik. Ve bunu yaparken ara değişken olarak “veri”’yi kullandık.
(unutmadan belirtmekte fayda gördüğüm bir nokta da URL sonuna eklenmiş olarak
Bu veri transferini yapmanın bir diğer yoluda gönderen form özelliğini “POST” yaparak
tarafından kullanılabilmektedir.
Eğer verimiz form içerisinde “POST” şeklinde gönderilmiş ise bunu ASP içerisinde bir
<%
isim = request.form(“veri”)
%>
Yukarıdaki örneğin aynısını bu defa form içerisinde gizli olarak gönderdik. Tek farkımız URL
Test.asp
şeklinde bir URL görmemizdir. Bu özellik sayesinde hem URL satırını gereksiz doldurmamış
hemde verilerimize gizlilik kazandırmış olmaktayız. (not: bu veri transferi tipini sadece form
Isim = request(“veri”)
şeklinde bir kullanım olduğu zaman ASP bu nesnenin fonksyonlarını bir sıra içerisinde dener.
Bu sıra
-QueryString
-Form
-Cookie
-ServerVariables
Server.UrlEncode Kullanımı
Bu yazımızda, kısa ama faydalı bir konuya göz atacağız. URL Encoding. Nedir bu URL Encoding ve ne işe
yarar ? Hemen bir göz atalım.
Her ne kadar bu konumuzla ilgisi bulunmuyor gibi gözüksede, bu konu biraz HTML Encoding'e benziyor.
Farkı ise, bir bilgiyi alıp Encoded hale çevirmesidir. Yani, bilgi içerisindeki tüm boşluk oluşturabilecek
yerler "+" işareti ve diğer ASCII dışında kalan karakterler de Onaltılık ANSI değerleri ile replace edilir.
Hepiniz muhakkak bugüne kadar görmüşünüzdür, Browser da adres hanesinde bazen çok garip
karekterler türer.
Diyelim elinizde, daha doğrusu Veritabanınızda bir bilgi, açıklama var. Ve siz bunu bir asp sayfanızda
görüntülüyorsunuz ve buna bir link vermek istiyorsunuz. Diyelim şöyle bir link;
filanca.asp?id=a12b=falancabilgi
http://www.falanca.com/filanca.asp?id=a12b=falancabilgi
Bu hali alacaktır. Peki bu format işlermi ? Garantiye almak için URLEncoding bunu şu şekle çevirir;
http%3A%2F%2Fwww%2Efalanca%2Ecom%2Ffilanca%2Easp%3Fid%3Da12b%26%3Dfalancabilgi
"." = %2E
":" = %3A
"=" = %3D
"/" = %2F
"?" = %3F ... gibi değerlere dönüştüğünü görürüz.
Nedir peki bu % işaretleri ile kombine olmuş harflar ve rakamlar? Bunlar yukarıda sözü geçen, Onaltılık
ANSI değerleridir. Yani nokta, soru işareti, slash ve eşittir gibi ASCII karekterler ANSI formatına
dönüşüyor. Win2000 kullananlar bunu Notepad de bir bilgiyi kaydederken görmüştür. Save dialog boxın
en altında Format kayıt türü yazar. Bu özellik tabii Win98 ve 95 de mevcut değil.