Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 94

ASP’ye Giriş

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.

Tüm yönleriyle IIS - 1

Neden PWS değil de IIS kullanılmalı? IIS kurulumu

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 :

Start/Settings/Control Panel'e (Başlat/Ayarlar/Denetim Masası) tıklayarak Control Panel'i


(Denetim Masası) açıyoruz.  Control Panel'de Add Remove Programs (Program Ekle/Kaldır)
linkine çift tıklayarak açılan pencerede "Add/Remove Windows Components"i (Windows
Bileşenleri Ekle/Kaldır) tıklıyoruz. Karşınıza gelecek olan yeni pencerede windows bileşenlerini
görebilirsiniz :

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.

Bir sonraki makalemizde tüm yönleriyle IIS'i tanımaya devam edeceğiz...


Tüm yönleriyle IIS - 2

IIS'e erişim, IIS'te genel ayarlar

Merhabalar,

Bir önceki makalemizde (http://www.aspnedir.com/makaleler_icerik.asp?id=225)


IIS kullanmak için nedenlerden ve IIS kurulumundan bahsetmiştik. IIS yazı dizisinin
bu makalesinde IIS'e nasıl erişilebileceğinden ve IIS üzerinde tüm Web ve FTP
siteleriniz için geçerli olan ayarlardan bahsetmek istiyorum.

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

IIS'DE GENEL AYARLAR


IIS'e ulaştıktan sonra hemen ayarları yapmaya başlayalım :
"Internet Information Services" linkine sağ tıklayıp, "Properties" seçeneğine basarak
"Internet Information Services Properties" penceresini açıyoruz.

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.

Internet Information Services :


Internet Information Services bölümünde Web ve FTP siteleri için genel ayarlar, bant
genişliği sınırlaması ve dosya tipleri ile ilgili işlemler gerçekleştirilebilir.

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.

Enable Banwidth Throttling :


Server üzerinde çalışacak olan tüm Web ve FTP siteleri için geçerli olacak bant
genişliği sınırlaması gerçekleştirilebilir. Bu tür genel bir kısıtlama, bir veya birkaç
adet sitenin yer aldığı kendinize ait bir server üzerinde uygulanmaz. Daha çok birçok
sitenin barındırıldığı hosting firmaları için uygundur.

Computer MIME Map :


Bu bölümde makina üzerindeki tüm Web siteleri için geçerli olacak ve Web siteleri
tarafından kullanıcıya ulaşması istenen dosya tipleri belirlenebilir.

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 :

Specify how mail should be sent :


Gerektiği durumda e-mail tabanlı web özelliklerini (e-mail form handler, ziyaretçiye
mail göndermek) kullanırken gerekli olan mail ayarları "Settings" tuşuna basılarak
yapılabilir.

Permissions :

Log authoring actions :


Bu kutucuk işaretlenerek Web sitesi üzerinde yapılan işlemlerin (dosya ekleme, silme
gibi) kaydı (log) tutulabilir. Bu loglar _vti_log klasörü altında yer almaktadır.
Manage Permissions Manually :
Bu kutu işaretlenerek güvenlik ayarlarının Frontpage Server Extensions yerine elle
yapılması sağlanabilir.
Require SSL for authoring :
Web sitesine üzerinde dosya ekleme ve silme gibi işlemlerin gerçekleştirilmesi
sırasında SSL ile güvenlik sağlanması için bu bölüm işaretlenmelidir.
Allow authors to upload executables :
Web sitesine CGI veya ASP gibi scriptlerin veya diğer çalıştırılabilir dosyaların atılıp
atılamayacağına bu bölümden karar verilebilir.
Tüm yönleriyle IIS - 3
IIS'te yeralan servisler nelerdir, IIS'te web sitesi nasıl oluşturulur?

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.

Bu makale de IIS'de yeralan servislerden ve bir web sitesinin nasıl oluşturulacağından


bahsetmek istiyorum.

IIS'TE YERALAN SERVİSLER

IIS'e bir önceki makalemizde bahsettiğimiz yollardan birisi ile ulaşıyoruz.

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.

Administration Web Site'da yine IIS kurulumu esnasında oluşturulur. IIS ve


oluşturacağınız tüm web ve FTP sitelerinin ayarlarını makinanın başında olmaksızın
internet üzerinden yapabilmenizi sağlar. http://IP_Adresi:port_numarası şeklinde
ulaşabilirsiniz.

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 SİTESİ OLUŞTURMA

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

Formdan veri taşırken püf noktalar.

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.

<%@ Language=VBScript %>


<%
Dim bPost
BPost = False
If Request.ServerVariables ("request_method")="POST" Then
bPost=True
End If
%>

2- Artık bu yapıyı kullanarak .ASP sayfamızı iki parçaya bölmemiz mümkün.

If Not bPost Then


'Herhangi bir bilgi Post Edilmemişken görüntülenecek sayfa
%>
<form ....>

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

1.000 1 0,98 1,95


10.000 1 9,77 19,53
100.000 1 97,66 195,31
1.000.000 1 976,56 1.953,13
10.000.000 1 9.765,63 19.531,25
1.000 2 1,95 3,91
10.000 2 19,53 39,06
100.000 2 195,31 390,63
1.000.000 2 1.953,13 3.906,25
10.000.000 2 19.531,25 39.062,50
1.000 3 2,93 5,86
10.000 3 29,30 58,59
100.000 3 292,97 585,94
1.000.000 3 2.929,69 5.859,38
10.000.000 3 29.296,88 58.593,75
1.000 4 3,91 7,81
10.000 4 39,06 78,13
100.000 4 390,63 781,25
1.000.000 4 3.906,25 7.812,50
10.000.000 4 39.062,50 78.125,00

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.

ASP ve Dosya Güvenliği


Çeşitli forumlarda sık sık karşılaştığımız bir sorun var. “Access veri tabanımı download
edilmekten nasıl koruyabilirim?”

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

<script language="JavaScript1.2" <script language="JavaScript1.2"


fptype="dynamicanimation" fptype="dynamicanimation"
src="../include/animate.js"></script> src="../include/animate.asp"></script>

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

Global.Asa kullanımı ve Include Yöntemi


Bu makalede programcıklarımızı daha dinamik hale getirmek için ASP programlarımız
içerisinde başka dosyaları eklemeyi öğreneceğiz.

Bu makalede programcıklarımızı daha dinamik hale getirmek için ASP programlarımız içerisinde başka

dosyaları eklemeyi öğreneceğiz.

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

eklemeniz gerektiğinde işinize yarayacaktır.

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ı

değiştirmeniz yeterli olacaktır.

Dosya dahil etme işlemi ayrıca, standart bir fonksiyonlar ve prosedürler kümesini birden fazla ASP

sayfasında kullanmanız gerektiğinde de çok faydalı olacaktır. Fonksiyon ve prosedürlerinizi bir

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

olursai yeni fonksiyonu dahil edilen dosyaya eklemeniz yeterli olacaktır.  


#INCLUDE:

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,

aşağıdaki gibi kullanılır.

<!-- #INCLUDE FILE=”baslik.asp” à

 
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

isteyebilirsiniz. Mesela aşağıdaki kodda ASP sayfası #INCLUDE tagını kullanarak ID

isimli bir değişkenin değerine bağlı olarak bir dosya görünteleyecektir.   

<%

ID = “5.txt”

%>

<!-- #INCLUDE FILE=”<%=ID%>” à

 
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

çalışacaktır. Tabiki buda bizim istediğimiz şey değildir.  

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

kullanmanız gerekir. Aşağıdaki örnekte ID değişkeninin değerine bağlı olarak farklı

dosyaları doğru şekilde içerdiği görülmektedir.

<%

ID = 2

Select Case ID

Case 1

%>

<!-- #INCLUDE FILE=”1.asp” -->

<%

Case 2

%>

<!-- #INCLUDE FILE=”2.asp” -->

<%

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

sadece şartlara uyan kısmı görüntüleniyor.

Ç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

PWS kullanan kullanıcılarımız yapacaktır. IIS kullanan kullanıcılar bu işlemi atlayabilirler.  

Bu dosyanın içeriği standart bir ASP dosyasına benzemekle birlikte adındaki uzaltmanın .asp değilde

.asa olmasının sebebi, dosyanın active server application dosyası olmasıdır.

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

komutlarına ek olarak 4 yeni komut mevcuttur.  

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

session nesnesinin abandon() metodu ile sonlandırıldığında bu olay gerçekleşir.  

Application_OnStart:

Bu olay web sunucunuz başlatıldıktan sonra web sitenizden ilk sayfa talep edildiği zaman tetiklenir.

Her zaman session_onstart olayından önce gerçekleşir.

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.

Bunlara süreçler veya prosedürler denir.

ASP programlarında kara mekanizmasının en temel kontrol öğesi “eğer...se...yap!” şeklindedir.

If – Then – Else

Vereceğiniz bir durumun oluşup oluşmadığını sınar.

<%

if şart then

[şart doğru ise yapılacak

işlemler]

else

[şart yanlış ise yapılacak


işlemler]

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ğı

bir program yazalım.

<%

if hour(now) < 12 then

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

göreceksiniz. Programın nasıl çalıştığına gelirsek. Önce ki sayılarda asp içerisinde

kullanmaya hazır mevcut fonksyonların varlığından söz etmiştik bunlardan biriside o an ki

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

küçükse, programımız response (karşılık) nesnesinin write (yazdır) methodunu kullanarak

(nesne ve method konularına fazla takılmayın, ileri sayılarda anlatılacaktır) ziyaretcinin

browser penceresine “Günaydın” yazdırır.

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

işleme sokulur. Bu işlem sonucunda “Tünaydın” kelimesi çıktı olacaktır.


Fakat burada bir eksik var: programı saat 18’den sonra çalıştıranlara “iyi akşamlar” şeklinde

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

[şart1 doğru ise

yapılacak işlemler]

elseif şart2 then

[şart2 doğru ise

yapılacak işlemler]

else

[şartlar yanlış ise


yapılacak işlemler]

end if

%>
 

Yeni öğrendiğimiz bu komutu kullanarak karşılama sistemimizi biraz genişletelim.

<%

if hour(now) < 12 then

response.write “Günaydın!”

elseif hour(now) > 18 then

response.write “İyi
akşamlar”

else

response.write “Tünaydın!”

end if

response.write “Sayfamıza
hoş geldiniz”

%>
 

Select case

VbScript’in bir diğer duruma bakarak karar verme ifadesi, select case (durum seç) yapısıdır.

Bu kontrol öğesinin nasıl çalıştığını şöyle özetleyebiliriz:

Durum seç

Durum1: yapılacak işler

Durum2: yapılacak işler

Durum3: yapılacak işler

Durum4: yapılacak işler

Durum5: yapılacak işler

Seçmeyi bitir

Vbscript, verdiğiniz durum listesine veya içinde çeşitli değerler bulunan değişkene bakarak,

bu değişkeni bir “durum” sayacak ve verdiğimiz durumlardan hangisini tutuyorsa, ona ait

komut dizisini çalıştıracaktır. Yukarıdaki örneğimizi bu kez bu yapıyı kullanarak yazalım.

 
<%

select case Hour(Now)

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

response.write “İyi geceler”

end select

response.write “Sayfamıza
hoş geldiniz”

%>
 

Select case komutuna, içindeki değerleri “durum” sayacağı dizi veya değişken olarak

vbscript’in kullanmaya hazır fonksyonlarından Hour(Now)’ı veriyoruz. Bu fonksyonlardan, 0

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

(başka) veriliyor. Bu bizi 22 den 5 e kadar olan saatleri sıralamaktan kurtarır. 22 – 5

arasında kullanıcılarımıza “iyi geceler” diyebiliriz.

 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

(sonsuz döngü) denir. Vbscript‘te kullanabileceğiniz döngü yöntemleri şunlardır.

For-Next döngüsü

Programın bir işi belirli kere yapmasını istiyorsak, ona yapacağı işi bir sayaç değişkeni ile

birlikte, for döngüsüyle bildiririz.

For sayaç = başlangıç To son Step adım

Yapılacak işler

Next

Burada, “sayaç” yerine istediğ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

%>
 

Bu asp kodunda, gunler adıyla bir dizi-değişken oluşturuyoruz ve bu değişkenin 7 hanesine,

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

olmadığına göre sayacı bir artırayım. Sayaç böylece 1 oldu”

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

bakımdan vbscript güvenilir ve çalışkan bir arkadaştır.

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ü

kullandığımız zaman sayacı bizim artırmamız gerekir.


Sözgelimi, yukarıdaki programın 7 günün tümünü ekrana yazdırması değil de, mesela gün

sayısı 5’den küçük ise yazdırmasını istiyor olabiliriz. Bu durumda kodumuzda for-next

arasındaki bölümde şu değişikliği yapmalıyız.

while sayac <= 5

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>

linkini vermeniz yeterli olacaktır.

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, yazdırılacak sayfanın adresini iki şekilde alabilmektedir :


1. Yazdırılacak olan sayfa ilgili linke eklenebilir.
<a href="sayfayazdir.asp?REF=Sayfanın Adresi>Sayfayı Yazdır</a>
sayfayazdir.asp'de gönderilen değişken alınarak işlemler yapılır.
2. Yazdırılacak olan sayfanın adresi sayfayazdir.asp içerisinde <b>
Request.ServerVariables("HTTP.Referer") yöntemi ile alınabilir.

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.

Scriptin çalışma mantığı ve gerekli açıklamaları da kod üzerinde verebiliriz :

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

'Yazdırılacak sayfanın adresi değişkene aktarılıyor.


strReferrer = Request.QueryString("REF")

'Adresin aktarıldığı değişkenin uzunluğu kontrol ediliyor.


If Len(strReferrer) < 1 then
'Eğer değişkene birşey aktarılmamış ise diğer yöntemle adres belirleniyor.
strReferrer = Request.ServerVariables("HTTP_REFERER")

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

If Len(strReferrer) < 1 then


Response.Write "Hata oluştu! Yazdırılacak sayfa bulunamadı."
Else
'Sayfa adresi başarı ile alındı ise sayfanın okunabilmesi için
'adının belirlenmesi işlemi gerçekleştiriliyor.
'Öncelikli olarak http:// ifadesi atılıyor.
strReferrer = Right(strReferrer,len(strReferrer)-7)

' Yazdırılacak sayfa adı tam olarak belirleniyor.


' Sitenin yapısına göre sayfa adı belirleme işlemi farklılıklar gösterebilir.
' Bu scriptte sayfayazdir.asp ile yazdırılacak sayfanın aynı klasörde olduğu varsayılıyor.
strReferrer = Right(strReferrer,len(strReferrer) - instr(1,strReferrer,"/")+1)
End If

End If

' Yazdırılacak sayfanın okunmasını sağlayacak obje oluşturuluyor.


Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

' Sayfanın bulunduğu yol belirleniyor.


strReferrer=Server.MapPath(strReferrer)

' Yazdırılacak sayfa açılıyor.


Set objOpenFile = objFSO.OpenTextFile(strReferrer, 1)

' Dosyanın başından sonuna kadar okunuyor ve her satır yazdırılıyor.


Do Until objOpenFile.AtEndOfStream
strLine = objOpenFile.ReadLine
Response.Write strLine & vbCrLf
Loop

' Açılmış olan objeler kapatılıyor.


objOpenFile.Close
Set objOpenFile = Nothing
Set objFSO = Nothing
%>

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

Piyasada kullanılan bütün programlama dillerinde değişkenler kullanılmadan önce tanımlanmalı ve


boyutlandırılmalıdır. Fakat vbscript de bu dillerin aksine değişkenlerin tanımlanması ve boyutlandırılması
zorunlu değildir. Vbscript tanımlanmamış değişkenleri hiç bir hata vermeden kabul eder. Fakat karmaşık
programlarda sayfalar arası değişken problemleri yaşanabilir (daha önceden kullandığımız bir değişkene
bir değer atamadan tekrar başka bir yerde kullanırsak eski değeri kalacağı için programda hatalar
oluşacaktır). Bunu değişkenlerimizi kullanılmadan önce tanımlayarak engelleyebiliriz. (profesyonel bir
programcı değişkenlerini kullanmadan önce mutlaka tanımlar böylece programın ilerleyen safhalarında
değişken hatası yapmamış olacaktır) Bu alışkanlığı zorunluluk haline getirmek için vbscipt de “Option
Explicit” terimi kullanılır. Komutu kullanmamız durumunda asp yordamcısı her kullandığımız değişkeni
kullanmadan önce tanımlanmasını zorunlu kılar bu sayede sayfalar arası değişken karmaşası oluşmaz. Ve
değişken adlarının yanlış yazılması bir nevi engellenmiş olur. Bu komutu mutlaka asp programlarınızın ilk
satırında kullanmalısınız, diğer hallerde program hata verecektir.

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

Dim Ad1, Ad2, Ad3, Ad4,


Ad5, Ad6, Ad7

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.

Sabit olduğu “Const” komutu ile belirtilmiş bir değişkene..

<%

Option Explicit

Const Url = “Jeoloji.net”

%>

Ş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

Kullanımları ise şu şekildedir.

<%

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.

1-      Metin işlemleri

2-      Sayısal işlemler

3-      Tarih işlemleri

4-      Test işlemleri

5-      Dönüştürme işlemleri

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

Metin = “Sanırsın dağlarda


yol olmaz.”

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

Len : Bir stringin uzunluğunu belirler. Örneklersek :

<%

Option Explicit

Dim Metin,Uzunluk

Metin = “Sanırsın dağlarda


yol olmaz.”

Uzunluk = Len(Metin)

respose.write Uzunluk

%>

Program çıktısı olarak “metin” değişkeninin uzunluğu olan 28 değeri çıkacaktır.

Ucase : Verilen stringin bütün karakterlerini büyük harfe çevirir. Örneğin,

<%
Option Explicit

Dim Metin, Buyuk

Metin = “Sevdan Bir Ateş


Oldu Bende.”

Buyuk = Ucase(Metin)

respose.write Buyuk

%>

Program çıktısı “SEVDAN BIR ATEŞ OLDU BENDE.” olacaktır.

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

Dim Metin, Kucuk

Metin = “Sanırsın Dağlarda


Yol Olmaz.”

Kucuk = Lcase(Metin)

respose.write Kucuk

%>

Program çıktısı “sanırsın dağlarda yol olmaz.” Şeklinde olacaktır.

Space : İçerisinde vereceğimiz değer kadar boşluk olan bir string yaratır.

<%
Option Explicit

Dim Bosluk

Bosluk = Space(5)

respose.write Bosluk

%>

Program çıktısı “ “ (5 adet boşluk) şeklinde olacaktır.

String : Space fonksiyonu gibi çalışır. İstediğimiz sayıda ve istediğimiz bir karakterde bir string oluşturur.

<%

Option Explicit

Dim Degisken

Degisken = String(5, “G”)

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

Dim Metin, Soldan

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

Dim Metin, Sagdan

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

Dim Metin, Deger

Metin = “Erhan Arı”


Deger = Mid(Metin, 4, 2)

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

Dim Metin, Deger1,


Deger2, Sonuc

Metin = “Orhan Arı”

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.

Değişkenler III (Devamı)

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.

Atn : Bir sayının arctanjantını verir.

Cos : Bir açının cosinusunu verir.

Exp : Bir sayının (onluk tabanda) üssünü alır.

Log : Bir doğal sayının logaritmasını alır.

Randomize : Rastgele sayı üreticisine ilk değer atar.

Rnd : Rastgele sayı üretir.

Sin : Bir açının sinüsünü verir.

Sqr : Bir sayının karekökünü verir.

Tan : Bir sayının tanjantını verir.

<%

Option Explicit

Dim Sayi, Sonuc

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

asp dili radyan cinsinden işlem yapar.)

