14
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 almakta kullanılır. Bünyesinde beş adet ana
fonksiyon bulundurmaktadır. Bunlar;
1. Cookie
2. ServerVariables
3. Form
4. QueryString
5. TotalBytes
Veri Transferi
İstemci tarafında, request nesnesine bilgi depolanır ve sunucuya HTTP belge isteğinin
bir parçası olarak gönderilir. Sunucu bu bilgiyi dekod eder ve ASP boyunca
kullanılabilir hale getirir. Sunucuya bilgi göndermenin iki yöntemi vardır; birincisi
sayfadaki <form> kısmını kullanmak ve ikinci olarak da URLnin 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:
<%
is = request.querystring(veri) im
%>
Örnek 102 : QueryString ile Veri Alımı.
Şeklinde alabilmekte ve asp içerisinde kullanabilmekteyiz. Bu kod içinde isim
değişkenine URL sonuna ek veri larak gönderilen veri datasını verdik. Nesne
metodunun isminde de anlaşılacağı gibi querystring yani sorgu cümleciği şeklinde bir
veri transferi yapılmıştır. Bu data url sonunda şu şekilde gözükmektedir.
Test.asp?veri="A.Güler"
Yukarıda ki örnekdende görüleceği gibi "A.Güler" verimizi test.asp sayfasına URL
sonuna eklenmiş olarak gönderdik. Ve bunu yaparken ara değişken olarak veriyi
kullandık.
Bu veri transferini yapmanın bir diğer yolu da 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 kullanabilmektedir.
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)
%>
Örnek 103 : Form ile Veri Alımı.
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 (bu bilgi sunucuya gönderilen URL isteğinin
içerisinde gömülü olarak, başlık olarak gönderilmiştir) yani;
Test.asp
Şeklinde bir URL görmemizdir. Bu özellik sayesinde hem URL satırını gereksiz
doldurmamış hem de verilerimize gizlilik kazandırmış olmaktayız. (Not: bu veri transferi
tipini sadece form kullanarak veri gönderdiğimiz için kullanabilmekteyiz.)
Bir request nesnesini hiçbir metod kullanmadan çağırmamız halinde; yani
Isim = request(veri)
Şeklinde bir kullanım olduğu zaman ASP bu nesnenin metodlarını bir sıra içerisinde
dener. Bu sıra
-QueryString
-Form
-Cookie
-ServerVariables
şeklindedir. Bu şekilde kullanmanız size kodlamada zaman ve hız kazandırabilir.
Fakat sistem kaynaklarından kullanarak birkaç denemede veriyi alacağı için performansta
bir düşme yapabilecektir.
Bir formdan veri isteğinde bulunurken dikkat etmeniz gereken bir diğer nokta da
veriyi alacağınız HTML elemanının tipidir. Şimdiye kadar anlatılan veri alımı sadece
normal textbox için geçerli idi fakat diğer öğeler için gelen veriler farklı olacaktır.
Bir formdan gönderilen verinin hepsini teker teker aldırmaktansa bir döngü
içerisinde bu işlemi kolayca yapabiliriz. Bu döngü aşağıdaki gibi olacaktır.
<%
For Each objitem in Request.Form
İf request.form(objitem).count > 0 then
For intLoop = 1 to Request.Form(objitem).count
Objitem = request.form(objitem)
End if
Next
%>
Örnek 104 : Formdaki Tüm Veriyi Alma.
Yukarıdaki örnekte bir önceki formdan gönderilen değişkenlerin değerleri kendi
isminde bir değişkene atanmış oldu. Bu şekilde bir kullanımla onlarca satır kod
yazmaktansa tüm form elemanlarını basitçe alabilmektesiniz.
Server Variables
Request nesnesinin sağladığı bir diğer özellik de sunucudeğişkenleri dir. 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şkenleri 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 alacağı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)
%>
Örnek 105 : ServerVariables Kullanımı.
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ği kullandık.
İstek metodu serverdan alacağımız değişkenin tanımıdır. Bu metodları ise aşağıdaki gibi sıralayabiliriz

Bu istek metotlarından bir kaç tanesini örnekle açıklamak gerekirse.
<%
IP = Request. servervariables(REMOTE_ADDR)
%>
Örnek 106 : Kullanıcı IP Adresinin Öğrenilmesi.
Bu programcık çalıştıktan 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)
%>
Örnek 107 : Script Adının Öğrenilmesi.
Bu programcığın çıktısı olarak SN değişkenimize o an çalışmakta olan scriptin adı
script _name_test.asp şeklindedir.
<%
LM = Request. servervariables(LAST_MODIFIED)
%>
Örnek 108 : Son Düzenlenme Tarihinin Öğrenilmesi.
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)
%>
Örnek 109 : İstek Metodunun Öğrenilmesi.
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.
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 işlem için Cookieler kullanılmaya başladı. Böylece asp programları da istemci
tarafında veri kaydı yapabilecek ve bunu istediği zaman kullanabilecektir.
Ön bir bilgi verecek olursak şö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 yıllarca kalabilirler. Kalıcı
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 ileri ki bölümlerde ayrıntılı açıklanacaktır). Response
nesnesi ile Cookie kaydı şu şekilde yapılır:
<%
Response.Cookies(degisken) = deger
%>
Örnek 110 : Çerezlere Değer Atamak.
Bu şekilde degisken isimli cookiemize bir değer atamış olduk.
Kaydedilmiş bir cookieyi asp programcığı ile alıp bir değişkene atamak için ise,
<%
deger = Request.Cookies(degisken)
%>
Örnek 111 : Çerezden Değer Okumak.
Görüldüğü üzere request nesnesini kullanarak değer isimli cookiemizi bir değişkene
atadık. Ve bu şekilde 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)
%>
Örnek 112 : Çereze Alt değer vermek.
Yukarıdaki örneğimizde değer kategorisine ait alt degeri değişkenimize aktardık. Bu
şekilde kullanılan Cookieler için alt anahtarlarını olduğunu belirtmek gerekmektedir.
Bunun için ise :
<%
degisken = Request.Cookies(deger).HasKey
%>
Örnek 113 : Çerezlerde Alt değer Kullanılacağını Belirtmek.
şeklinde bir tanımlama gerekmektedir.