Tekil Mesaj gösterimi
Alt 17 Mart 2007, 20:37   #6
Çevrimdışı
telNET
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ASP Anlatımı (Dökümandır)




Burada kullandığımız metod dikkatinizi çekmiş olmalı: ReadLine. Bu, açılan metin dosyasından bir satır okutmamızı sağlar. İkinci ve son satırları okutmamızı ise Do..Loop kontrolü sağlıyor. Bu döngü ne kadar sürüyor? MetinDosyası nesnesi, AtEndOfStream (akımın sonunda) oluncaya kadar. Bu, dosyanın sonuna geldiğimiz anda ortaya çıkan bir durum; bu durumla karşılaştığı anda Do..Loop, yaptığı işi durdurup, bir sonraki komuta geçecektir. Burada kullandığımız ReadLine metoduna ek olarak yararlanabileceğimiz diğer metodlar ise şunlardır:
Read (oku): Bir sayı örgümanı ile çalışır ve verdiğiniz sayı kadar karakter okur.
ReadLine (satır oku): Bir satır okur ve String olarak verir.
ReadAll (tümünü oku): Bütün satırları okur ve tek String olarak verir.
Skip (atla): Bir sayı argümanı ile çalışır ve verdiğiniz sayı kadar karakteri atlar.
SkipLine (satır atla): Bir sonraki satıra atlar.
Bu metodlarla sağladığımız okuma işinin kontrolü amacıyla şu özellikleri de kullanabiliriz:
AtEndOfStream (akımın sonunda): Okutulan dosyanın sonuna gelinmesi halinde True (doğru) olur.
AtEndOfLine (satırın sonunda): Okutulan satırın sonuna gelinmesi halinde True (doğru) olur.
Sunucu (Server) Nesneleri
Buraya kadar ele aldığımız nesneler bir anlamda bizim sadece tek tek sayfalarda yararlanacağımız araçları sağlıyor. Oysa ASP’yi diğer CGI teknolojilerinden ayıran başlıca özelliklerden biri tek tek 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 &#246;rneğe g&#246;re Server’ın varsayılan Script Timeout s&#252;resi 90 saniye ise 100 saniyeye &#231;ıkmış olur.
B&#246;yle bir şeyi neden yapmak isteyebiliriz? Script’iniz &#231;ok karmaşık veya başka bir Server’daki veritabanından veri &#231;ekiyor, olabilir. Ger&#231;i bu anlamda 90 saniye bilgisayar milleti i&#231;in bir asır anlamına gelir, ama yine de durdurulmasaydı işini başarıyla tamamlayacak bir Script, bu s&#252;renin kısalığı y&#252;z&#252;nden Server tarafından durdurulabilir. ASP sayfalarınız &#231;ok karmaşıksa ve s&#252;rekli Timeout hatası veriyorsa, hata aramadan &#246;nce bu s&#252;reyi uzatabilirsiniz.
CreateObject Metodu: İlk ASP kodunu yazdığımız andan beri bu metodu kullandığımızı g&#246;r&#252;yorsunuz. CreateObject (nesne oluştur) olmasa idi, d&#246;rt mevsim birbirini izleyebilir, D&#252;nya G&#252;neş’in etrafında d&#246;nebilir miydi? Hi&#231; sanmam. Fakat l&#252;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&#231;lı banner grafiklerini belirli zaman aralığı ile veya ziyaret&#231;iye g&#246;nderdiğiniz Cookie (&#231;erez) bilgilerine g&#246;re değiştirmek istiyorsunuz. Bunun i&#231;in diyelim ki MS-Web Server Programının AdRotator bileşininden yararlanacaksınız; ş&#246;yle bir kod işinizi g&#246;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&#231;ısından “k&#246;k dizin” (root directory) Server’ın bulunduğu bilgisayarın sabit diskinde, herhangi bir klas&#246;r olabilir. &#214;rneğin IIS i&#231;in bu varsayılan değer olarak “C:\inetbup\
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
klas&#246;r&#252;d&#252;r. &#214;zellikle ASP ile “program niteliğinde siteler” yapmaya başladığımızda, sitenin ilgili b&#252;t&#252;n dosyalarının bulunduğu bir dizin i&#231;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 ş&#246;yle olacaktır:
“C:\inetbup\
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Fakat bu metodun sadece b&#246;yle duragan bi&#231;imde kullanılması gerekmez; bazen sayfalarımızda ziyaret&#231;i ile etkileşmenin sonucu olarak varsayılan Web dizinimizi değiştirmek isteyebiliriz. S&#246;zgelimi biri T&#252;rk&#231;e, diğeri İngilizce iki sitemiz varsa, ve ana sayfamızda ziyaret&#231;i T&#252;rk&#231;e’yi se&#231;tiyse, o noktadan itibaren Web uygulamamız i&#231;in Web k&#246;k-dizini, “/turkish/” olacak ve mesela resimlerimiz i&#231;in verdiğimiz “/resimler/” dizini k&#246;k dizinde değil, “/turkish/resimler/” klas&#246;r&#252;nde aranacaktır. Web yolunu dinamik olarak, yani ziyaret&#231;inin tercihine bağlı şekilde değiştirebilmek i&#231;in, &#246;nce ziyaret&#231;iden gelecek bilgileri nasıl kullanacağımıza, yani Request (talep) nesnesine değinmemiz gerekir.
HTMLEncode, URLEncode: İ&#231;inde HTML a&#231;ısından kod par&#231;ası veya &#246;zel işaret sayılan karakterler bulunan metinleri sayfamıza i&#231;erik olarak g&#246;ndereceğimiz zaman Server’ın işaretleri aynen metin gibi g&#246;ndermesini sağlamak i&#231;in, &#246;rneğin:
Server.HTMLEncode(“Değisken1 < Değisken2”)
yazarsak, ASP bu metni HTML kodu olarak yorumlamaz, metin olarak algılar.
Internet’te bazen &#246;zellikle sayfa adresleri belirtilirken bazı değerlerin “URL Kodu“ dediğimiz şekilde kodlanmış olarak g&#246;nderilmesi gerekir. Bu kodlama t&#252;r&#252;nde boşlukların yerine + işareti konmuş olması şarttır. Bu t&#252;r bilgiler g&#246;ndereceğimiz zaman:
Server.URLEncode(“kelime 1 kelime2 kelimeme2”)
şeklindeki bir kod Bunu hemen şu şekle sokacaktır:
kelime1+kelime2+kelime3
Talep (Request) Nesnesi
Web Server &#231;ok akıllı bir programdır; bir Web ziyaret&#231;isi herhangi bir talepte bulunduğu, yani bir sayfanın g&#246;nderilmesini istediği anda, bu talebi, bir nesne halinde ele alır; kolleksiyonlar oluşturur. Bu kolleksiyonlar, HTTP protokol&#252; ile iletişimin sonucu olarak ziyaret&#231;inin Browser’ından ve Internet’e giriş noktası olan ISS’in bilgisayarından başlayan ve Web Server’dan derlenen bir dizi bilgidir. Bir anlamda, Request nesnesi, Web programımızın Girdi (Input) b&#246;l&#252;m&#252;n&#252; oluşturur.
Request nesnesi kendi i&#231;inde d&#246;rt ana nesne barındırır:
QueryString ve Form
Web ziyaret&#231;isinin bilgisayarından kalkıp Server’a gelen herşey, QueryString kolleksiyonunu oluşturur. Bu ziyaret&#231;inin Browser’ın URL adresi hanesine yazdığı bir basit HTML sayfası yolu ve adı olabilir; bir Form’un G&#246;nder d&#252;ğmesini tıkladığında gelen bilgiler olabilir. Bu bilgilerin şu &#246;zelliklerini kullanabiliriz:
Content_Length: Bir Form’dan gelen bilgilerin t&#252;m&#252;m&#252;n byte olarak boyutudur.
Remote_Host: Ziyaret&#231;inin IP adresini verir; ancak Internet’e &#231;evirmeli ağ ile bağlanan ziyaret&#231;ilerimiz her seferinde farklı bir IP bildirebilirler. Bu y&#252;zden bu bilgiyi ziyaret&#231;inin kimliği sayamayız.
Request_Method: Form’da kullandığımız GET veya POST metodunu bildirir. İki y&#246;ntemle gelen bilgi farklıdır. Form’un oluşturduğu bilgileri GET y&#246;ntemi ile alırsak bu, &#231;evre değişkenlerinden QUERY_STRING değişkeninin i&#231;ine yazılır. Başka bir ifade ile Form’daki b&#252;t&#252;n değişkenlerin adları ve bu değişkenin i&#231;erdiği değer yumak yapılır (bu yumağın niteliğine ve nasıl &#231;&#246;zeceğimize geleceğiz!) ve Server’da QUERY_STRING değişkeninin değeri olarak yazılır. Form’un bilgilerini POST yoluyla alıyorsak bunlar Request nesnesinin Form kolleksiyonunun i&#231;inde Form’un değişken adları ve ziyaret&#231;inin bu değişkenler i&#231;in sağladığı değerler olarak ayrı ayrı yazılır. GET ile sınırlı, POST ile sınırsız bilgi alabiliriz.
Script_Name: O anda &#231;alıştırılmakta olan ASP sayfasının adını verir.
ServerVariables (Server Değişkenleri)
Request nesnesinin bir diğer kolleksiyonu, bizim kendi Web Server’ımızın o anda &#231;alışmakta olan ASP sayfası i&#231;in oluşturduğu ortamın değişkenleridir. Bunların arasında ziyaret&#231;inin Browser’ına ilişkin bilgiler de vardır. &#214;nvc şU kısa ASP sayfasını &#231;alıştırarak kendi Server’ımızın şu andaki değişkenlerini g&#246;relim; sonra bunları ayrıntılı ele alalım (SerDeg.asp):
<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 "&nbsp;"
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>
Bu sayfayı &#231;alıştırdığımız zaman g&#246;r&#252;nt&#252;lenecek tabloda, Bir HTTP Server’ın SerDeg.asp sayfasını &#231;alıştırdığı anda oluşturduğu ortama şekil veren b&#252;t&#252;n değişkenleri g&#246;receksiniz. Bu değişkenleri programlama yoluyla değiştiremeyiz; sadece okuyup, yararlanabiliriz. HTTP Server Değişkenleri Kolleksiyonunun elemanları ş&#246;yle sıralanır:
Değişkenin adı ve değeri
ALL_HTTP HTTP Header i&#231;inde yer alan b&#252;t&#252;n değişkenler ve değerleri. Header adlarının &#246;n&#252;nde “HTTP_” &#246;neki vardır.
ALL_RAW HTTP Header i&#231;inde yer alan b&#252;t&#252;n değişkenler ve değerleri. Header adları ve değerleri istemci Browser’ın verdiği şekilde g&#246;sterilir.
APPL_MD_PATH Web Server’ın ISAPI.DLL dosyası i&#231;in varsaydığı k&#246;k dizin
APPL_PHYSICAL_PATH Web Server’ın varsaydığı k&#246;k dizinin ger&#231;ek yolu
AUTH_PASSWORD Kullanıcı Web Server’a kullanıcı adı/parola y&#246;ntemiyle bağlanabiliyorsa, kullanılan parola
AUTH_TYPE Kullanıcı Web Server’a kullanıcı adı/parola y&#246;ntemiyle bağlanabiliyorsa, kullanılan yetkilendirme y&#246;ntemi
AUTH_USER Kullanıcı Web Server’a kullanıcı adı/parola y&#246;ntemiyle bağlanabiliyorsa, kullanıcı adı
CERT_COOKIE Kullanıcı siteye bağlanmak i&#231;in yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik (ID)
CERT_FLAGS Sertifikanın varlığını g&#246;steren bit değeri
CERT_ISSUER Sertifika varsa veren kurum
CERT_KEYSIZE Secure Socket Layers kullanılıyorsa, bağlantı i&#231;in anahtar değeri
CERT_SECRETKEYSIZE &#214;zel anahtar değeri
CERT_SERIALNUMBER Sertifika seri no.
CERT_SERVER_ISSUER Sertifikayı veren merci
CERT_SERVER_SUBJECT Server Sertifikasının “konu” alanı değeri
CERT_SUBJECT İstemci Sertifikasının konu alanı değeri
CONTENT_LENGTH İstemcinin g&#246;nderdiği bilgi yumağının boyutu
CONTENT_TYPE Ziyaret&#231;iden gelen bilgilerin GET veya POST metoduna g&#246;re edindiği t&#252;r
GATEWAY_INTERFACE Web Server’ın ziyaret&#231;i ile etkileşim aray&#252;z&#252;n&#252;n adı ve s&#252;r&#252;m&#252;. Genellikle: CGI/1.1
HTTPS Ziyaret&#231;i ile bağlantı g&#252;venli ise ON, değilse OFF
HTTPS_KEYSIZE Secure Sockets Layer i&#231;in bağlantı anahtar sayısı
HTTPS_SECRETKEYSIZE &#214;zel Server sertifikasının gizli anahtar sayısı
HTTPS_SERVER_ISSUER &#214;zel Server sertifikasının veren merci
HTTPS_SERVER_SUBJECT &#214;zel Server sertifikasının konusu
INSTANCE_ID Web Server’ın aynı anda ka&#231; kere &#231;alışmakta olduğu
INSTANCE_META_PATH Şu anda &#231;alışmakta olan Web Server’ın Meta yolu
LOCAL_ADDR İstemcinin IP numarası
LOGON_USER İstemci Windows NT sisteminde ise oturum a&#231;ma adı
PATH_INFO &#199;alışmakta olan ASP’nin g&#246;reli yolu ve adı
PATH_TRANSLATED &#199;alışmakta olan ASP’nin ger&#231;ek yolu ve adı
QUERY_STRING İstemcinin g&#246;nderdiği bilgi k&#252;mesi
REMOTE_ADDR İstemcinin Host’unun (ISS’inin) IP’si
REMOTE_HOST İstemcinin Host’unun (ISS’inin) adı
REMOTE_USER İstemcinin ger&#231;ek adı
REQUEST_METHOD İstemciden bilgi isteme y&#246;ntemi (GET veya POST)
SCRIPT_NAME &#199;alışmakta olan ASP’nin adı
SERVER_NAME Sunucu’nun adı
SERVER_PORT Sunucuya bağlantının geldiği TCP kapı numarası
SERVER_PORT_SECURE TCP kapısı g&#252;venli ise 1, değilse 0
SERVER_PROTOCOL Server’ın &#231;alıştırdığı HTTP’nin s&#252;r&#252;m&#252;
SERVER_SOFTWARE Server programının adı ve s&#252;r&#252;m&#252;
URL Şu anda ge&#231;erli URL
Cookie (&#199;erez)
Daha &#246;nce ne kadar &#231;ok olursa olsun tek-tek Web sayfalarından oluşan siteler yaptıysanız bile, Cookie (&#199;erez) ile ilginiz olmamış olabilir. Ya da sadece Internet ziyaret&#231;isi olarak başkalarının size g&#246;nderdiiği Cookie’lere sinirlenmekle yetinmiş olabilirsiniz. Fakat şimdi ASP ile Web Programı oluşturmaya hazırlanan kişi olarak Cookie’lerle daha yakından ilgilenmeniz gerekiyor. &#199;&#252;nk&#252; artık siz de başkalarına &#231;erez g&#246;ndereceksiniz!
Tabi&#238; bunun i&#231;in &#246;nce “Cookie neden gereklidir?” sorusunu yanıtlamak gerekir. HTTP ile yapılan iletişim, belirgin olmayan durum bağlantısına dayanır: yani ne istemci sunucunun, ne de sunucu istemcinin o anda hatta (on-line) olduğunu bilmek zorunda değildir; birbirlerinden istedikleri ve g&#246;nderdikleri şeyleri karşı tarafından almaya hazır olduğunu bilmeden g&#246;nderirler. Oysa s&#246;zgelimi elektronik alışveriş gibi ziyaret&#231;inin bir yerlere birşeyler kaydettiği, ge&#231;ici değişkenler oluşturduğu durumlarda sitemizde kimin ne yaptığıını bilmek zorundayız. Ziyeret&#231;inin bir sayfada yaptığı tercihler diğer sayfalarda ona sunacağımız i&#231;eriği etkileyebilir, belirleyebilir. Oysa aynı ziyaret&#231;i bir sayfadan diğerine ge&#231;erken Server ile ilişkisini kaybedebilir. Bunun i&#231;in ziyaret&#231;inin Internet’ten kopması gerekmez; sadece TCP/IP protokol&#252; gereği bizimle bağlantısı kesilebilir. Bunu ziyaret&#231;i farketmeyebilir; ama Server etmek zorundadır. Heryeni ilişkiye yeni bir “application” (uygulama programı) başlatamayız; ziyaret&#231;inin bir &#246;nceki sayfada yaptığı tercihlerin devam etmesi gerekir. Bu devamlılığı ziyaret&#231;iyi işaretleyerek yaparız; bu işareti de Cookie sağlar.
ASP tekniğiyle tasarladığımız sitede, ziyaret&#231;ilerimize Cookie g&#246;ndermek zorunluktur diyebiliriz. ASP a&#231;ısından Cookie’ler bir nesne oluştururlar. Aslında, Cookie’ler ASP i&#231;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) neslereni i&#231;inde ele alınabilir. Cookie konusunun *devamını Response nesnelerine değindiğimiz yere bırakalım.
Sertifika Nesnesi
Sertifika, HTTP bağlantısında “Ben filancayım!” diyen istemcinin, ger&#231;ekten filanca olup olmadığını g&#246;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&#231;in taklit edilmesi zordur. Sertifika uygulaması i&#231;in Web Server’ın Secure Socket Layers denen g&#252;venli HTTP protokol&#252;n&#252; kullanması gerekir. Bu durumda Server’ın URL’i, http:// diye değil https:// diye yazılır.
ASP a&#231;ısından sertifika ile ilgili her t&#252;rl&#252; bilgi ClientCertificate kolleksiyonunda durur. S&#246;zgelimi, bir ziyaret&#231;inin ger&#231;ekten sitenize girmeye yetkili olup olmadığını anlamak i&#231;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.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet sohbet