Tarih işlemleri :
Visual basic programlama dilinin hemen hemen tüm zaman fonsyonları vbscript’te de aynen kullanılır.

Bunlara ek olarak extra birkaç fonksiyon eklenmiştir. Bu fonksiyonları sırayla inceleyelim;

Date : O anki tarihi verir (25.07.1997 gibi)

<%

Option Explicit

Dim Tarih

Tarih = Date()

respose.write Tarih

%>
 

Time : O anki zamanı verir (03:11:40 gibi)

<%

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

programlama içerisinde yanılgılara düşmemiş oluruz.

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

yanlıştır. Bu fonsiyonlar şunlardır.

Isarray : değişkenin dizi değişken (array) olup olmadığını sınamak için kullanılır.

Isdate : değişkenin değereinin tarih 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

Dim Isim, Bos

Isim = “Kurt Cobain”

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

Bazende değişkenlerin birbirleri arasında dönüştürülmesi gerekebilir. Bu dönüştürme fonksiyonları

şunlardır. (Bu fonksiyonların uygulamalarını ileri uygulamalarımızda yapıcağız.)

Asc : Bir karakterin numerik ANSI kod sayısını dödürür.

Chr : bir numerik ANSI sayısını karaktere dönüştürür.

Cbool : variantı boolean alt tipine dönüştürür.

