Web tarayıcınızın yetenekleri ile sınırlı olan sayfalarınızı, tarayıcınızdan bağımsız dinamik bir hale getirmenin yolu, ASP teknolojisini bir an önce kavramaktan geçiyor. Korkulduğu gibi ASP yeni bir programlama dili değil, aksine HTML ve scripting kodlarını iç içe bulunduran web sayfalarını, sunucu tarafında çalıştırma tekniğidir. Yalnız bu tekniği tam olarak anlayabilmek için Web’in nasıl çalıştığını, Server (Sunucu) ve Client (İstemci) ilişkisinin nasıl yürüdüğünü bilmek gerekiyor. Ayrıca Jscript, Vbscript, Perl gibi scripting dillerinden herhangi birine aşinalık veya en azından nesneye yönelik bir programlama dili, örneğin. Visual Basic kullanmış olmak ve HTML kodlarına yabancı olmamak başlangıç için yeterli olacaktır.
Active Server Pages kelimelerinin baş harflerinden oluşan ASP, sunucu taraflı geliştirme ortamıdır. Dosya uzantısı “.asp” olan ASP sayfalarında HTML ve Script dili bir arada kardeşçe bulunabilmektedir. ASP sayfalarının çalışmasını kısaca şöyle izah edebiliriz: Web tarayıcınıza .asp uzantılı bir adres girildiğinde, normal şartlar altında Web Server bunun ASP olduğunu anlar ve dosya içerisindeki script kodlarını işletir. Kodlar işletildikten sonra kodun sonucunda oluşan HTML kodlar ise kullanıcının tarayıcısına geri yollanır. ASP teknolojisi sayesinde, sayfalarınıza koyacağınız HTML, VBScript kodları ve veritabanı uygulamaları, Server’da icra edileceğinden, ziyaretçinin Browser’ının örneğin VBScript’i tanımayan Netscape olması, hiç önemli değildir. ASP bu özgürlüğü, kodların server tarafında işletilmesine borçludur. Kullanıcının ekranında sadece kodların işletilmesi sonucunda oluşan HTML sayfası görüntülenir. ASP’nin bir avantajı da, kullanılan kodların başkaları tarafından kopyalanamamasıdır.
ASP, sunucu taraflı uygulama geliştirme ortamı olduğu için Web Server’ın varlığına ihtiyaç duyar. Microsoft’un ASP için kullanabileceğiniz iki adet Web Server uygulaması var. Bunlar Personal Web Server (PWS) ve Internet Information Server (IIS)’dir. Ayrıca ASP ile veritabanı uygulamaları da geliştirelim abi diyorsak, veritabanları ile bağlantıyı sağlayan ODBC uygulamasının yüklü olması gerekiyor. Web sayfalarınızı kendi bilgisayarımdan yayınlarım ve günde 5-10 hit’e razıyım, makinemde zaten Windows 98 işletim sistemi yüklü derseniz PWS’yi tavsiye ederiz. Yok eğer baba gibi bir sisteminiz var ve her gün yüksek hit almak istiyorsunuz tabii ki IIS diyoruz. Çalıştığınız platform Windows 95, 98, NT4 WorkStation veya NT4 Server ise sisteminize Web Server programını kendiniz kurmalısınız. Hayır Windows 2000 Server kullanıyorsanız, bu işlemin otomatik olarak gerçekleştiği aklınızda bulunsun. Sayfalarınızı kendi kendinize deneyebilmek için mutlaka bilgisayarınıza Web Server kurmalısınız. Şimdi Web Server’ın nasıl kurulduğundan ve hangi ayarlamaların yapılması gerektiğinden kısaca bahsedelim...
ASP teknolojisi ile oluşturduğunuz sayfaları, yani içinde ASP teknolojisinin gerektirdiği kodlar bulunan HTML dosyalarını, .asp uzatmasıyla kaydederiz. Bu dosyalar talep edildiğinde, Web Server programı, eğer ASP teknolojisini tanıyorsa, talep edilenin ASP sayfası olduğunu dosya adının uzatmasından anlar; ve bu sayfayı ziyaretçiye yollamadan önce kendisi işleme tabi tutar. ASP sayfamızdaki kodlar büyük bir ihtimalle bir takım dinamik işler yapacak, örneğin hesaplamalar, araştırmalar, veri tabanından veri çekme, dosya sisteminden dosya isteme gibi görevlerini yerine getirecek, ve ortaya çıkacak olan HTML dosyasını ziyaretçiye gönderecektir. Diyelim ki bu örnekleri yaptınız ve ücretsiz Site yeri edinmiş olduğunuz Hosting firmasının bilgisayarındaki sitenize yerleştirdiniz. Sonra Browser’ınızın URL hanesine bu ASP dosyasının adını yazdınız ve sayfayı talep ettiniz. Karşınıza, ya ASP sayfasının içindeki kodları görüntüleyen veya sadece sayfanın HTML unsurlarına yer veren bir sayfa geldi! Bu Server’ınızın ASP anlamadığını gösterir. ASP sayfalarınızı ASP-uyumlu Web sunucularında çalıştırabilirsiniz. Sitenizde ASP sayfaları bulunacaksa ve ücretli evsahibi firmalardan site alanı edinecekseniz, sunucunun ASP-uyumlu olmasına dikkat edin.
Şimdi, ilk ASP’mizi çalıştırdığımıza göre, biraz teknikten söz edebiliriz. HTML’in ziyaretçinin bilgisayarında çalıştığını biliyorsunuz; istemci Browser, sizin URL hanesine adını yazdığınız HTML dosyasını yine adresteki sunucu Web Server’dan ister. Web Server da bu dosyayı bulur ve içinde kayıtlı resim ve diğer unsurlarla birlikte istek sahibine gönderir. Fakat kimi zaman Server’a bize sadece bir dosyayı göndermesini değil, fakat bu dosyanın içinde kayıtlı komutlar varsa onları icra etmesini de bildirebiliriz. Bunu yapmanın bir yolu CGI programlarıdır. Bir diğer yolu ise ASP’dir. Web Server, kendisinden bir ASP belgesi talep edildiğinde, kendi kendine “Dur bakalım! ASP istendiği zaman hemen alıp göndermek yok, önce bunu ASP.DLL programına gönderelim.. Ondan sonra işimize devam ederiz!” der.

