Sunucu (Server) Nesneleri

MidNighT

Kıdemli Üye
Web sayfalarını sanki bir bilgisayar programının çeşitli pencereleri, diyalog kutuları, mesaj kutuları,
girdi kutuları gibi, birarada bir “uygulama programı” olarak bağlayabilmesidir. Başka bir deyişle
bize, ziyaretçinin sitemize bağlandığı ve ana sayfamızı açtığı andan itibaren sitemizin bir program
bütünlüğünde çalışmasını sağlayacak araçlar gerekir. Bunu ancak Web Server’ın yardımıyla
yapabiliriz.

ASP sayfalarımızda kullanacağımız ikinci grup nesne, Sunucu Nesneleri’dir. Bu grupta tabiî önce
Sunucu’nun kendisi yer alır; sonra ziyaretçi ile kurduğumuz ilişki gelir. Ziyaretçi ile ilişkimizi iki
yönlü trafiğe benzetebilirsiniz: ondan bize gelen talepler, bizim ona karşılıklarımız.

Ziyaretçiden bize gelen trafiğe neden “Talep” diyoruz? Ziyaretçi, Browser’ının URL hanesine yazdığı
her adresle, veya formlardaki bir düğmeyi veya sayfalarımızdaki herhangi bir köprüyü tıklamakla,
Server’a “Bana şunu göndersene!” demiş olur. Bu taleptir. Ziyaretçi taleplerinin tümü Talep Nesnesi
(Request Object) olarak bir arada ele alınabilir. Server’ın bu taleplere verdiği karşılıklar, yani
ziyaretçinin Browser’ına gönderdiği sayfalar, resimler, sesler, videolar ise karşılıktır ve ASP
açısından Karşılık Nesnesi’ni (Response Object) oluşturur.

Bu bölümde bu nesneleri daha yakından tanıyacağız.

Server Nesnesi

Web Server, ASP için bir nesnedir, ASP’nin bir çok işini bu nesnenin özellikleri ve metodları
halleder. Server nesnesinin bir özelliği (ScriptTimeout) ve dört metodu (CreateObject,
HTMLEncode, URLEncode, MapPath) vardır. Web Server çalıştığı bilgisayarın sizin siteniz adına
yönetiminden sorumludur; dolayısıyla bu kadar az özellik ve metodu var diye bu nesneden çok
yararlanmayacağımızı sanmayın. ActiveX ve COM bileşenlerini çalıştırmak Server’ın görevidir.

ScriptTimeout Özelliği: Diyelim ki bir ASP Script’i ya bizim, ya ziyaretçinin, ya da Server’ın bir
hatası üzünden sonsuz döngüye girdi! Döngünün durması için gerekli şart asla yerine gelmiyor ve
Script bir türlü yapacağı işi yapıp, sonlandırmıyor. Bu durumlarda ziyaretçinin ve tabiî Server’ın
sonsuza kadar beklemesi mümkün değil! Programın bir şekilde durdurulması gerekir. Bunu hemen
hemen bütün Web server programlarının Script Timeout (Script süre sınırı) diyalog kutusuna bir
değer girilerek yapılır. Öreğin MS-Internet Information Server için varsayılan Script Timeout
süresi 90 saniyedir. Yani ISS, herhangi bir Script’in çalışıp-durmasını 90 saniye bekler; bu sürenin
sonunda Script’in çalışması tamamlanmazsa ziyaretçiye arzu ettiği sayfanın veya unsurun
bulunamadığını bildirir. Bu süreyi (Server’ın varsayılan değerinin altında) kısaltmak değilse bile
uzatmak elimizdedir. Bunu ScriptTimeout özelliğini kullanarak yaparız. ASP sayfasının herhangi bir
yerine örneğin şu kodu koymak yeter:

<% Server.ScriptTimeout = 100 %>

Bu örneğe göre Server’ın varsayılan Script Timeout süresi 90 saniye ise 100 saniyeye çıkmış olur.

Böyle bir şeyi neden yapmak isteyebiliriz? Script’iniz çok karmaşık veya başka bir Server’daki
veritabanından veri çekiyor, olabilir. Gerçi bu anlamda 90 saniye bilgisayar milleti için bir asır
anlamına gelir, ama yine de durdurulmasaydı işini başarıyla tamamlayacak bir Script, bu sürenin
kısalığı yüzünden Server tarafından durdurulabilir. ASP sayfalarınız çok karmaşıksa ve sürekli
Timeout hatası veriyorsa, hata aramadan önce bu süreyi uzatabilirsiniz.