Cbyte : variantı byte alt tipine dönüştürür.


 

Cdate : variantı date alt tipine dönüştürür.

Cint : variantı integer alt tipine dönüştürür.

Cstr : variantı string alt tipine dönüştürür.

Int : Bir sayının tamsayı kısmını verir.

Sgn : bir sayının işaret fonksiyonunu verir.

Şimdilik bu kadar programcı dostlarım. Gelecek  yazımda akış kontrolleri ve asp nesnelerini

inceleyeceğiz. Her türlü sorunlarınız için akkoyun@posta.jeoloji.net adresinden benimle bağlantıya

geçebilirsiniz.

ASP ile Bar Grafiği Oluşturmak


Bar Grafikleri

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.

Önce, malum DB bağlantısı;

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

Ve tabloya dökme işlemi ...

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

Form ile Bilgi Almak


ASP ile web programı yazarken en önemli unsurlardan biride formdan bilgi almaktır.Zaten bütün web
programlama formlar ile yapılır.Ziyaretçi Defteri olsun , forum olsun hepsinde form öğelerini kullanırız.Ben
size basit bir form ile bilgi alma örneği göstereceğim.Bunu geliştirip geliştirmemek tamamen sizin elinizde.

Bu örneğimizde form_kullanimi.htm ile kullanacağımız formları oluşturucağız.Yani bir nevi tasarımını ,