ASP.DLL, kendisine .asp dosyasının geldiğini görünce, hemen ASP’lerin Anayasası olan global.asp’nin çalışıp çalışmadığına bakar. global.asa, tıpkı diğer ASP dosyaları gibi bir düz yazı dosyasıdır ve ASP programlarının çalışma koşullarını düzenleyen kuralları içerir. (Bu dosyayı sırası gelince ele alacağız.) Yukarıdaki örneklerde gördüğümüz gibi ASP dosyası hem HTML kodları içerir, hem de içinde bir Script diliyle yazılmış kodlar vardır. ASP’ye “program” özelliği kazandıran bu Script dili ile yazılmış kodlardır. ASP.DLL, önce gelen .asp dosyasında hangi Script dilinin kullanıldığına bakar ve bunun için gerekli ortamı oluşturur; yani bu Script dilini yorumlayacak programı çalıştırır; bu program Script’i yorumlar ve icra edilecek komutları icra eder; ASP.DLL, icra edilen komutlar, işletim sisteminin yardımını istiyorsa (örneğin bir veritabanından veri çekmek gibi, veya dosya sistemine bir dosya açtırmak, yazdırmak, sildirmek gibi) bu yardımın edinilmesini de sağlar. Bütün bu işlerin sonunda sizin yazdığınız HTML kodlarına ek yapmak (örneğin bir tablonun içini, çekilen verilerle doldurmak veya dosya sisteminden edinilen bir dosyanın içeriğini sayfaya aktarmak gibi) gerekiyorsa bu ekleri ASP.DLL yapar.
ASP.DLL, kendisine sevk edilen dosyayı satır satır okur ve önce dosyadaki ASP kodlarının gerektirdiği HTML değerlerini bulur; yani önce ASP icra edilir, gereği yerine getirilir. Sonra HTML bölümleri ile birleştirilip sonuçta sunucuya saf ve temiz bir HTML sayfası gönderilir. Bu sayfanın içinde bir satır bile ASP kodu bulunmaz. Eğer sayfanıza ziyaretçinin Browser’ında çalışması amacıyla Javascript veya VBScript kodları koydu iseniz, elbette bu kodlar HTML’in parçası olarak ziyaretçiye gidecektir. Fakat giden sayfada artık ASP’ye ilişkin hiç bir şey kalmamış olacaktır.
Biliyorsunuz, mevcut sürümleri itibariyle Browser programları içinde Netscape VBScript dilini anlamaz. ASP sayfalarımızda istediğimiz Script dilini kullanabiliriz; VBScript de kullanabiliriz. Netscape’in VBScript anlamamasıyla, ASP sayfalarımızda VBScript kullanmamızın bir ilgisi yoktur; çünkü ASP sayfasının ortaya çıkartacağı HTML kodunda ASP dolasıyla VBScript bulunmayacaktır; dolayısıyla ASP sayfalarınız, Netscape tarafından da anlaşılıp, görüntülenebilecektir. Tabiî ortaya çıkacak HTML sayfasının Netscape tarafından arzu ettiğiniz gibi görüntülenebilmesi için Netscape’in anlayabildiği dinamik HTML unsurlarına yer verme zorunluğunuz hâlâ devam ediyor.
|
Koleksiyonlar |
Metodlar |
Özellik |
Özellik |
Özellik |
Özellik |
Request nesnesi, Web programımızın Girdi (Input) bölümünü oluşturur. Bir Web ziyaretçisi herhangi bir talepte bulunduğu, yani bir sayfanın gönderilmesini istediği anda, Web Server bu talebi, bir nesne olarak ele alır ve istenen bilgiyi ziyaretçinin Browser'ına gönderir.
Kullanıcının Talep ettiği bilginin kaç byte olduğunu verir.
ÖRNEK
<%
Response.write Request.TotalBytes
%>
Sertifika, HTTP bağlantısında "Ben filancayım!" diyen istemcinin, gerçekten filanca olup olmadığını gösterir. Bir yazılımdan ibaret olan sertifikaları yetkili bir kurum veya şirket verir; bir seri numarası olur. Şifreleme teknikleri gelişmiş olduğu için taklit edilmesi zordur. Sertifika uygulaması için Web Server'ın Secure Socket Layers denen güvenli HTTP protokolünü kullanması gerekir. Bu durumda Server'ın URL'i, http:// diye değil https:// diye yazılır. ASP açısından sertifika ile ilgili her türlü bilgi ClientCertificate kolleksiyonunda durur. Sözgelimi, bir ziyaretçinin gerçekten sitenize girmeye yetkili olup olmadığını anlamak için: <%SertifikaNo = Request.ClientCertificate(SerialNumber) %> gibi bir kodla istemcinin Sertifika seri numarasını SertifikaNo değişkenine atayabilir ve daha sonra bu değişkenin değerini elinizdeki bir liste ile karşılaştırabilirsiniz.
ÖRNEK
<HTML><HEAD></HEAD><BODY>
Bu sertifikanın geçerliliği <%= Request.ClientCertificate("ValidFrom") %>
tarihinden <%= Request.ClientCertificate("ValidUntil") %> tarihine kadardır.
</BODY></HTML>
Ziyaretçi bir sayfadan diğerine geçerken Server ile ilişkisini kaybedebilir. Bu ilişkinin sürekliliğini sağlamak için ziyaretçiyi işaretlemek gerekir; bu işareti de Cookie sağlar. Cookie'ler ASP için iki ayrı grup Cookie nesnesi oluştururlar: verilenler, ve hakkında bilgi alınan varolan Cookie'ler. Birinci grup Request (talep) nesneleri, ikinci grup ise Response (karşılık) nesneleri içinde ele alınabilir.
ÖRNEK
<%
'--Bu örnekte kullanıcının bilgisayarında Bp isimli çerez dosyası oluşturur.
Response.Cookies("Bp")("Username") = "Semih"
'--Bu çerez dosyası içerisinde de Username ve Password isimli anahtar alanlar oluşturur.
Response.Cookies("Bp")("Password") = "****"
'--BenimCerez çerezinin içindeki tüm anahtarlar ve değerleri Request yardımıyla ekrana yazdırılıyor.
Response.Write Request.Cookies("Bp")
%>
<'--Aşağıdaki kod kullanıcıda bulunan tüm çerezleri gösterir.>
<%
For Each item In Request.Cookies
Response.Write item & " = " & Request.Cookies(item) & "<br>"
Next
%>
<'--Sonuc>
TITLE=Yazar&AD=Semih
Verileri başka sayfalara aktarabilmek için kullanılan POST tipi formlardaki değişkenleri okuyabilmeyi sağlar.
ÖRNEK
<'--form.asp>
<HTML><HEAD></HEAD>
<BODY>
'--Gönder butonuna basıldığında, bilgilerin gönderileceği asp sayfası action bölümüne yazılır.
<form action="formisle.asp" method="POST">
Name:<input type="Text" name="isim" maxlength="20"><br>
Company:<input type="Text" name="firma" maxlength="20"><br>
<input type="Submit" name="Submit" value="Gönder">
</form>
</BODY>
</HTML>
<'--formisle.asp>
<HTML><HEAD></HEAD>
<BODY>
<% Response.Write Request.Form("isim")%>-
<% Response.Write Request.Form("firma") %> isimli firmada çalışıyor.
</BODY>
</HTML>
Web ziyaretçisinin bilgisayarından kalkıp Server’a gelen herşey, QueryString kolleksiyonunu oluşturur. Bu ziyaretçinin Browser’ın URL adresi hanesine yazdığı bir basit HTML sayfası yolu ve adı olabilir; Linklerle gönderilen veriler; GET tipindeki bir Form’un Gönder düğmesini tıkladığında gelen bilgiler olabilir.
ÖRNEK
GET tipindeki bir Form’un Gönder düğmesini tıkladığında gelen bilgileri QueryString ile almak.
<'--FormGet.asp>
<html><head><title>FormGet.asp</title></head>
<body bgcolor="#FFFFFF">
<Form action = "FormGetRespond.asp" method="get">
Lütfen Adınızı Yazın:<p>
İsim -> <Input NAME="isim" size ="10"><br>
Firma -> <Input NAME="firma" value="PCLIFE" size="10"><br>
<Input type="submit" value="Haydi Gönder!">
<hr></form>
</body></html>
<'--FormGetRespond.asp>
<html><head><title>FormGetRespond.asp</title>
</head><body bgcolor="#FFFFFF">
<%
ism=request.querystring("isim")
frm=request.querystring("firma")
response.write ism & "<br>"
response.write frm & "<br>"
%>
</body></html>
Request nesnesinin bir diğer kolleksiyonu, bizim kendi Web Server'ımızın o anda çalışmakta olan ASP sayfası için oluşturduğu ortamın değişkenleridir. Bunların arasında ziyaretçinin Browser'ına ilişkin bilgiler de vardır. Önce şu kısa ASP sayfasını çalıştırarak kendi Server'ımızın şu andaki değişkenlerini ayrıntılı olarak görelim;
ÖRNEK
<HTML>
<HEAD>
<TITLE>HTTP ServerDegişkenleri Kolleksiyonu</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY BGCOLOR=white>
<CENTER>
<H2>HTTP Server Değişkenleri Kolleksiyonu</H2>
</CENTER>
<TABLE BORDER=1>
<TR><TD><B>Değişkenin adı</B></TD> <TD><B>Değeri</B></TD></TR>
<% For Each key in Request.ServerVariables %>
<TR>
<TD><% = key %></TD>
<TD>
<%If Request.ServerVariables(key) = "" Then
Response.Write " "
Else
Response.Write Request.ServerVariables(key)
End If
Response.Write "</TD>"%>
</TR>
<% Next %>
</TABLE>
<p>
Sizin Host'unuzun adı:<B> <%=Request.ServerVariables("HTTP_HOST")%></B>
</BODY>
</HTML>
<'--Sonuc>
Bu sayfayı çalıştırdığımız zaman görüntülenecek tabloda, Bir HTTP Server'ın SerDeg.asp sayfasını çalıştırdığı anda oluşturduğu ortama şekil veren bütün değişkenleri göreceksiniz.
Bu değişkenleri programlama yoluyla değiştiremeyiz; sadece okuyup, yararlanabiliriz. HTTP Server Değişkenleri Kolleksiyonunun elemanları şöyle sıralanır:
'--HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adlarının önünde "HTTP_" öneki vardır.
ALL_HTTP:
'--HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adları ve değerleri istemci Browser'ın verdiği şekilde gösterilir.
ALL_RAW:
'--Web Server'ın ISAPI.DLL dosyası için varsaydığı kök dizin
APPL_MD_PATH:
'--Web Server'ın varsaydığı kök dizinin gerçek yolu.
APPL_PHYSICAL_PATH:
'--Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan parola
AUTH_PASSWORD:
'--Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan yetkilendirme yöntemi
AUTH_TYPE:
'--Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanıcı adı
AUTH_USER:
'--Kullanıcı siteye bağlanmak için yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik (ID)
CERT_COOKIE:
'--Sertifikanın varlığını gösteren bit değeri
CERT_FLAGS:
'--Sertifika varsa veren kurum
CERT_ISSUER:
'--Secure Socket Layers kullanılıyorsa, bağlantı için anahtar değeri
CERT_KEYSIZE:
'--Özel anahtar değeri
CERT_SECRETKEYSIZE:
'--Sertifika seri no.
CERT_SERIALNUMBER:
'--Sertifikayı veren merci
CERT_SERVER_ISSUER:
'--Server Sertifikasının "konu" alanı değeri
CERT_SERVER_SUBJECT:
'--İstemci Sertifikasının konu alanı değeri
CERT_SUBJECT:
'--İstemcinin gönderdiği bilgi yumağının boyutu
CONTENT_LENGTH:
'--Ziyaretçiden gelen bilgilerin GET veya POST metoduna göre edindiği tür
CONTENT_TYPE:
'--Web Server'ın ziyaretçi ile etkileşim arayüzünün adı ve sürümü. Genellikle: CGI/1.1
GATEWAY_INTERFACE:
'--Ziyaretçi ile bağlantı güvenli ise ON, değilse OFF
HTTPS:
'--Secure Sockets Layer için bağlantı anahtar sayısı
HTTPS_KEYSIZE:
'--Özel Server sertifikasının gizli anahtar sayısı
HTTPS_SECRETKEYSIZE:
'--Özel Server sertifikasının veren merci
HTTPS_SERVER_ISSUER:
'--Özel Server sertifikasının konusu
HTTPS_SERVER_SUBJECT:
'--Web Server'ın aynı anda kaç kere çalışmakta olduğu
INSTANCE_ID:
'--Şu anda çalışmakta olan Web Server'ın Meta yolu
INSTANCE_META_PATH:
'--İstemcinin IP numarası
LOCAL_ADDR:
'--İstemci Windows NT sisteminde ise oturum açma adı
LOGON_USER:
'--Çalışmakta olan ASP'nin göreli yolu ve adı
PATH_INFO:
'--Çalışmakta olan ASP'nin gerçek yolu ve adı
PATH_TRANSLATED:
'--İstemcinin gönderdiği bilgi kümesi
QUERY_STRING:
'--İstemcinin Host'unun (ISS'inin) IP'si
REMOTE_ADDR:
'--İstemcinin Host'unun (ISS'inin) adı
REMOTE_HOST:
'--İstemcinin gerçek adı
REMOTE_USER:
'--İstemciden bilgi isteme yöntemi (GET veya POST)
REQUEST_METHOD:
'--Çalışmakta olan ASP'nin adı
SCRIPT_NAME:
'--Sunucu'nun adı
SERVER_NAME:
'--Sunucuya bağlantının geldiği TCP kapı numarası
SERVER_PORT:
'--TCP kapısı güvenli ise 1, değilse 0
SERVER_PORT_SECURE:
'--Server'ın çalıştırdığı HTTP'nin sürümü
SERVER_PROTOCOL:
'--Server programının adı ve sürümü
SERVER_SOFTWARE:
'--Şu anda geçerli URL
URL:
POST deyimi ile kullanıcıda servere gönderilen data'ları okur.
ÖRNEK
<%
Dim ByteCount, BinRead
ByteCount = Request.TotalBytes
BinRead = Request.BinaryRead(ByteCount)
%>
Server’dan kullanıcının tarayıcısına giden herşey karşılıktır. Response nesnesinin ASP sayfasının çıktı kontrolünü sağlayan bu metodlarını aşağıdaki eğlenceli Script’le sınayabilirsiniz (ASP ile eğlence de bundan daha fazla olamaz!). Burada Browser’a gitmesi ümidiyle üç cümle var. Programı çalıştırın ve bakalım hangisi ekranda kalacak? Bu kadar eğlendiğinize göre şu soruyu da yanıtlayabilirsiniz: Neden?Bu 1 Numaralı mesajı mı Browser’a gidecek?Bu 2 numaralı mesaj mı Browser'a gidecek? Bu 3 numaralı mesaj mı Browser’a gidecek?
True (doğru) olarak ayarlandığında ziyaretçiye gönderilecek sayfanın bütün unsurları bir tampon bölgede toplanır, Script’in çalışması bitinceye kadar beklenir ve HTML sayfa toptan gönderilir. Kimi zaman ASP kodumuz sonuna kadar çalıştığında ziyaretçiyi başka bir sayfaya ve siteye yönlendirebilir. Kullanıcıya cookie gönderildiğinde. İşte bu gibi sebeplerle, özellikle çok işlem gerektiren ASP sayfalarının baş tarafına bunu sağlayan kodu koymakta yarar olabilir
ÖRNEK
%>
Response.Buffer = TRUE
<%
Kullanıcı tersine bir ayar yapmadıysa, Browser genellikle görüntülediği sayfaları Geçici Internet Dosyaları dizinine (cache) kaydeder ve tekrar aynı sayfayı görüntülemek istediğinizde sayfayı Internet’ten edinmek yerine kendi sabit diskinden alır. Oysa özellikle haber gibi süreli bilgilerin sunulduğu Web sitelerinde bu sitenin itibarını sarsar. ASP tekniğiyle bunu önleyebiliriz. ASP sayfamızda bu sayfanın gözgelimi 60 dakikadan fazla cache dizinde tutulmamasını sağlayacak Expires metodunu kullanabiliriz:
ÖRNEK
<%
'--Burada yazdığımız rakamı değiştirerek, sayfanın cache’de tutulacağı dakikayı değiştirebiliriz.
Response.Expires = 60
%>
<%
'--Sayfanın hiç saklanmamasını sağlar.
Response.Expires =0
%>
ExpiresAbsolute'in response.Expires'ten tek farkı, orada değer olarak süre verilirken, burada tarih verilir.
ÖRNEK
'--Sayfamızın her gün yenilendiğini düşünürsek bu kod ile ziyaretçilerimizin her gün sayfamızı, Browser cashe'inden silip yenisini yüklemesini sağlarız.
<%Response.ExprisesAbsolute=date()%>
'--Şifre korumalı bir sayfamızın, işi biter bitmez Browser yardımcı belleğinden silinmesi için aşağıdaki kod sayfamızın başına eklenebilir.
<%Response.ExprisesAbsolute=now()-1%>
Eğer sayfa tamamen kullanıcı tarafına aktarıldı ise
True değeri geri döndürülür.
Hayır sayfa
Response.End ile kesildi ise
False değeri geri döndürülür.
Dosyaların yüklenip yüklenememesi yönünden Server'ın durumunu string bilgi olarak geri döndürür.
ÖRNEK
<%
'--Sayfa problemsiz yüklendiyse 200 OK, Sayfa yok ise 404 File Not Found gibi mesajlar görüntülenir.
response.write response.status
%>
Cookies(Kurabiye-çerez), genellikle istemcinin işaretlenmesinde kullanılır.
HTTP protokolü ile istemciye sınırlı ölçüde veri yollayıp özel bir dizine bu verileri kaydetme ve daha sonra aynı istemcinin bu verisine bakılarak anlaşılması şeklinde işler. Cookies’e Response ve Request nesnelerinin her ikisi
ile de erişilebilir. Ancak Request ile sadece okuma düzeyinde bir erişim sağlanırken Response ile de yazma düzeyinde bir erişim sağlanır.
Cooky’nin oluşturulması:
Response.Cookies(“kurabiyem”) = “Şekerli Kurabiye”
İle istemcinin bilgisayarına “kurabiyem=Şekerli Kurabiye” değişken-değer çifti yazdırılır. Ancak bir son geçerlilik değeri girmezsek, bu değer sadece oturum(session) nesnesinin ömrü kadardır. Oturumunuz bittiğinde bu değerler de
silinir.
Response.cookies(“kurabiyem”).Expires = #31/12/2000
ile de 2000 yılı ile birlikte silinecek bir Kurabiyeyi istemciye göndeririz. Ancak gönderdiğimiz bu değişken-değer çiftine herkes(örneğin bu kurabiye sizin makinenize www.pclife.com.tr adresinden yollandı ise www.zekam.net
adresinde de erişilebilir.) erişebileceğinden
response.cookies(“kurabiyem”).domain = “/pclife.com.tr/”
response.cookies(“kurabiyem”).path = “/aspkosesi/”
response.cookies(“kurabiyem”).secure= True
kod parçacığı ile sadece PCLIFE tarafından görülebilecek şekle getirebiliriz.
Buffer metodu ile Script’in sonunu beklerken geçici bir alanda tutulmakta olan HTML, Clear metodu ile temizlenir, yok edilir. Flush metodunda tampondaki HTML Browser’a gönderilir; ancak Clear metodu tampon bölgedeki herşeyi yok eder. Böyle “tehlikeli” bir metod neden vardır, ve nerede kullanılabilir? Bir çok yerde: ziyaretçinin sözgelimi elektronik alışveriş sitemizde alışverişten vazgeçtiğini belirtmesi üzerine tampon bölgede tutmakta olduğumuz ve alınan mallar listesini içeren HTML’i bu yöntemle temizleriz:
Response nesnesinin o anda icra edilmekte olan Script’i durdurarak, o ana kadar ne elde edilmişse hepsini Browser’a göndermesini sağlayan metodu olan End, aynı zamanda Buffer metoduyla tutulan HTML’in de gönderilmesine yol açar. Bu metoddan sonraki HTML veya ASP kodları icra edilmez:
Buffer metodu sayfanın tümünün Script’in icrası bitmeden gönderilmesini önlerken, Flush bunun tam tersini yapar. ASP, Response nesnesinin Flush metodu kullandığımızı gördüğü anda, o ana kadar icra edilmiş kodun sonucu olan HTML’i Browser’a gönderir:
Bu komut sayesinde kullanıcıyı başka bir sayfa veya siteye yönlendirme işlemi yapılabiliyor.
ÖRNEK
<% @LANGUAGE=VBscript %>
<%
Response.Expires = 0
Response.Redirect("www.pclife.com.tr")
%>
<HTML><HEAD><TITLE>ASP ILE YONLENDİRME</TITLE></HEAD>
<BODY>
Bu sayfada yazılı olanları okumanız mümkün olmayacak
çünkü bu sayfa sizi PC LIFE’ın sitesine gönderecek..
</BODY></HTML>
İstenilen bilginin kullanıcının tarayıcısında görüntülenmesini sağlar. Kaynak kod olarak kullanıcıya gönderileceğinden HTML kodlar tarayıcıda işletilerek gösterilir, ekranda gözükmez.
ÖRNEK
Merhaba Dünya
<%
Response.Write "<b>Merhaba Dünya</b>"
%>
Bir Web programınıza aynı anda kaç kişi ulaşırsa (yani sayfalarınızı kaç kişi talep ederse), o kadar Session nesnesi oluşur;
ÖRNEK
<%
response.write "Yazı Tura!<br>"
randomize
resgelenum=int(rnd*2)+1
IF rasgelenum=1 THEN
session("yazi")=session("yazi")+1
ELSE
session("tura")=session("tura")+1
END IF
response.write "Yazı= " & session("yazi") & "<br>"
response.write "Tura= " & session("tura") & "<br>"
%>
Veritabanından birşeyler yazdırmaya kalkıştığınızda, Türkçe karakter problemiyle karşılaştığınızda size büyük fayda sağlayacak bir komut.
ÖRNEK
<%
'--Dil ayarlaması Türkçe olarak belirlenir.
Session.Codepage=1254
%>
Kullanıcı siteye bağlandığı zaman Web Server bu kullanıcıya bir oturum numarası verir. Her yeni oturumda bu numara sürekli değişir. SessionID metodu ise bu numarayı geri döndürür.
ÖRNEK
<%
Response.Write "Sizin Oturum ID’niz " & Session.SessionID
%>
<'--Sonuc>
Sizin Oturum ID’niz 214088007
Kullanıcı timeout ile belirtilen süre içerisinde site’de herhangi bir işlem yapmadığı zaman server tarafından oturum otomatik olarak kesilir. Bu timeot süresi için varsayılan değer 20 dakikadır.
ÖRNEK
<%
'--35 dakika içerisinde hiç bir hareket olmaz ise oturum kapatılır.
Session.Timeout = 35
%>
Session ile tanımlanmış tüm değişkenlerin içeriğini üzerinde tutar.
ÖRNEK
<%
Session("Yazar") = "İbrahim Çubukçu"
Set Session("Nesne1") = Server.CreateObject("ADODB.Connection")
For Each Item in Session.Contents
If IsObject( Session.Contents(Item)) Then
Response.Write Item & " objedir.<BR>"
Else
Response.Write Item & "=" & Session.Contents(Item) & "<BR>"
End If
Next
%>
StaticObjects Session ile Static yani durgun, oturum boyunca değeri değiştirilemeyen nesneler tanımlamak için kullanılır. Bu static nesneler "Global.asa" isimli bir dosyada tutuluyor.
ÖRNEK
<'--Global.asa>
<OBJECT RUNAT=Server SCOPE=Session ID=BenimInfo PROGID="MSWC.MyInfo">
</OBJECT>
<OBJECT RUNAT=Server SCOPE=Session ID=BenimConnection PROGID="ADODB.Connection">
</OBJECT>
<OBJECT RUNAT=Server SCOPE=Session ID=BenimADRot PROGID="MSWC.ADRotator">
</OBJECT>
'--Yukarıda Server tarafında BenimInfo, BenimConnection, BenimADRot isimli static nesneler tanımlanmıştır.
<'--Static.asp>
<%
'--Session ile tanımlanmış tüm static objeler for döngüsüne sokulur.
For Each anahtar In Session.StaticObjects
'--Tarayıcıya objenin adını yazar.
Response.Write anahtar & "<BR>"
'--for deyimine gönderir.
Next
%>
<'--Sonuc:>
BenimInfo
BenimConnection
BenimADRot
"Global.asa" dosyasının içerisinde bulunur. Kullanıcı siteye bağlandığı anda çalıştırılacak kod bu olay içerisine yazılır.
ÖRNEK
<'--Bu örnek sitenize toplam kaç kişi girdiğini ve o anda kaç kişinin sitenize bağlı olduğunu hesaplar.>
<'--Global.asa>
'--yazılan script'in VBscript olduğu ve server tarafında çalışacağı bildirilir.
<script Language="VBScript" RUNAT=Server>
Sub Application_OnEnd()
End Sub
Sub Application_OnStart()
Application("OturumSayisi") = 0
'--Site ilk giriş yapıldığında OturumSayisi ve ZiyaretçiSayisi değişkenleri sıfırlanır.
Application("ZiyaretciSayisi") = 0
'--Ziyaretçi 10 dakika içerisinde yeni bir tercih yapmaz ise Session yani oturum nesnesi server tarafından kapatılır.
Session.Timeout = 10
End Sub
Sub Session_OnEnd()
'--Oturum kapatıldığında oturumsayisi bir azaltılır.
Application("OturumSayisi ") = Application("OturumSayisi ") - 1
End Sub
Sub Session_OnStart()
'--Siteye bağlanıldığında yani yeni bir oturum yapıldığında OturumSayisi bir artırılır.
Application("OturumSayisi ") = Application("OturumSayisi ") + 1
'--Siteye bağlanıldığında yani yeni bir oturum yapıldığında ZiyaretciSayisi bir artırılır.
Application("ZiyaretciSayisi ") = Application("ZiyaretciSayisi ") + 1
End Sub
</script>
<'--Olay.asp>
<%
Response.Write "Şu an siteyi " & Application("OturumSayisi ") & " kişi ziyaret ediyor. Site şu ana kadar toplam " & Application("ZiyaretciSayisi ") & " kez ziyaret edildi."
%>
<'--Sonuc>
Şu an siteyi 1 kişi ziyaret ediyor. Site şu ana kadar toplam 1 kez ziyaret edildi.
"Global.asa" dosyasının içerisinde bulunur. Kullanıcı site ile olan bağlantısını kestiği anda çalıştırılacak kod bu olay içerisine yazılır.
ÖRNEK
<'--Bu örnek sitenize toplam kaç kişi girdiğini ve o anda kaç kişinin sitenize bağlı olduğunu hesaplar.>
<'--Global.asa>
'--yazılan script'in VBscript olduğu ve server tarafında çalışacağı bildirilir.
<script Language="VBScript" RUNAT=Server>
Sub Application_OnEnd()
End Sub
Sub Application_OnStart()
Application("OturumSayisi") = 0
'--Site ilk giriş yapıldığında OturumSayisi ve ZiyaretçiSayisi değişkenleri sıfırlanır.
Application("ZiyaretciSayisi") = 0
'--Ziyaretçi 10 dakika içerisinde yeni bir tercih yapmaz ise Session yani oturum nesnesi server tarafından kapatılır.
Session.Timeout = 10
End Sub
Sub Session_OnEnd()
'--Oturum kapatıldığında oturumsayisi bir azaltılır.
Application("OturumSayisi ") = Application("OturumSayisi ") - 1
End Sub
Sub Session_OnStart()
'--Siteye bağlanıldığında yani yeni bir oturum yapıldığında OturumSayisi bir artırılır.
Application("OturumSayisi ") = Application("OturumSayisi ") + 1
'--Siteye bağlanıldığında yani yeni bir oturum yapıldığında ZiyaretciSayisi bir artırılır.
Application("ZiyaretciSayisi ") = Application("ZiyaretciSayisi ") + 1
End Sub
</script>
<'--Olay.asp>
<%
Response.Write "Şu an siteyi " & Application("OturumSayisi ") & " kişi ziyaret ediyor. Site şu ana kadar toplam " & Application("ZiyaretciSayisi ") & " kez ziyaret edildi."
%>
<'--Sonuc>
Şu an siteyi 1 kişi ziyaret ediyor. Site şu ana kadar toplam 1 kez ziyaret edildi.
Abandon, istenildiğinde kullanıcının oturumunu kesmek için kullanılır.
ÖRNEK
<'--Abandon1.asp>
<%
Response.Write "Sizin Oturum ID’niz " & Session.SessionID
Session("Yazar") = "İbrahim Çubukçu"
Session.Abandon
Response.Write " Yazar Adı: " & Session("Yazar")
%>
<'--abandon2.asp>
<%
Response.Write " Sizin Oturum ID’niz " & Session.SessionID
%>
<'--Sonuc>
<'--Abandon1.asp>
Sizin Oturum ID’niz 214088007 Yazar Adı: İbrahim Çubukçu
<'--Abandon2.asp>
Sizin Oturum ID’niz 214088013
Session ile tanımlanmış değişkenleri silmek için kullanılır.
ÖRNEK
<%
Session("yazar") = "Application Maker"
Session("yayintarihi") = "14/7/2000"
Set Session("Nesne1") = Server.CreateObject("ADODB.Connection")
Session.Contents.Remove(1)
Session.Contents.Remove("yayintarihi")
For Each Item in Application.Contents
If IsObject(Session.Contents(Item)) Then
Response.Write Item & " objedir.<BR>"
Else
Response.Write Item & "=" &Session.Contents(Item) & "<BR>"
End If
Next
%>
Görüldüğü üzere session ile tanımlanmış yazar değişkeni silindiği için sonuç ekranında gözükmedi.
<'--Sonuc:>
Nesne1 objedir.
Session ile tanımlanmış tüm değişkenleri siler.
ÖRNEK
<%
Session.Contents.RemoveAll( )
%>