LEN
Bir stringin içeirsinde bulunan karakter sayısının bulunmasına ihtiyaç duyulduğunda Len fonksiyonu kullanılır. Kullanım şekli:
Len (string ) şeklindedir.
Örnek vermek gerekirse:
<%
text="bunun içinde kaç karakter var"
sonuc=Len(text )
response.write sonuc
%>
Yukarıda ki örneği açıklayacak olursak text değişkenine içeriği "bunun içinde kaç karakter var" şeklinde bir değer atanıyor daha sonra len fonksiyonu kullanılarak bulunan değer yani stringin içerisnde yer alan karakter sayısı ki buna boşluklar (space ) de dahil sonuc adlı bir başka değişkene atanıyor en son satırda ise sonuc değişkenin içeriği ekrana yazılıyor.
LEFT AND RIGHT
Left ve Right fonksiyonları bir string içerisinden sağ veya soldan istenilen karakterin kopyalanmasını sağlamak amacı ile kullanılır. Bu string içerisinden seçilmiş bir parçanın kopyalanması gibidir. Aşağıda Left ve Right kullanımlarına ilişkin örnekler verilmiştir.
Kod Alanı: |
<%
test="Buradanekadarçokinsanvarmış"
soldan=Left(test,6 )
sagdan=Right(test,6 )
response.wrirte soldan
response.wrirte sagdan
%> |
|
örneği açıklayalım ilk satırda test adlı değişkene test="Buradanekadarçokinsanvarmış" satıı ile bir atama gerçekleştiriliyor ikinci satırda kullanılan left(test,6 ) komutu ile test stringi içerisinde soldan başlanarak 6 adet karakter kopyalanıyor ve kopyalanan karakter soldan adlı değişkene atanıyor. Bu işlemin sonucunda soldan değişkeninin değeri soldan="burada" oluyor çünkü tüm yazı içerisinde soldan itibaren 6 karakter kopyalayacağımız left(test,6 ) ile belirtmiş oluyoruz. Aynı işelm right fonksiyonu içinde geçerki burada test verisi içinden gene 6 karakter kopyalıyoruz fakat bu işlem string içerisinde sağdan sola doğru yapılan bir haraket ile gerçekleşiyor. Bu işelmin sonucundada elde edilen değer sagdan değişkenine atanıyor. Sonuç itibarı ile sagdan değişkeninin içeriğide sagdan="varmış" oluyor. Son 2 satırda ise elde edilen bu değerler ekrana yazılıyor. (response.write kullanılarak )
MID
Bir string içerisinde belirli bir aralığı kopyalamak istediğimizde kullanabileceğimiz fonksiyon Mid fonksiyonudur. Genel kullanımı:
Mid(String , nereden_baslanacak , kaç_karakter_kopyalanacak ) şeklindedir.
Bir örnek vererek daha iyi açıklamaya çalışalım.
test="Buradanekadarçokinsanvarmış"
sonuc=Mid(test,7,10 )
response.write sonuc
test içersinde yer alan test="Buradanekadarçokinsanvarmış" text içerisinde 7. ci karakterden başlamak üzere toplam 10 karakter kopyalanarak sonuc adlı değişkene atanıyor sonuc değişkenin değeri ise "nekadarçok" şeklinde oluyor ve response.write kullanılarak sonuc ekrana (html data stream içerisine ekleniyor ) yazdırılıyor.
INSTR
Instr fonksiyonu kullanılarak bir string dizisi içerisinde yer alan bir karakterin nerede yer aldığını (kaçıncı karakter olduğunu ) bulmak mümkündür. Aşağıdaki örnek incelenirse Instrt fonksiyonunun kullanımı daha iyi anlaşılabilir.
strtext="HowLong"
karakter_nerede=Instr(strtext,"Long" )
strtext değişkenine "HowLong" değeri atanmış ve instr fonksiyonu kullanılarak bu text içerisinde yer aldı düşünülen "Long" un nerede başladığı bilgisi karakter_nerede adlı değişkene atanmıştır. Burada karakter_nerede değişkeninin değer 4 olacaktır çünkü "Long" strtext içerisinde 4. cü karakterden itibaren başlamaktadır. Eğer aranılan text veya karakter bulunamaz ise Instr fonksiyoınu 0 değerini geri döndürür.
LTRIM, TRIM VE TRIM
Bu üç fonksiyon verilen bir textin sağında, solunda veya hem sağında hem de solunda kalan boşlukların atılmasını sağlamak için kullanılan fonksiyonlardır. Her üç fonksiyonda sadece tek bir parametre alırlar ki buda boşlukların kaldırılmak istenildiği text in tam kendisidir.
Ltrim textin solunda bulunan tüm boşlukları, Rtrim textin sağında bulunan boşlukları Trim ise textin hem sağında hemde solunda bulunan boşlukları çıkarmak için kullanılan bir fonksiyondur.
REPLACE
Gayet faydalı bir fonksiyondur. Uzun bir metin içerisindeki belirlediğiniz ifadeyi başka ifadeyle değiştirmenizi sağlar.
Söz dizimi: REPLACE(string, değişecek_olan, yerine_konulacak, başlangıç_indexi, değişiklik_sayısı, karşılaştırmakodu )
Parametreler:
String: İçinde değişiklik yapacağımız metindir.
Değişecek_olan: Metin içinde değiştirmek istediğimiz alt-dizgi (sub-string ) dir.
Yerine_konulacak: Belirtilen alt-dizginin yerine konulacak ifadedir.
Başlangıç_indexi: Değiştirme işleminin, stringin kaçıncı karakterinden başlayacağıdır.
Varsayılan: 1
Değişiklik_sayısı: Çok açık. -1 yazılırsa bulunan tüm alt-dizgiler değiştirilir.
karşılaştırmakodu: VBTextCompare için 1, VBBinaryCompare için 0 yazılabilir.
Varsayılan 0.
Replace fonksiyonu şu şekilde de işlev yapar. REPLACE(string, değişecek, yerinekonulacak ). Ancak fonksiyonun daha verimli kullanılabilmesi için tüm parametlerinin belirtilmesi gerekir. Örnekleri inceleyin, anlayacaksınız.
Örnek:
Dim mystr
mystr = "Ağır ağır çıkacaksın bu merdivenlerden"
Response.write replace(mystr, "Ağır", "Hızlı", 1, -1, 0 )
sayfaya "Hızlı ağır çıkacaksın bu merdivenlerden" yazar.
Response.write replace(mystr, "Ağır", "Hızlı", 1, -1, 1 )
sayfaya "Hızlı Hızlı çıkacaksın bu merdivenlerden" yazar.
Response.write replace(mystr, "a", "A", 1, -1, 1 )
sayfaya "Ağır Ağır çıkAcAksın bu merdivenlerden" yazar.
Response.write replace(mystr, "a", "A", 1, 2, 1 )
sayfaya "Ağır Ağır çıkacaksın bu merdivenlerden" yazar.
Replace fonksiyonu bir çok yerde yardımımıza yetişir. Örneğin bir formdan alınan içerikte yer alması muhtelemel istenmeyen ifadelerin ayıklanması sağlanabilir. HTML taglerinin kullanılması önlenebilir. Ve daha bir çok yerde REPLACE size büyük fayda sağlayacaktır.
STRING FONKSİYONU
VBScript ten yine evlere şenlik bir fonksiyon. Belirtilen sayıda karakterin tekrarını içeren string oluşturuyor.
Örnek:
Response.write STRING(5, "*" ) sayfaya "*****" yazar
SPLIT FONKSİYONU
Bir metinden belirlenmiş ayraçlar (delimiter ) vasıtasıyla belirtilen sayıda alt-dizgi içeren 0 tabanlı, tek boyutlu dizi üretir.
Sözdizimi: SPLIT(ifade, ayraç, sayi, karşılaştırmakodu ).
(Sayi yerine -1 yazılırsa tüm belirlenen tüm alt-dizgiler işleme tabi tutulur. )
Ne iş yaptığını anlamak için örnek yapalım.
Örnek:
Kod Alanı: |
Dim mystr, dizi(3 )
mystr = "EvcilASP|Türkiye nin|ASP Bostanı"
dizi = SPLIT(mystr, "|", -1, 1 )
Reponse.Write dizi(0 ) sayfaya "EvcilASP" yazar
Reponse.Write dizi(1 ) sayfaya "Türkiye nin" yazar
Reponse.Write dizi(2 ) sayfaya "ASP Bostanı" yazar |
|
JOIN FONKSİYONU
Split fonksiyonuna göre zır işlemi yapar. Bir dizinin elemanlarını belirtilen ayraç ile birleştirip bir string üretir.
Sözdizimi: JOIN(ifade, ayraç )
Örnek:
Kod Alanı: |
Dim dizi(3 ), str, str2
dizi(0 ) = "Ben"
dizi(1 ) = "Sekizinci"
dizi(2 ) = "Henri"
str = JOIN(mystr, "|" )
str2 = JOIN(mystr, " " )
Reponse.Write str sayfaya "Ben|Sekizinci|Henri" yazar
Reponse.Write str2 sayfaya "Ben Sekizinci Henri" yazar |
|
MANTIKSAL İFADELER
İf - Then
VBScriptin vereceğiniz bir durumun bulunup bulunmadığını sınamasını sağlar. Genel yazım kuralı şöyledir:
If şart Then
[şart doğru ise yapılacak işler]
Else
[şart doğru değilse yapılacak işler]
End If
İf...then yapısının en son ve geniş kullanımı ise Elseif yapısı ile birden fazla şart içeren durumlardır.
Kod Alanı: |
<%
if method= "Faks" then
Response.Write "Lütfen Faks numaranızı giriniz "
Elseif method= "Email" then
Response.Write "Lütfen E-mail adresinizi giriniz"
Elseif method= "Telefon" then
Response.Write "Lütfen telefon numaranızı giriniz"
Else
Response.Write "Herhangi bir bilgi iletilmeyecektir"
End if
%> |
|
Select Case
Olasılık sayısı artan daha karmaşık bir yapıda if...then yapısı karmaşık bir çözüm olacaktır. Böyle durumlarda Select...Case yapısı daha uygun bir çözüm olarak kullanılır . Aşağıda verilen örneğe göz atalım:
<%
Select Case Secim
Case "Faks"
Response.Write "Lütfen Faks numaranızı giriniz"
Case "Telefon"
Response.Write "Lütfen telefon numaranızı giriniz"
Case "E-mail"
Response.Write "Lütfen e-mail adresinizi giriniz"
End Select
%>
DÖNGÜLER
For..Next döngüsü
Programın bir işi belirli kere yapmasını istiyorsak, ona yapacağı işi bir sayaç değişkeniyle birlikte, For döngüsüyle bildiririz:
For sayaç = başlangıç To son Step adım
...yapılacak işler...
Next
While...Wend
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 ziyaretçi tarafından belirlenmiş olabilir. Özetle yapılmasını arzu ettiğimiz işin ancak sayaç bir değerden azsa, çoksa veya eşitse yapılmasını, bu durum değişirse durmasını isteyebiliriz. Bunu While (..iken ) komutuyla yapabiliriz. While döngüsünü kullandığımız zaman sayacı bizim arttırmamız gerekir. Sözgelimi, yukarıdaki programın 7 günün tümünü ekrana yazmasını değil de, mesela gün sayısı 5den küçük ise yazmasını istiyor olabiliriz. Bu durumda kodumuzda For.. Next arasında kalan bölümde şu değişikliği yapabiliriz:
Kod Alanı: |
While sayac <= 5
Response.Write Gunler(sayac )
Response.Write "<BR>"
sayac = sayac + 1
wend |
|
Do..Loop
Do (Yap ) komutu ile kuracağımız döngüler iki ayrı türde olabilir: bu döngü ile bir dizi komutu, bir koşul doğru iken veya doğru oluncaya kadar yaptırabiliriz. Bu yöntemlerden her biri iki ayrı şekilde yazılabilir. Bir koşul doğru iken bazı işlerin biteviye yapılmasını istiyorsak, Do While yöntemini kullanırız:
Do While koşul
koşul doğru iken yapılacak işler
Loop
Bu ifade ile VBScript koşul doğru olduğu sürece istediğimiz işi yapacaktır. Buradaki Loop kelimesi, döngünün başa dönmesini sağlar. Bu yöntemden şu şekilde de yararlanabiliriz:
Do
koşul doğru iken yapılacak işler
Loop While koşul
Burada, Loop komutu şartın hâlâ doğru olup olmadığını sınar ve doğru ise verilen işleri yapar; artık değilse bir sonraki satıra geçer. Döngünün bir şart gerçekleşinceye kadar bir işi yapmasını ise Do Until yöntemiyle sağlarız. Bu durumda döngü şöyle yazılır:
Do Until koşul
koşul gerçekleşinceye kadar yapılacak işler
Loop
Bu ifade ile VBScript koşul doğru oluncaya kadar istediğimiz işi yapacaktır. Buradaki Loop kelimesi, döngünün başa dönmesini sağlar. Bu yöntemden şu şekilde de yararlanabiliriz:
Do
koşul gerçekleşinceye kadar yapılacak işler
Loop Until koşul
For Each... Next
For...Next kullanımının özel bir türüdür. Bir dizi veya koleksiyon içerisinde kullanılır. (Koleksiyon nedir ? Daha detaylı olarak anlatılacaktır. ) For döngüsü dizi veya koleksiyon içerisinde kalan eleman sayısı kadar gerçekleştirilir. Aşağıda ki örneği inceleyebilirsiniz.
Kod Alanı: |
<%
Dim eleman
Dim sehirler(2 )
sehirler(0 )="Ankara"
sehirler(1 )="İstanbul"
sehirler(2 )="Ordu"
For Each eleman In sehirler
Response.Write eleman & "<BR>"
Next
%> |
|
Kod Nasıl Çalışır ?
Döngü şehirler dizisi içerisinde yer alan her eleman ( Şehir için, her dizi elemanı ) için tekrarlanır. Eleman (şehir ) sayısı 3 olduğuna göre döngü 3 defa tekrarlanacak ve ekrana dizinin içerisinde yer alan elemanlar yazılacaktır
Döngüyü durdurmak isterseniz
Bir döngüden belirlediğiniz koşul gerçekleşsin-gerçekleşmesin çıkmanız gerekebilir. Bunu bir başka değişkendeki değişiklik zorunlu kılabilir. Bir döngüden çıkmak için Exit (çık ) ifadesini kullanabilirsiniz. Bu ifade, döngünün yaptığı işler arasında, genellikle bir If deyimi ile birlikte yer alır. Örneğin:
Kod Alanı: |
For sayac = 1 to 10
[..bir takım işler yap..]
If Degisken1 > Degisken 2 Then Exit For
[..bir takım işlere devam et..]
Next |
|
SÜREÇLER (PROSEDÜRLER )
VBScriptte programın akış kontrolünde kullanacağınız bir diğer grup araç ise örneğin Javascript veya Perlde fonksiyon dediğimiz gruplandırılmış ve isimlendirilmiş işlem kümeleridir. Bu kümeler programın bir yerinde topluca dururlar ve programın başka bir yerinden isimleriyle çağrılırlar; veya bu kümelere isimleriyle referans yapılır.
VBScriptte bu kümelenmiş kod gruplarına Prosedür (Süreç ) denir. iki türlü olur: fonksiyon (Function ) ve Subroutine (sab-rutin okunur; kısaca Sub diye yazılır ve sab diye okunur ). Bu iki süreç arasındaki başlıca fark, fonksiyondan kendisini çağıran komuta daima bir değer döner; Subdan dönmeyebilir. Sub, yapacağı işi yapar ve programın kontrolünü kendine atıf yapılan noktaya devreder. VBScriptde bir programa farklı yerlerde sık sık aynı işi yaptırıyorsak, bunu bir Sub ile yaptırırız; fakat programımıza bir değer gerekiyorsa, bu değeri bir fonksiyona hesaplattırırız. Her ikisi de kendilerine atıfta bulunan veya kendilerini göreve çağıran satırdan (komuttan, deyimden ) verilebilecek değerleri kabul edebilirler.
Biraz karışık oldu; ama bunu ilerde gerçek ASP uygulamaları yazarken daha iyi anlayacağız. Şimdilik bir iki noktayı öylece öğrenmeye bakalım. Bir fonksiyonun adı, tıpkı bir değişken adı gibi, fonksiyonun ürettiği değeri tutar; ve bu değer kendisini çağıran komuta verilir. Diyelim ki, programımızın çeşitli noktalarında yazı-tura atıp, elde edilecek sonuca göre bir iş yapmak zorundayız. Bu ihtiyacın doğduğu yerde, yazı-tura komutlarını yazabiliriz. Ancak bu ortaya çok uzun bir programın çıkmasına sebep olur. Oysa yazı-tura işlemlerini bir fonksiyonda toplar ve ihtiyaç halinde sadece bu fonksiyonu çağırırsak ve fonksiyon bize o anda yazı mı geldiğini, yoksa tura mı geldiğini bildirirse, işimiz çok kolaylaşmış olur.
Böyle bir fonksiyon, yukarıdaki örnekten hareketle, şöyle olabilir:
Kod Alanı: |
<%
Function YaziTura
Dim ParaAt
Randomize
ParaAt = Int(Rnd * 2 ) + 1
If ParaAt = 1 Then
YaziTura = "Yazı"
Else
YaziTura = "Tura"
End If
End Function
%> |
|
Bu fonksiyonu, ASP programının herhangi bir yerinden, şöyle bir yöntemle çağırabilir; ve vereceği sonucu programın akışına uygun şekilde kullanabilirsiniz:
Kod Alanı: |
<%
NeGeldi = YaziTura
Response.Write NeGeldi
%> |
|
Fonksiyonun sonunda End Function ifadesinin bulunduğuna ve fonksiyonun elde ettiği sonucu kendi adına atadığımıza dikkat edin. DIM ifadesiyle böyle bir değişken tanımlamadığımız halde VBScript, fonksiyonu çağırdığınız anda bunu kendiliğinden yapacaktır.
Aynı işlemi Subroutine (Sub ) olarak yazabiliriz. Fakat bu kez Sub, elde edeceği değeri kendisi kullanacak ve bittiği anda kontrol programa geri dönecektir:
Argümanli;
<%
Sub prosedürün_ismi (arguman1, arguman2, .. , argumanN )
kodlar, kodlar, kodlar...
End Sub
%>
argümansız;
Kod Alanı: |
<%
Sub yildirim_gursesin_anisina( )
Response.write "leylaklar dökülür, güller ağlasın"
End Sub
%> |
|
Fonksiyon adlarının sonuna, bizden beklediği değer varsa onları belirleyen değişken adlarını parantez içinde yazarız. Fonksiyon bizden bir değer beklemiyorsa açılan kapanan (boş ) parantezlere ihtiyaç yoktur. ancak bir çok VBScript programcısı bunu adet edinmiştir. Subların çağrılması, fonksiyondan farklıdır. Subın icra edilmesini istediğiniz noktaya sadece adını yazarız. Sublar işleyebilmek için bizden değer bekliyorsa, bu değerleri Sub adının yanına, parantez içine almadan ve virgülle ayırarak, yazarız. Örneğin, Hesapla isimli ve bizden iki değer bekleyen bir Sub şöyle çağrılır:
Argümanlı sub işletimi
Kod Alanı: |
<%
tercih 1
Call prosedur_ismi ( arguman1, arguman2, .. , argumanN )
tercih 2
prosedur_ismi arguman1, arguman2, .. , argumanN
%> |
|
Argümansız sub işletimi
Kod Alanı: |
<%
başka işler...
Call yildirim_gursesin_anisina( )
veya
yildirim_gursesin_anisina
%> |
|
Bu Sub işini bitirdiği anda programın akışı, Suba atıf yaptığımız noktada devam eder.
EXIT SUB
Son olarak <% exit sub %> deyimini yad ederek bitirelim. Bu deyimi bir sub bloğu içinde kullanırsanız program akışı, bu deyimi görür görmez o sub bloğundan çıkar ve bu sub hangi satırdan çağrılmışsa o satırdan sonraki kodları icra etmeye koyulur. Buna ihtiyacmız olur mu? Evet, olur. Zaten bu deyim, bir şartlı sınama bloğu içinde kullanılır genellikle. Belli bir koşul gerçekleştiğinde veya gerçekleşmediğinde sub içerisinde, diğer deyimlerin işlenmeden çıkılmasını sağlar. Aşağıdaki banal örneğe bakalım:
Kod Alanı: |
<%
pay = 5
payda = 2
Call bol ( pay, payda )
pay = 16
payda = 0
Call bol ( pay, payda )
Sub bol ( x , y )
If y=0 Then
Response.Write x & " " & y & ": müjde! divijın bay ziro.. bumm.."
exit Sub
End If
bolum = x y tam bölme
kalan = x mod y
Response.Write x & " " & y & " bölümü : "
Response.Write "bölüm: " & bolum & " : kalan: " & kalan & "<br>"
End Sub
%> |
|
TARİH VE SAAT
Belki de Webin zamana çok bağlı oluşu dolayısıyla, Visual Basicin hemen hemen bütün zaman-tarih fonksiyonları VBScriptte de kullanılır.
Date: Bugün tarihini verir. (25.03.2000 gibi )
Time: O andaki saati verir. (22:24:40 gibi )
Now: O andaki tarih ve saati birlikte verir. (25.03.2000 22:24:40 gibi )
VBScriptin buna ek olarak Weekday (haftanın günü ), WeekdayName (günün adı ) ve Monthname (ayın adı ) fonksiyonları da vardır. Bu fonksiyonlar değerlerini Date fonksiyonuna göre alırlar. Örneğin,
<%= WeekdayName(Weekday(Date ) )%>
komutu bize bugün Cumartesi ise "Cumartesi" değerini verir.
<%= MonthName(Month(Date ) )%>
komutu bize bu ay Mart ise "Mart" değerini verir. VBScriptin bunlara ek olarak Day (gün ), Month (ay ) ve Year (yıl ) fonksiyonları da değerlerini Date fonksiyonundan alarak, size bir rakam verirler. Eğer tarih 25 Mart 2000 ise:
<%= Day(Date )%>... 25
<%= Month(Date )%>... 3
<%= Year(Date )%>... 2000
değerini verir. VBScript, bu değerleri doğruca işletim sisteminden alır. Dolayısıyla işletim sisteminin bölgesel ayarları Türkiye için yapılmışsa, gün adları Türkçe olarak dönecektir. Ayrıca, tarih ve saat biçimleri de bölgesel ayarlara bağlı olarak, ay önde, gün arkada veya tersi, saat de 12 saat veya 24 saat esasına göre döner. ASP programlarınızı kişisel Web Serverda denerken kendi bilgisayarınızın tarih ve saatini; gerçek Internette çalıştırırken Serverın tarih ve saatini alırsınız. Sayfalarınızda ay ve gün adlarını Türkçe görüntülemek için, önce Serverın bölgesel ayarlarını sınamanız ve eğer isimler Türkçe gelmiyorsa, bunları çeviren Sublar veya fonksiyonlar yazmanız gerekebilir.
SERVER NESNESİ
Web Server, ASP için bir nesnedir, ASPnin 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 Scripti ya bizim, ya ziyaretçinin, ya da Serverın bir hatası yü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 Scriptin çalışıp-durmasını 90 saniye bekler; bu sürenin sonunda Scriptin ç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:
Kod Alanı: |
<% 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? Scriptiniz çok karmaşık veya başka bir Serverdaki 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 CreateObjecti 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çeyi 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.
Internette 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 kelime3" )
şeklindeki bir kod Bunu hemen şu şekle sokacaktır: kelime1+kelime2+kelime3