iskeletini. form_isle.asp dosyası ise form_kullanımı.htm de girdiğimiz bilgilerin ekrana yazılmasını
sağlayacak.Dikkat edin eğer form_kullanimi.htm dosyasında bir yazı yazmadan form_isle.asp ye bakmaya
çalışırsanız browser bu sayfayı göstermez.

Aşağıda form_kullanimi.htm dosyasının içeriği verilmiştir.

<html>

<head>

<title>Form ile Bilgi Almak</title>

</head>

<body>
<form method="post" action="form_isle.asp">

<b>Adınız :</b><input type="text" name="ad">

 <b>Soyadınız : </b><input type"text" name="soyad">

<input type="submit" value="Gönder">

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

Aşağıda form_isle.asp dosyasının içeriği verilmiştir.

<html>

<head>

<title>Form ile Bilgi Almak</title>

</head>

<% @ Language=VBscript codepage=1254 %>

<body>

<% dim ad,soyad

'form_kullanimi.htm dosyasında textlere verdiğimiz isimleri hatırlıyor musun?

ad=Request.Form("ad")

soyad=Request.Form("soyad")

%>

<%=ad%>&nbsp;<%=soyad%>

</body>

</html>

Bu dosyada kullandığımız "&nbsp;"boşluğun kodlanma şeklidir.Yapmamın sebebi ad ve soyad değişkenleri


arasında hoş gözükmesi için bir blok boşluk bırakmak. ılk dosyada girdiğimiz "Ad ve Soyad"ı form_isle.asp
de "Request" nesnesinin "form" metodu ile alıyoruz ve sayfaya yazdırıyoruz.
Ve Microsoft ASP'yi Yarattı
Artık internet herkesin ve hepimizin oluyor bunun farkında mısınız? Her client (kullanıcı) aynı düzeyde
sörf hakkına sahip. İntenet bize bu özgürlüğü getirdi. Nasıl mı? Siz kendinizi en samimi arkadaşınıza bile
anlatmakta zorlanırken, sanal alemde dünyaya istediğiniz gibi tanıtıyorsunuz. Bu kendimizi anlatma
olgusu sanal alemde “Homepage” lerin doğmasına neden oldu. Peki nasıl oluyor da çalışıyor bu web
sayfaları!

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

Uygulama Tasarımı Nedir?


