Server Variables
Server Variables işlemi nasıl yapılır:
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 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”)%> |
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ğini kullandık.
İstek metodu serverdan alacağı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 tarihiLOGON_USER Server’da giriş yapmış NT kullanıcısı hakkında detayPATH_INFO İstemci tarafından sağlanan ek yol bilgisiPATH_TRANSLATED Fiziksel dizin adına çevrilmiş sanal yolQUERY_STRING URL dizisi sonundaki soru işareti ile (?) ayrılmış bölümden sonraki bilgi.REMOTE_ADDR İstemcinin IP adresiREMOTE_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ırSERVER_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 metotlarından bir kaç tanesini örnekle açıklamak gerekirse.
| <% IP = Request. servervariables(“REMOTE_ADDR”)%> |
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”)%> |
Script Adının Öğrenilmesi.
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”)%> |
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”)%> |
İ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 (eski konularımızda form ile veri gönderme konusunda bilgi verilmişti).
Veri Transferi İşlemi.
Arkadaşlar veri transferi işlemi nasıl yapılır konusuna gelinirse:
İ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 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. Nesne metodunun isminden 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=”N.Ceylan”
Yukarıda ki örnekdende görüleceği gibi “N.Ceylan” 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 şekilde form olmayan scriptlerimizde de sayfalar arası veri transferi yapmamız olağan hale gelmiştir.)
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 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 (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 zaman 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 ifNext%> |
Formdaki Tüm Veriyi Alma.Yukarıdaki örnekte bir önceki formdan gönderilen değiskenlerin değerleri kendi isminde bir değişkene atanmiş oldu. Bu sekilde bir kullanımla onlarca satır kod yazmaktansa tüm form elemanlarını basitce alabilmektesiniz.
Mantık Kontrolleri Nedir?
Mantık Kontrolleri Nedir?
İ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
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 fonksiyonların varlığından söz etmiştik bunlardan biriside o an ki saati ve tarihi bildiren now() fonksiyonudur. (hour() fonksiyonu ise içindeki tarih ve saatin yalnızca saat basamağını gösteren bir fonksiyondur) fonksiyondan 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) ziyaretçinin 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
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:select-case yapısı:
| <% durum seç Durum1 : yapılacak işler Durum2 : yapılacak işler Durum3 : 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.Örnek:
| <% 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 fonksiyonlarından Hour(Now)’ı veriyoruz. Bu fonksiyonlardan, 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
Dosya Özelliği Sabitleri
Dosya Özelliği Sabitleri
| Sabit | Değer | Açıklama |
|
|
0 | Normal dosya |
| ReadOnly | 1 | Salt okunur |
| Hidden | 2 | Gizli |
| System | 4 | Sistem dosyası |
| Directory | 16 | Dizin |
| Archive | 32 | Arşiv |
| Alias | 1024 | Link veya kısayol |
| Compressed | 2048 | Sıkıştırılmış dosya |
Sürücü Tipi Sabitleri
Sürücü tipi sabitleri.
| Sabit | Değer | Açıklama |
| Unknown | 0 | Tanımlanmamış sürücü |
| Removable | 1 | Tüm taşınabilir medya aygıtları. Içerisinde disket sürücüleri de vardır |
| Fixed | 2 | Sabit diskler |
| Remote | 3 | Network sürücüleri |
| CDROM | 4 | CdRom sürücüsü |
| RamDisk | 5 | RAM üzerinde yer alan sanal disk alanı |
Değişken Tipi Sabitleri
Değişken Tipi Sabitleri
| Sabit | Değer | Açıklama |
| vbEmpty | 0 | Tanımsız data |
| vbNull | 1 | Geçerli data içermeyen |
| vbInteger | 2 | Integer |
| vbLong | 3 | Long |
| vbSingle | 4 | Single |
| vbCurrency | 6 | Currency |
| vbDate | 7 | Date |
| vbString | 8 | String |
| vbObject | 9 | Object |
| vbError | 10 | Error |
| vbBoolean | 11 | Boolean |
| vbVariant | 12 | Variant |
| vbDataObject | 13 | Data object |
| vbDecimal | 14 | Decimal |
| vbByte | 15 | Byte |
| vbArray | 16 | Array |
Karşılaştırma Sabitleri
Karşılaştırma Sabitleri
| Sabit | Değer | Açıklama |
| VbBinaryCompare | 0 | Binary Karşılaştırma |
| VBTextCompare | 1 | Metin Karşılaştırma |
| VBDataBaseCompare | 2 | Veri Tabanı Karşılaştırması |
Durum Sabitleri
Durum Sabitleri
| Sabit | Değer | Açıklama |
| vbTrue | -1 | Doğru |
| vbFalse | 0 | Yanlış |