CreateObject Metodu: İlk ASP kodunu yazdığımız andan beri bu metodu kullandığımızı
görüyorsunuz. CreateObject (nesne oluştur) olmasa idi, dört mevsim birbirini izleyebilir, Dünya
Güneş’in etrafında dönebilir miydi? Hiç sanmam. Fakat lütfen o CreateObject ile bu CreateObject’i
birbirine karıştırmayın. Yukarıda kullandıklarımız Scripting nesnesinin bir metodu idi; bu Server
nesnesine aittir. Diyelim ki sayfanızda reklam amaçlı banner grafiklerini belirli zaman aralığı ile
veya ziyaretçiye gönderdiğiniz Cookie (çerez) bilgilerine göre değiştirmek istiyorsunuz. Bunun için
diyelim ki MS-Web Server Programının AdRotator bileşininden yararlanacaksınız; şöyle bir kod
işinizi görebilir:

<% Set Reklam = Server.CreateObject (“MSWS.AdRotator”)%>

<%= Reklam.GetAdvertisement(“/reklamlar/buyukbanka.txt”)%>

Burada GetAdvertisement, Server’ın AdRotator bileşininin bir metodudur. Server’ın CreateObject
metodundan, veritabanına ulaşırken de yararlanacağız.

MapPath (Yolu belirle) Metodu: Web Server açısından “kök dizin” (root directory) Server’ın
bulunduğu bilgisayarın sabit diskinde, herhangi bir klasör olabilir. Örneğin IIS için bu varsayılan
değer olarak “C:inetbupwwwroot” klasörüdür. Özellikle ASP ile “program niteliğinde siteler”
yapmaya başladığımızda, sitenin ilgili bütün dosyalarının bulunduğu bir dizin için yol belirlemek
isteyebiliriz. Bunu Server nesnesinin MapPath (Yolu belirle) metodu ile yapabiliriz:

WebDizini = Server.MapPath(“/benim_site”)

Bu komutla WebDizini değişkenin değeri muhtemelen şöyle olacaktır:

“C:inetbupwwwrootbenim_site”

Fakat bu metodun sadece böyle duragan biçimde kullanılması gerekmez; bazen sayfalarımızda
ziyaretçi ile etkileşmenin sonucu olarak varsayılan Web dizinimizi değiştirmek isteyebiliriz.
Sözgelimi biri Türkçe, diğeri İngilizce iki sitemiz varsa, ve ana sayfamızda ziyaretçi Türkçe’yi
seçtiyse, o noktadan itibaren Web uygulamamız için Web kök-dizini, “/turkish/” olacak ve mesela
resimlerimiz için verdiğimiz “/resimler/” dizini kök dizinde değil, “/turkish/resimler/” klasöründe
aranacaktır. Web yolunu dinamik olarak, yani ziyaretçinin tercihine bağlı şekilde değiştirebilmek
için, önce ziyaretçiden gelecek bilgileri nasıl kullanacağımıza, yani Request (talep) nesnesine
değinmemiz gerekir.

HTMLEncode, URLEncode: İçinde HTML açısından kod parçası veya özel işaret sayılan karakterler
bulunan metinleri sayfamıza içerik olarak göndereceğimiz zaman Server’ın işaretleri aynen metin gibi
göndermesini sağlamak için, örneğin:

Server.HTMLEncode(“Değisken1 < Değisken2”)

yazarsak, ASP bu metni HTML kodu olarak yorumlamaz, metin olarak algılar.

Internet’te bazen özellikle sayfa adresleri belirtilirken bazı değerlerin “URL Kodu“ dediğimiz
şekilde kodlanmış olarak gönderilmesi gerekir. Bu kodlama türünde boşlukların yerine + işareti
konmuş olması şarttır. Bu tür bilgiler göndereceğimiz zaman:

Server.URLEncode(“kelime 1 kelime2 kelimeme2”)

şeklindeki bir kod Bunu hemen şu şekle sokacaktır:

Not:Alıntıdır
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.