Tek bir ASP sayfasını tasarlamak çok önemli değildir. Ancak onlarca – hatta yüzlerce – karmaşık ASP
sayfası tasarlamak, dizayn etmek elbette bir maharet isteyecektir. Bu şekilde fazla sayıda sayfadan
oluşan siteler tamamen ölçeklenebilir olmalıdır. Bu yüzden bizler ASP kodlarımızı oluşturmaya
başlamadan önce bir adım geriye gitmeli ve uygulamamızın tasarımını, mantığını ve akış diyagramını
gözden geçirmeliyiz. Eğer kodlarımızı oluşturmadan önce böyle bir faaliyette bulunmadıysak öncelikle bu
aşamaların gereğini yerine getirmeliyiz, aksi takdirde gereksiz zaman kayıplarını göze almalıyız.

Aslında uygulamayı tasarlamak, mantığını ve akış diyagramını oluşturmak uzun zaman alan ve kodları
yazmaktan daha zor bir iştir.

Uygulama geliştirme basamakları :

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

Web için Dizayn


Webin gelişmesi ile birlikte, programın tasarım aşamasında genellikle sitenin estetiği ön plana çıkmıştır.
Web’in ilk günlerinde büyük çoğunlukla siteler statik, kullanışsız ve tasarımlarıyla cezbedici olmuştur. Web
olgunlaştıkça daha dinamik, kullanışlı ve en önemlisi tasarım aşamasına gerekli zaman ayrılmış siteler
yaygınlaşmaya başlamıştır, çünkü kullanıcı (ziyaretçi) artık görsellikle beraber içerikle ve sitenin kullanışlı
olması ile de ilgilenmektedir.

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?

ASP Dizaynında Yapılabilecek Hatalar


Görülen odur ki, çoğu programcı programlama(script) tasarımı kısmına çok fazla zaman ayırmamaktadır.
Böylece web sitesinin güzel görünmesi ve görevlerini bitirmek için nelere ihtiyaçları olduğunu bilmeden
scriptlerini yazmaya başlamaktadırlar. Böylece iyi çalışmayan ve gereksiz hatalar veren scriptler elde
etmektedirler.

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.

ASP kodlarınızda Include Virtual Kullanımı


Webmasterlar için çok önemli bir meseleye değiniyoruz.Çoğu webmaster sitesinin her
sayfasında kullanacağı dökümanları ayrı ayrı uygulamakta ve buna bağlı olarak feci şekilde
vakit kaybetmektedir...
 
Webmasterlar için çok önemli bir meseleye değiniyoruz.Çoğu webmaster sitesinin her sayfasında
kullanacağı dökümanları ayrı ayrı uygulamakta ve buna bağlı olarak feci şekilde vakit
kaybetmektedir.Bazıları bu işe frame veya javascript ile çözüm buldular.Fa- kat buldukları çözümler
tarayıcılar yüzünden kâbusa döndü.şimdi bu meseleye bir çözüm bulmak gerekiyor.ASP yardımımıza
koşuyor. ASP ile tek satırlık kod ile bu işlemi kolayca gerçekleştirebilirsiniz.ışe başlayalım.

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.

Herşeyiyle Server Nesnesi


Bu makalemizde sizlere ASP’nin bence en önemli nesnelerinden birisi olan server nesnesini

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.

İşte bu tanımlamaları yapabilmek için server nesnesi kullanılır.

Unutulmaması gereken en önemli nokta server nesnesi ile request nesnesinin bir özelliği olan

servervariables özelliğinini karıştırılmamasıdır. Servervariables özelliği sadece server ile ilgili

değişkenlerin alınabileceği bir özellikdir (sadece okunabilir / read only). Fakat server nesnesi serverın

ASP programcıklarını yorumlarken kullanacağı parametreleri ayarlayabilen bir nesnedir.

Server nesnesinin toplam 5 adet özelliği vardır. Bunlar;

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

sayfalarının maksimum oluşturulma süresi ayarlanabilir.


Bir ASP scriptinin dinamik olarak bir HTML sayfasını oluşturma hızı tamamen ASP içerisindeki işlem

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

bir scriptden çok daha yavaş işlenerek istemciye gönderilecektir.

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.

Yani bir nesne hem yazılabilir hemde okunabilir olmaktadır.

Bu kadar teorik bilgi verdikten sonra server nesnesinin scripttimeout özelliğine geçebiliriz.

Scripttimeout özelliğini okuma amaçlı kullanırken; bu özelliğin o andaki değerinin kaç

olduğunu öğrenebiliriz. Burada adı geçen değerin birimi saniyedir yani timeout olayı

saniyelerle ölçülür. Okuma özelliğine örnek verecek olursak;

<%

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

yazılma özelliği yardımı ile yapacağız. Örneğin;

<%

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

işlemi sonlandırarak hata verecektir.

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

gerçekleştiren komponent mevcutdur. Bu komponentleri ASP içerisinde direkt olarak kullanabilmemiz

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

tanımlama işleminden sonra nesne özelliklerini yine herzamanki gibi kullanabilirsiniz.

Ö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:

Server nesnesinin MapPath metodunu kullanarak, dosyaların konum bilgisini

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.

<%

‘Sanal Dizin /Akkoyun Olsun

Dim Fiziksel

Fiziksel =
Server.Mappath(“/Akkoyun”)

%>
“Fiziksel” değişkeni içerisindeki gerçek yol bilgisi, c:\inetpub\wwwroot\akkoyun olacaktır.

Mappath metodu sunucu üzerinde o dizinin var olup olmadığını satayamaz.

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

gösterebiliriz. Kullanımı yine herzamanki gibi oldukça kolaydır.  

<%

Response.Write(
Server.HTMLEncode

(“<%=now%>”)

%>
Yukarıdaki örnekte görüldüğü gibi kullanıcı ekranında “<%=now%>” şeklinde bir çıktı almış olacağız.

URLEncode:

URLEncode metodu HTMLEncode metoduyla benzerdir. Fakat, bir bilgiyi alır ve

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

metodunun amacı, kodumuzda hiperlink bağlantıları oluşturacaksak bunların doğru

formatta olduğunu garantilemektir. Aşağıdaki örnekte bu özelliğin nasıl kullanıldığını

görebilirsiniz.

<A HREF=”Test.asp?ID=

<%

Server.URLEncode(“33%”)

%>

33% </A>
 

Tablo-1 de ANSI standartlarında decimal değerlere karşılık gelen karakterler bulunmaktadır. Bu

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)

ekleyerek ulaşabilirsiniz (174). Bu kodu ise “0174%” şeklinde urlencoded yapabilirsiniz.   

ANSI kodlarının toplam 4 basamaktan oluşması gerektiğini unutmayın ve değer eğer 4 basamaktan

küçük ise sol tarafına 4 basamak oluncaya kadar sıfır koyunuz.

Bu kodları ALT+ şeklinde kullanabilirsiniz. ALT tuşuna basılı tutarken “0033” rakamlarını kodlamanız

durumunda ANSI karşılığı olan “!” sembolunu elde edersiniz.


Gelecek makalede buluşmak üzere herkese çalışmalar.

Herşeyiyle Response Nesnesi


Bu nesnemiz bünyesinde on adet fonksiyon bulundurmaktadır. Bunlar

1-      Cookie

2-      Buffer

3-      Content Type

4-      Expires

5-      Add Header

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

için bu ay sırf cookie’leri anlatacağız.

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ı

yapabilecek ve bunu istediği zaman kullanabilecektir.

Ön bir bilgi verecek oluyrsak şöyle söyleyebiliriz: Cookie’ler response nesnesi ile kaydederken request

nesnesi ile okutulabilen metin dosyaları şeklinde söyleyebiliriz.

İ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

kalabilirler. Kalici cookie’ler kullanıcının bilgisayarında metin dosyası olarak saklanır.

 
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

farklı şekilde yaparız.

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

programlarımız tarafından direkt çağrılarak kullanılır.

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

değer ise eşitliğin sağındadır.

 
<%

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

saklanacaktır. (genel kullanım)

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

saklayarak hem kullanım hemde güvenlik açısından kolaylık sağlamış oluruz.

Bir çereze istediğiniz içeriği koyabilirsiniz. Bununla birlikte, çerezlerin belirli sınırlamalarınında farkında

olmanız gerekir. Orjinal cookie spesifikasyonuna göre

(http://home.netscape.com/newsref/std/cookie_spec.html), bir tek bilgisayar bütün web sitelerinden

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:

Cookielerimizi ziyaretcinin bilgisayarına kaydettik kaydettik de bu çerezler ne zamana kadar o

bilgisayarda durucak onu kaydetmedik? İşte bu soruya yanıt bulmaya çalışan Microsoft ustaları cookie

fonksiyonuna bir özellik ekleyerek bu engeli aşmışlar.

Bu özellik sayesinde cookie’lerin ömrünü belirleyebilirsiniz. Bu tarih geçtikden sonra çerezlerimiz artık

kullanılmaz olacaktır. Örneğin :

 
<%

Response.Cookies(“cerez”) =
“Haldun Özer”

Response.Cookie(“cerez”).

CookieExpires = “November 14,


2001”

%>
 

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

komutu kullanılır. Örneğin :

<%

Response.Cookies(“cerez”).(“a”)
= “Refiye”

Response.Cookies(“cerez”).(“b”)
= “Meral”

Response.Cookies(“cerez”).(“c”) =
“İlknur”

Response.Cookie(“cerez”).

CookieExpires = “November 14,


2001”

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.

Cookilerin ziyaretcinin bilgisayarına nasıl kaydedeceğimizi öğrenmiş olduk. Peki bu çerezleri

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.

O site dışındaki siteler yetkisi olmayan cookilere erişemez.

Çerezleri Okumak:

Yukarıda anlatılan şekilde kaydettiğimiz çerezlerimizi programlarımız içerisinde geri çağırmak için

request (istek) nesnesinin Cookie fonksiyonunu kullanabiliriz. Örneğ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

değişkene atanan değer ise eşitliğin sağında yer almaktadır).

 
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

okuturkende aynen kullanmanızdır. Aksi hallerde hata ile karşılaşırsınız.

Bu makalemizde geçen makalede kaldığımız yerden devam ederek response nesnesinin cookie

dışındaki özelliklerini inceleyeceğiz.

Buffer (tampon):

Response nesnesinin bize tanıdığı bir diğer kolaylık ta buffer (tampon) özelliğidir. Standart bir asp

programcığı serverda derlendiği an ziyaretcinin browserıne yollanır.

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

bulunan istemciye gönderilmez.


Bu komutun çalışabilmesi için HTML başlangıç tagından (<HTML>) önce kullanılması gerekmektedir.

Ö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

tamponlama yani buffer denilmektedir.

Flush (hemen gönder):

Buffer komutunun yaptığı işlemde kod tamamen derlenmeden browsera gönderilmesini

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

bir noktasında o ana kadar işletilmiş kodu ziyaretcinin browserine gönderebilmekteyiz.

<%

...

...

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

işletilmeye devam eder.

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

sözgelimi elektronik alışveriş sitemizde alışverişten vaz geçildiğinin belirtilmesi üzerine,

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

ziyaretciye gönderilir. Bu sayede programcığımızın çıktısını istenilen anda temizlememiz mümkün

olmaktadır.

Expires (süresi dolan):

Kullanıcı aksi bir ayar yapmadıkça ziyaret edilen websiteleri “Geçici İnternet Dosyaları”

dizinine (cache) kaydedilir ve bir daha ki kullanımda bu dizinden çağırılarak kullanılır. Bu

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

edebiliriz ve dosyaların cache de en fazla nekadar saklanacağını belirleyebiliriz. Bunu

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

bu sayfaya tekrar girilirse yine cacheden bilgi alınarak ekrana getirilir.

Not : bu işlemi atlayarak o anki ziyaret edilmekte olan siteyi serverdan yeniden almak için (cacheden

almadan) internet explorerde CTRL+F5 yapılabilir.

End (sonlandır):

Response nesnesinim bir diğer metodu olan end metodu o ana kadar işletilmiş olan tüm

bilgileri ziyaretciye yollayarak kodun işletiminin durdurulmasını sağlar. Bu işlem

sırasında buffer metoduyla da hafızada tamponlanan veri ziyaretciye gönderilir.

<%

...

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.

http://www.w3.org/pub/www/protocols/rfc2068/rfc2068.txt adresinden durum kodlarının tüm listesine

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

kaynaklandığı yeri belirtir.

İ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

kaynaklanan bir hata olduğunu anlayabiliriz.

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

Response nesnesinin en çok kullanılan metodlarından birisi de write metodudur. Bu

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.

<%

Response.Write “PC Net”

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

<% =Date() %>


Bu örnekte response.write ile aynı anlama gelmekte olan yazdırma biçimi gösterilmiştir. Ve ekrana o

an ki tarih çıktısı alınır.  

Response.write metodunda dikkat edilmesi gereken bir özellik özel karakterlerin yazımıdır. Bu özel

karakterlerden en önemlisi “ işaretidir. Bu işaretin kullanımı aşağıdaki gibi olmalıdır.


 

<%

Response.Write “Benim Adım


“”Günce Akkoyun”” “

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

Gelecek yazıda buluşmak üzere herkese çalışmalar.

Sunucu Değişkenleri (Server Variables)


Server Variables:

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

taşıyabilir. Bu oluşturulan değişkenler server variables özelliğini kullanarak programımız

içerisinde kullanılabileceğimiz bir değişkene atayabiliriz. Server variables özelliği ile

serverdan hangi değişkeni alıcağımızı ise “istek metodu” yardımı ile yaparız. Aşağıda server

variables özelliğinin kullanımı gösterilmektedir.

 
<%

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

Kullanıcı kimlik doğrulama tipi.

CONTENT_LENGTH

İstemci tarafından gönderilen veri boyutu (byte biriminde)

DOCUMENT

O an kullanılmakta olan doküman dosyasının adı.

DOCUMENT_URL
O an kullanılmakta olan doküman dosyasının sanal yeri.

DATE_GMT

Serverın o anki tarihi (GMT formatında)

DATE_LOCAL

İstemcinin o anki tarihi (GMT formatında)

GATEWAY_INTERFACE

Ağ geçidini CGI tanımları

LAST_MODIFIED

O an kullanılmakta olan doküman dosyasının son değiştirilme tarihi

LOGON_USER

Serverda giriş yapmış NT kullanıcısı hakkında detay

PATH_ INFO

İstemci tarafından sağlanan ek yol bilgisi

PATH_TRANSLATED

Fiziksel dizin adına çevrilmiş sanal yol

QUERY_STRING

URL dizisi sonundaki soru işareti ile (?) ayrılmış bölümden sonraki bilgi.

REMOTE_ADDR

İstemcinin IP adresi

REMOTE_ HOST

İstemcinin host adı

REMOTE_IDENT
Eğer RFC931 doğrulamasını destekliyor ise istemcinin host adı

REMOTE_USER

Sunucu tarafından yetkilendirilen istemcinin kullanıcı adı

REQUEST_METHOD

İstemcinin yolladığı istek metodu tipi.

SCRIPT_MAP

Scripting için kullanılan harita.

SCRIPT_NAME

Çalıştırılacak uygulama yada script adı.

SERVER_NAME

Sunucunun IP adresi veya host adı.

SERVER_ PORT

İstemciden isteği alan port adresi http için 80 değerini alır

SERVER_ PORT_SECURE

İsteğin şifreli portda olması durumunda “true” (1) değerini alır

SERVER_PROTOCOL

Protokol adı ve versiyonu, genellikle HTTP/1.1 sunucu ve istemci tarafındaki yazılıma

bağlıdır

SERVER_SOFTWARE_URL

Web sunucusunun yazılımının adı ve versiyonu ve o anki sayfasının URL adresi

Bu istek metodlarından bir kaç tanesini örnekle açıklamak gerekirse.

 
<%

IP = Request.
servervariables(“REMOTE_ADDR”)

%>
 

Bu programcık çalıştıkdan sonra IP değişkenine kullanıcının IP si olan “195.174.129.113”

şeklinde bir değer alır.

<%

SN = Request.
servervariables(“SCRIPT_NAME”)

%>
 

Bu programcığın çıktısı olarak SN değişkenimize o an çalışmakta olan scriptin adı dönecektir.

Örneğimizde bu “script_name_test.asp” şeklindedir.

<%

LM = Request.
servervariables(“LAST_MODIFIED”)

%>
 

Bu scriptimizde ise LM değişkenine o an çalışmakta olan programcığın en son düzenlenme

tarihi atanacaktır. Örneğimizde bu “03/09/2001” şeklinde olacaktır.

<%

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

POST olacaktır (geçen ay form ile veri gönderme konsunda anlatılmıştır).

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,

istemciler bu işlemi yapamayacaklardı.

Bu islem icin cookieler kullanılmaya başladı. Böylece asp programları da istemci tarafında

veri kayıdı yapabilecek ve bunu istediği zaman kullanabilecektir.

Ön bir bilgi verecek oluyrsak şöyle söyleyebiliriz: cookieler response nesnesi ile kaydederken

request nesnesi ile okutulabilen metin dosyaları şeklinde söyleyebiliriz.

İ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

kullanıcının bilgisayarında metin dosyası olarak saklanır.

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.

Ve bu sekilde asp scriptimiz içerisinde istediğimiz gibi kullanabiliriz.

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ı

kullanacağımızı belirtmiş oluyoruz.

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

anlamıyla anlayabilmek için şimdilik yüzeysel geçiyoruz.

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

yardımı ile) toplamda ne kadar veri içerdiğini gösterir.

Ö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ı

durumlarda oldukça işe yarar.

<%

sayac =
Request.TotalBytes

%>
Yukarıdaki örneğimizde istemciden sunucuya gönderilen verinin miktarını sayac isimli

değişkenimize atadık.

ASP’de Hata Kaydetme(Error Logging)


ASP sayfaları oluşturken çoğu kez hatalı scripting veya ASP objelerinden dolayı hatalar alıyoruz. Basit bir
tırnak yada apostrof yanlışlığı bile bu durma yol açabilmektedir. IIS üstünde çalışmak Geliştiriciye PWS
üstünde çalışmakdan daha yaralı olabilmekte bu konuda. Şöyle ki, bir hata oluştuğunda IIS'in verdiği
error descriptionları PWS nin kine göre daha detaylı oluyor.
ASP sayfaları oluşturken meydana gelebilecek hataları daha detaylı olarak incelebilmek ve kontrol altında
tutabilmek için Error loging olayına başvurabiliriz. 

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:

<Script runat = Server Language = "VBScript">


Function WriteToLogFile
On Error Resume Next
WriteToLogFile = False
Set NesneFSO = CreateObject("Scripting.FileSystemObject")
Set NesneLog = NesneFSO.OpenTextFile(C:\deneme.txt,8)
NesneLog.WriteLine
NesneLog.Close
WriteToLogFile = True
End Function
</script>

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 Nesnesinin Kullanımı


Yığın halinde tek başlarına çalışabilen asp uygulamarımızı birbirleriyle ilişkilendirmek
Application nesnesi ile mümkündür. Application nesnesi aynen Session nesnesi gibi
calışmaktadır. Tek farkı Application nesnesi global bir nesnedir. Bütün kullanıcılar aynı
Application nesnesini kullanabilirler.

Application Nesnesi global düzeyde oldugu icin her zaman global.asa dosyası altında tutulur.

Şimdi örnek kodumuzu inceliyelim:

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?

**************************************************************

Global.asa Dosyasının görünümü:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

Sub Application_OnStart

'Eğer aktif bir application yoksa bu demektir ki application nesnesi ilk defa başlıyor.

'Buna bağlı olarak aktif kullanıcı sayımızı sıfırlıyoruz.

Application("AktifKullanici") = 0
End Sub

Sub Session_OnStart

'Her yeni kullanıcı için açılan session nesnesine tekil dosyalardan olduğu gibi

'buradanda değer verebiliriz.

Session.Timeout = 20

'kullanıcının session nesnesinin değer dışı kalma süresi

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.Lock application nesnesini kitler. Bu işlemi yapmamızın sebebi ise application


nesnesine değer atarken başka bir kullanıcının application nesnesini degistirmemesini
saglamak.

Application("AktifKullanici") = Application("AktifKullanici ") + 1

Application.UnLock

've tekrar UnLock ile application nesnemizi serbest birakiyoruz.

End Sub

Sub Session_OnEnd

Application.Lock

'Kullanıcının session I bittiği takdirde application nesnesini kitliyoruz ve yeni degerimizi


veriyoruz.

Application("AktifKullanici") = Application("AktifKullanici") - 1

Application.UnLock

End Sub

</SCRIPT>
 

**************************************************************

Peki bunu sayfada nasıl göstereceğiz? &#8211;

Bunuda aynen session nesnesini kullandıgımız gibi kullanıyoruz. Ornek:

<html>

<title> AktifKullanici </title>

<body>

<%=Application(&#8220;AktifKullanici&#8221;)%> kisi su anda sayfamizda.

</body>

</html>

**************************************************************

ASP Dilinde Nesnelerin Kullanımı


Günlük hayatda olduğu gibi proglamlamada da işlemlerimizi değişik nesnelere yaptırırız.

Örneğin birşey kesmek istediğimizde bıçak kullanırız, su içmek istediğimizde bardak

kullanırız vs. Kullandığımız her nesnenin ise beliri özellikleri vardır. Örneğin kesme işlevini

gerçekleştiren bıçak keskindir. Yada su içeceğimiz bardak suyun dökülmesini engelliyecek

şekilde kapalı bir cisimdir.

ASP tekniğinde işlemlerimizi gerçek hayatda olduğu gibi nesnelere yaptırtırız. Nesne

yönelimli programlama kavramı (Object Oriented Programming OOP) bu şekilde ortaya


çıkmıştır. Diyelim ki öğretmensiniz ve ASP programınızda her öğrencinin notunu veritabanına

işleyen, veritabanından notları alarak geçeni kalanı belirleyen veya öğrencilerle ilgili

yapılması gereken birçok işi yapan programcıklarımız mevcut; bu programcıkların kullandığı

birçok değişkenimiz var: demek ki sizin ASP programınızda “öğrenci” diye bir nesneniz var.

Ve siz bu nesneye yönelimli program yazmışsınız.

Her program nesnesi iki unsura sahiptir.

Özellik (property) : bir nesnenin özellikleri, onun değişkenleridir. “Öğrenci” nesnesinin

“Öğrenci Adı”, “Notlar”, “Adresi” gibi değişkenleri yani özellikleri vardır.

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

fonksyonları, onun metodlarıdır.

Fakat ASP’de nesneler sadece sizin öbekler halinde toplayacağınız fonksyonlar ve

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.

ıf Nesne.Özellik > Değer Then

Nesnelerin özelliklerinin değerini değişkenlere atayabiliriz ancak bunu yaparken nesnenin bir

metoduna (fonksiyonu) göndermede bulunmamız ve gerekiyorsa bu fonksiyona kullanması

için veri göndermeliyiz. (bir fonksiyona kullanması için gönderilen değere argüman/argument

denir);

Değişken = Nesne.Metod (argüman1,argüman2..)

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

ise, her bir kullanıcının uygulamadan istediği sayfaları simgelendirmektedir.


Bir oturum, bir request nesnesinin HTTP iletişimini başlatır, bir web gezgininden, bir

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

Web gezgininden yollanan çerezlerdir

2-      ServerVariables

HTTP ve çevre değişkenlerinin değerleridir

3-      Form

Web gezgininden yollanan form elemanlarının değeridir

4-      QueryString

HTTP sorgu stringindeki değişkenlerin değeridir

5-      TotalBytes

Bu istekte, iletişim sırasında kullanılan toplam byte sayısını öğrenebiliriz.


 

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

parçası olarak gizli şekilde gönderilmektedir.

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

%>
 

şeklinde alabilmekte ve asp içerisinde kullanabilmekteyiz. Bu kod içinde “isim” değişkenine

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

gönderilen verileri form kullanmadan da göndermek mümkün olmaktadır.)

Bu veri transferini yapmanın bir diğer yoluda gönderen form özelliğini “POST” yaparak

mümkün olmaktadır. Bu özellik sayesinde verilerimiz URL satırında gözükmeden alıcı

tarafından kullanılabilmektedir.

Eğer verimiz form içerisinde “POST” şeklinde gönderilmiş ise bunu ASP içerisinde bir

değişkene şu şekilde verebiliriz.

<%

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

satırında veri gözükmemesidir yani;

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

kullanarak veri gönderdiğimiz zaman kullanabilmekteyiz.)

Bir request nesnesini hiçbir fonksyon kullanmadan çağırmamız halinde; yani

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

şeklindedir. Bu şekilde kullanmanız size zaman ve hız kazandırabilir.

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.

Bunu bir örnek ile pekiştirelim.

Kullanım şekli şöyle: Server.URLEncode( string )

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

buna link verirsek: 

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

Evet, biraz cin çarpışma döndü, ama yakından incelersek burada;

"." = %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.

You might also like