Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
947
Cevap
942272
Tıklama
0
Öne Çıkarma
Cevap: # BAKMADAN GEÇMEYİN! #Bedava template,kodlar,scriptler,AdanZye Herşey (18. sayfa)
P
20 yıl
Yüzbaşı

helal bea


süpersin abi



C
20 yıl
Er

Fena çalışma olmuş paylaşım için saol



T
20 yıl
Yüzbaşı

super arşiv eline saglık hoca


Bu mesaja 1 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi

Web Doktoru(Web Sitenizi Kontrol Ettirin.)

http://www.tr1.net/doktor.htm tıkla ve kontrol ettir


Bu mesaja 1 cevap geldi.
P
20 yıl
Yüzbaşı

kütüphanede yok bu kadar bilgi nasıl teşekkür etsek vallahi ellerine gözlerine saplık


Bu mesaja 1 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi

N
20 yıl
Binbaşı
Konu Sahibi

Buyrun bakalım bende açılışı bir adet photoshop kitabıyla yapıyorum. İyi günlerde çalışın , öğrenin bizede anlatın =)


http://www.megaupload.com/?d=A11OLLNQ
http://www.megaupload.com/?d=AXWNK13B
http://www.megaupload.com/?d=2ETL3A0L
http://www.megaupload.com/?d=1DUI1MRR

şifre: a1t-f4


Bu mesaja 1 cevap geldi.
E
20 yıl
Teğmen

helal olsun hocam para verseler bu kadar uğraşmazlar insanlar paylaşım aşkına gelmişsin kutluyorum



E
20 yıl
Teğmen

e daha ne olsun ya...helal olsun koçum benim


Bu mesaja 1 cevap geldi.
L
20 yıl
Binbaşı

çok teşekküler.
aslında bunu bence bir sitede yayınlamalısın.çünkü burda arasıra üst konu olmaktan çıkıyor.ve daha önemlisi yeni şeyler ekeldikçe düzen bozuluyor.

ama tek kelimeyle muhteşem bi çalışma.....



Ç
20 yıl
Er

hocam biz web butonları yapmak istiyoruz bize yardımcı olabilirmisiniz.
teşekürler


Bu mesaja 1 cevap geldi.
L
20 yıl
Binbaşı

ya ben cjb.net ten bi forum sayfası aldım.ilk başlarda iyi de işliyordu.ama şimdi log in olurken,yönetim panelini açarken falan hep bi reklam sayfası çıkoyor.ve o sayfadan herhangibi kurtuluş bölümü bulunmuyor.yani siteyi yönetemiyorum.

bu konuda acil yardımmmmmm


Bu mesaja 1 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi

PORTALLAR Alıntıdır : alo312

mini nuke 1.5 sadece freehosthttp://rapidshare.de/files/5755547/mnfixed-v1_1_.5.zip.html



çalışır hostlarwww.websamba.comwww.somee.comwww.7host.com domaind ve 1asphostta hata verir

mini nuke 2.3 tüm asp hostlar içinhttp://rapidshare.de/files/5755663/mini-nuke-v2_1_.3-freehost.zip.html



efkan portalhttp://rapidshare.de/files/5755712/efkanportal.zip.html



test et:http://bb.domaindlx.com/serdar31/efkanportal/default.asp




bu portalları bilmeyenler vardır onun için paylaştım



bu da web wiz forum son sürüm tr domaind ve 1asphosttada çalışırhttp://rapidshare.de/files/5755845/web_wiz_forums_access2000_v7_1_.92_tr_v1.zip.html

hoşunuza gidecek bir portal sade ve forumu yok ibosoft

http://rapidshare.de/files/5755935/ibosoft_portal_v1_1_.0.zip.html


gerekli linklerwww.ibosoft.tk de


bu da asp nuke 1.4 Uygulamayı kurduktan sonra eğer isterseniz Türkçe olarak dil ayarını değiştirebilirsiniz. test için:www.gsliefrahim.somee.com

http://rapidshare.de/files/5756059/aspnuke_rel1_1_.4en.sp2.zip.html

emek portal websamba tavsiye edilirhttp://rapidshare.de/files/5756212/emekportalv2_1_.1.zip.html

en süper mini nuke fakat freehostta çalışmazhttp://rapidshare.de/files/5756336/webciyiz_mn116.zip.html

özellikleri:Yapımcının açıklaması: webCiYiZ.M-Nuke 1.16 İle Gelen Özellikler...: >>Forumdaki Yenilikler..: Konu Taşıma Yapıldı...(Fikir Mc_Fly) Başka Konuya atlama... Floodlara karşı ek özellikler getirildi... ---------------------------------------------------------------------------------------- >> Downloadlar ve Makalelerdeki Yenilikler Ust Kategori getirildi ve daha basitleştirildi Tasarım... Downloadlarda Ekleyen Bölümü Getirildi...(Sadece Bu Sürümde Var) ---------------------------------------------------------------------------------------- Uyenin Özelliklerinde Eklediği Haberler,Makaleler ve Dosyalar (Bu sürümde dosyayı ekleyende görülebilmekte) gözüküyor... ---------------------------------------------------------------------------------------- >>Bloklar yenilendi ve Yeni Bloklar eklendi... Rasgele link Bloğu eklendi ve ADMIN PANELİNDEN yönetilebilir hale getirildi... 88*31 Ufak Banner Bloğu eklendi ve ADMIN PANELİNDEN yönetilebilir hale getirildi... Google Arama Bloğu Eklendi... Hızlı Chat Eklendi... Hava Durumu Bloğu Eklendi... Astroloji Bloğu Eklendi... Tv'de Bugun Bloğu Eklendi... BugünKi Üyeler Bloğu Eklendi... Kadromuz Bloğu eklendi... Arama Bloğu Yapıldı... Diğer Bloklardaki Hatalar giderildi... Toplam BLOK sayısı 21 e Yükseltildi..(Daha bir sürü gelecek Bekleyin..) ---------------------------------------------------------------------------------------- >>Haberlerdeki Yenilikler Tasarım olarak biraz değişiklik yapıldı.. Habere Resim eklenince sayfada iğrenç duruyordu o düzeltildi Haber Kategorisinin Resmi yerine BAŞLIK ta ilk önce kategori ismi sonra Haber Başlığı çıkıyor (Örn: "Spor>Alex Fener'de" şeklinde). Bazı Yazı tipi ile ilgili sorunlar giderildi. ---------------------------------------------------------------------------------------- >>Modüller Eklendi... Galeri Modülü Eklendi...(Mini-Nuke Ex. 1.8deki Galerinin Hataları Giderilmiş ve Yeni Özellikler getirilmiştir.)... Ziyaretçi Defteri Bulunmakta (Önceki versiyonlardakinin aynısı DEĞİŞİKLİK YAPAMADIM VAKTİM KALMADI)... Haber Yolla 2.0 dakini aynısı... ICQ ya mesaj Yollama Modulu Eklendi... 4 Adet Oyun Modülü Eklendi (Dama-Snake-Tetris-Yılan)... ---------------------------------------------------------------------------------------- >>Tasarımdaki Yenilikler ADMIN Onaylı Sağ tuş menusu ADMIN onaylı Tema Seçme Olayı ADMIN Onaylı <<<< Forumdaki son 5 Konunun >>>> Ana Sayfada Gosterilmesi.. Sabit bir Duyurunun Pencere içerisine alınması... FLOOD Özelliğinin Her Sayfaya Konularak FLOOD ATAKLARA karşı önlem alındı... Yeni Bir Menu oluşturuldu ve Yeni TEMALAR eklendi... Tasarım Sadeleştirildi... (Siteler Hızlansın Diye) Favorilerime EKLE ve Site Mail Adresine Mail AT Eklendi... 800*600 boyutuna getirildi tasarım... Bloklar arası boşluklar kaldırıldı... Siyah Temada bir iki değişiklik yapıldı... Yeni Temalar Eklendi... Ve Yakında 20yi aşkın TEMA larımız gelecektir(Taraftar Temaları YOLDA)... ---------------------------------------------------------------------------------------- ####### Diğer Yenilikler Tekil Hit - Çoğul Hit Birlikte kullanıldı En büyük ve en çok istenilen özellik olan bir üyeye 2 ve daha fazla editorlük verme getirildi....Bu sayede bir üye HEM DOWNLOAD editörü iken HEMDE MAKALE editörü olabilecek.

buda gelişmiş bir forumhttp://rapidshare.de/files/5776292/zixforumtr.zip.html


at yarışları için asp script:http://rapidshare.de/files/5776535/ganyan.zip.html




buda php nuke 7.9 trhttp://rapidshare.de/files/5776907/nuke7_1_.9.zip.html


bu da shemen nuke:http://rapidshare.de/files/5779390/shumennukev1.0.rar.html


indirdikten sonra zipleyiniz domaindlx te başarılı sonuç vermiştir herzamanki gibi websamba,7host ve somee tavsiye edilir

test için :http://www28.websamba.com/bjkliserdarcrazy/Shemen/Default.asp

bu da erax nuke:http://rapidshare.de/files/5779505/v1.0.zip.html


bu mp3 portalı:http://rapidshare.de/files/5779525/easywebtr.com_Mp3_Portal_v_1.0.zip.html


tyranid bu işini görür:http://rapidshare.de/files/5779587/M-Portal.zip.html


bu da başka bir mp3 portalı:http://rapidshare.de/files/5779661/denyil_mp3_download.zip.html


hostin yönetme sistemi:http://rapidshare.de/files/5779704/Paket_Yonetim.zip.html



http://www.bilgisayarland.com/ bedava hosting veriyor

ücretsiz:http://www.bilgisayarland.com/ucretsiz_kayit.htm


bu 2.0 freehost:http://rapidshare.de/files/4710831/freehost20.zip.html

bu 1.5,2.0,2.1 ve 2.3 ün derlenmiş hali 1.0:http://rapidshare.de/files/5780016/mnfixed-freehost.zip.html


mini nuke taklidi süper bir portal:http://rapidshare.de/files/5780141/AspSitem_1.5.zip.html


toplistler:http://rapidshare.de/files/6259042/vbyazilimtoplist.zip.html
http://rapidshare.de/files/6115154/arkadastoplist.zip.html
http://rapidshare.de/files/5845194/MT_OrumcekToplist2_2.zip.html


çakalserdar asp sitem 1.5 full:http://rapidshare.de/files/6385845/Webcakali_serdar_asp_sitem_1.5.zip.html


sanal kral asp sitem 1.5:http://rapidshare.de/files/6594731/sanalkral.zip.html


Bu mesaja 1 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi

DNS - Domain Name System - Domain İsim Sistemi

DNS

Bir IP ağı üzerinde çeşitli servislere ulaşmak için bu servislerin çalıştığı sistemlerin 4 sayıdan oluşan akılda kalması zor ve son kullanıcılar için hemen hiçbir şey ifade etmeyen adreslerinin bilinmesi gerekmektedir. Bu sorunun nasıl aşıldığı bu dokümanda ele alınacaktır.

1 DNS’in Tarihçesi

Yukarıda bahsedilen isimlendirme sorunu ilk olarak Internetin babası sayılan ArpaNet zamanında ortaya çıkmıştır. 1970’lerde ArpaNet günümüz ağları ile karşılaştırılamayacak kadar küçük durumdaydı ve yalnızca birkaç yüz ile ifade edilebilen sisteme hizmet veriyordu. Bu tarihlerde isimlendirme için tek noktada tutulan bir dosyanın bulunması ve diğer tüm sistemlerin bu dosyayı belli aralıklarla kendi taraflarında güncellemesi isimlendirme sorununu çözmüştü.

Adres-isim tanımlamalarını içeren HOSTS.TXT dosyası SRI tarafından SRI-NIC adında bir bilgisayar üzerinde tutulmaktaydı. Bu dosya her adrese bir isim karşılık gelecek şekilde düzenlenmişti. ArpaNet üzerindeki yeni isim tanımlamaları ve değişiklikleri SRI’ya gönderilen e-postalar aracılığı ile yapılıyor ve HOSTS.TXT’in kopyası ftp ile alınıyordu.

ArpaNet üzerinde TCP/IP kullanımına paralel olarak ortaya çıkan bağlantı patlaması, isim çözümü için bir çok sorunu da beraberinde getirdi. Öncelikle isim çakışmaları ortaya çıktı, sayı artmakta ve her bilgisayara özgün bir isim atanmasında problemler yaşanmaktaydı. Ayrıca yalnızca isim çözümlenmesi için oldukça yüksek miktarda bant genişliği harcanmakta ve buna rağmen kullanılan isim veritabanlarının uyumlu olması her zaman sağlanamamaktaydı.

Bu durumun ortaya çıkmasından sonra ArpaNet daha ölçeklenebilir bir isim çözümleme yapısı için araştırmalara başladı. Paul Mockapetris bu işle görevlendirildi. Mockapetris 1984 yılında Domain Name System (DNS)’i tanımlayan RFC 882 ve 883’ü yayınladı. Bunlar daha sonra halen geçerli olan RFC 1034 ve 1035 tarafından güncellendiler.

2 DNS’in Yapısı

ArpaNet döneminde ortaya çıkan güçlükler nedeniyle DNS tasarlanırken uçlardaki sistemlerin kendi bilgilerini kendilerinin güncelleyebileceği bir yapı üzerinde durulmuştur. Ortaya çıkan yapı ise en üstten başlayarak hiyerarşik bir şekilde uçlara doğru açılan dağıtık bir varitabanı mimarisidir. Uçlar birbirleri ile istemci sunucu yöntemiyle konuşurlar.

Farklı tablolar ile tek veritabanında tanımlanmış bir alan adı sistemini icenlenirse yapısının hiyerarşik olduğu görülür. Her alan adı bir başka alan adının altında tanımlanmıştır. En üst seviyede bulunan bir tablo en üst seviye alan adları olan ‘.com’, ‘net’ vb içerir ve bu alan adlarının detaylarını içeren tabloları işaret eder. Aynı şekilde bu tablolar da kendi altlarında bulunan alan adlarını içerir ve detaylarını gösteren tablolara işaret eder.

Alan adı dağılımı en üst seviyeden başlar ve alt dallara doğru bölünür. Bir alan adının okunuşu en alttan başlayarak en üste doğru yapılır. Ağacın en altında bulunan alan adı ‘ankara.ulak.net.tr’ şeklinde okunacaktır.

En üst seviye alan adlarının yönetimi InterNIC tarafından yapılmaktadır. ISO kodları ile tanımlanmış ülke adlarının yönetimi ülkelere göre değişiklik göstermektedir. Türkiye’nin ISO kodu olan ‘tr’ üst seviye alan adının yönetimi Orta Doğu Teknik Üniversitesi (ODTÜ) tarafından yapılmaktadır. Dolayısıyla ‘com’, ‘net’, ’gov’ gibi alan adlarına kayıt InterNIC tarafından; ‘com.tr’, ‘net.tr’ gibi alan adlarına kayıt ODTÜ tarafından yapılmaktadır. Alan adı kayıtlarıyla ilgili daha fazla bilgi içinhttp://www.internic.net vehttp://dns.metu.edu.tr adresleri incelenebilir.

‘ankara.ulak.net.tr’ örneğinde, ‘ankara.ulak.net.tr’ alan adı UlakNet sunucuları üzerinde, ‘ulak.net.tr’ alan adı ODTÜ sunucuları üzerinde, ‘net.tr’ alan adı yine ODTÜ sunucuları üzerinde, ‘tr’ alan adı ise root server adı verilen en üst seviye alan adı sunucuları üzerinde tanımlanmış durumdadır. Dikkat edilmesi gereken nokta alan adları alındıktan sonra bu alan adındaki isimlendirmenin lokalde yapıldığıdır. Bu daha önce de değinilen yönetimin dağıtık olarak yapılabilmesini sağlar.

Bu bilgiler ışığında ‘xxx.ankara.ulak.net.tr’ ya da ‘yyy.ulak.net.tr’ şeklindeki bir tanımlama UlakNet’in kontrolünde, benzer şekilde ‘abc.com.tr’ ya da ‘xyz.net.tr’ şeklindeki bir tanımlama ise ODTÜ’nün kontrolündedir.

İncelenen alan adı ağacı maksimum 127 basamaktan oluşabilir ki bu da pratikte ulaşılması imkansıza yakın bir değerdir.


3 DNS Çözümlemesi

DNS’in yapısı anlatılırken dağıtık bir veritabanı şeklinde oluşturulduğu ve uçların birbirbirleriyle istemci sunucu mantığı ile konuştuğunu söylenmişti. Bu işlevi yerine getiren programlara alan adı sunucu adı verilir (name server). Alan adı sunucularını alan adı ağacı üzerinde nokta ile gösterilirler.

Her alan adı sunucu bir veya birkaç alan adı bilgisini tutar ve bu alan adları için en yetkili alan adı sunucudur. Diğer alan adları için sorgularda bu alan adları için en yetkili alan adı sunucularını bulmaya çalışır.

Alan adı sunucular yerine getirdikleri kritik işlev nedeniyle genellikle yedekli olarak çalıştırılırlar. Bilgilerin tutulduğu ana veritabanı birincil alan adı sunucu olarak adlandırılır. İkincil sunucualr birincil alan adı sunucularının verilerini periyodik olarak kendi veritabanına kopyalarlar. Birincil sunucuda herhangi bir problem yaşandığında sorgulama ikinci sunucular üzerinde yapılır.

DNS çözümlemesi birkaç kademede incelenebilir. UlakNet alan adı sunucusunu kullanan bir istemcinin ‘www.ulak.net.tr’ adresini sorguladığı durumda sunucu kendi veritabanında tanımlı olan bu adresi istemciye döndürecektir. Bu, UlakNet alan adı sunucusu ‘ulak.net.tr’ alan adı altında bulunan tanımlar için en yetkili sunucu olduğu için bu şekilde gerçekleşmiştir.

Benzer bir sorgulamayı Amerika kıtasında ‘ns.digex.net’ adlı alan adı sunucuyu kullanan bir istemcinin yaptığı durum incelenebilir.

‘ns.digex.net’ kendisine sorulan ‘www.ulak.net.tr’ için herhangi bir bilgiye sahip değildir. Bu yüzden kendi veritabanında tanımlı olan en üst seviye alan adı sunucularına (root-servers, daha sonra detaylı olarak açıklanacaktır) bu adresi sorar. Bu sunucu (a.root-servers.net) da ‘www.ulak.net.tr’ için kesin bilgiye sahip değildir. Ancak ‘.tr’ üst seviye alan adının ‘ns1.metu.edu.tr’ sunucusu tarafından kontrol edildiğini bilmektedir. Bu yüzden, ‘ns.digex.net’e sorguyu ‘ns1.metu.edu.tr’ üzerinde yapması bilgisini iletir. ‘ns.digex.net’ bu kez aynı adresi ‘ns1.metu.edu.tr’ üzerinde sorgulayacaktır. Ancak bu sunucu da ‘www.ulak.net.tr’ için kesin adresi bilemeyecek ve sorgunun ‘ulak.net.tr’ alan adı sunucusu olan ‘ns.ulak.net.tr’ adresine yönlendirilmesini bildirecektir. Son olarak ‘ns.digex.net’, ‘www.ulak.net.tr’ adresini ‘ns.ulak.ne.tr’ üzerinde sorgulayacak ve ‘ns.ulak.net.tr’ kendi veritabanında ‘www.ulak.net.tr’ için tanımlı olan 193.140.83.9 adresini döndürecektir. Bu bilgiye ulaşan ‘ns.digex.net’ de kendi istemcisine bu bilgiyi iletecektir.


Öncelikle ‘.tr’ dan sorumlu gözüken ‘ns1.metu.edu.tr’nin ‘.net.tr’ için ayrı bir alan adı sunucuya yönlendirme yapmadığı, doğrudan ‘ulak.net.tr’ alan adı sunucusuna yönlendirme yaptığına dikkat edilmelidir. Bu ‘ns1.metu.edu.tr’ hem ‘.tr’ hem de ‘.net.tr’ için alan adı sunucusu olduğu için bu şekilde gerçekleşmiştir. Eğer ‘.tr’ ve ‘.net.tr’ farklı sunucular üzerinde tanımlı olsalardı ‘ns.digex.net’ ayrıca ‘.net.tr’den sorumlu sunucuyu da sorgulamak durumunda kalacaktı.

Dikkat edilmesi gereken diğer nokta ise istemcinin alan adı sunucuya yalnızca bir sorgu iletmesi ve tüm iş sunucu tarafından yapıldıktan sonra yalnızca cevabı almasıdır. Aynı durum ‘ns.digex.net’ diğer alan adı sunuculara ulaşırken ortaya çıkmamış ve her biri ayrı ayrı sorgulanmıştır. Bunun sebebi ‘ns.digex.net’ sunucusunun tekrarlı (recursive), diğer alan adı sunucularının ise tekrarlı olmayan (iterative) bir şekilde sorgulanmış olmasıdır.


4 IP’den İsim Çözümlemesi

Bölüm 3’te isimden adres çözümlemesi incelenmiştir. Şu ana kadar anlatılan yapı tüm sistemin isimden adres çözümü için tasarlandığı izlenimini vermektedir. Ancak pratik ihtiyaçlar, IP adresinden isim çözümünü de gerekli kılmaktadır.

Böyle bir sorgunun şu ana kadar incelenen yapı üzerinde nasıl çalışabileceğine bakalım. İsimlerin indesklenmesine göre oluşturulmuş hiyerarşik bir sistem görülmektedir. Ancak IP adreslerin bu yapı üzerinde herhangi bir hiyerarşik yapısı bulunmamaktadır. Örneğin ‘www.ulak.net.tr’ adresi 193.140.83.9 IP numarası ile adreslenmişken ‘truva.ulakbim.gov.tr’ adresi 193.140.83.13 IP numarası ile adreslenmiş olabilir. Bu da 193.140.83. ile başlayan IP’lerin teorik olarak tüm alan adı uzayına yayılmış olabileceğini gösterir.

Görüldüğü gibi mevcut yapıda bir IP adresinin isim karşılığını bulmak için veritabanının tümünün taranması gerekmektedir. Bu ise indeksi olmayan dağınık durumdaki milyonlarca kaydın taranması anlamına gelir ki imkansıza yakın bir uğraştır. Bu sorunun çözülebilmesi için IP adreslerine için de hiyerarşik bir yapının kurulması gerektiği görülmektedir.

Bu yapıya geçmeden önce IP adreslemenin özelliklerinin hatırlanması yararlı olacaktır. IP adresleri ilk oktetten son oktete (soldan sağa doğru) en genelden en özele doğru sıralanırlar. Örneğin ‘193.140’ hem ‘193.140.83.13’ü hem de ‘193.140.83.9’u içine alır.

Alan adları ise buna ters olarak sağdan sola doğru en genelden en özele doğru sıralanırlar. Örneğin ‘.tr’ hem ulak.net.tr’yi hem de ‘metu.edu.tr’yi içine alır.

İki gösterim de genelden özele sıralanabildiğine göre mevcut hiyerarşik yapılandırmaya IP numaraları için bir üst seviye alan adı eklenmesi mümkündür. Bu alan adı ‘in-addr.arpa’ şeklinde ifade edilir. Bu üst seviye alan adı 1’dan 255’e kadar çeşitli alt alanlara bölünür. Bu bölümlemeye 4 okteti tamamlayacak şekilde devam edilebilir.

Üst seviye alan adları arasına ‘arpa’ adında bir alan adı eklenmiştir. Bu alan adının altında ‘in.addr’ şeklinde bir alan daha tanımlanmıştır. Bu alan adının altında IP numarasının ilk okteti alan adı olarak eklenmiş, bunu sırayla IP numarasının ikinci,üçüncü ve dördüncü oktetleri izlemiştir.

Görüldüğü gibi artık 193.140.83.13 ve 193.140.83.9 IP numaralarının isim karşılıklarını bulmak son derce kolaylaşmıştır. İncelene isim sorgusuna benzer bir şekilde IP-isim sorguları da bu yapının yardımyıla yapılabilmektedir. Ancak dikkat edilmesi gereken önemli birkaç nokta bulunmaktadır.

Normal alan adı isimlendirme sisteminde isimler ağacın en altından en üstüne doğru okunulur. Bu durumda IP numaraları bilinenin aksine özelden genele doğru okunacaklardır. Örneğin 193.140.83.13 IP numarasının DNS ağacı üzerinde okunuşu 13.83.140.193.in-addr.arpa şeklinde olacaktır.

Dikkat edilmesi gereken diğer bir nokta ise isimden IP’ye yapılan tanımlama ile IP’den isime yapılan tanımlama arasında herhangi bir bağlantı bulunmayışıdır. Örneğin ‘www.ulak.net.tr’ adresi DNS üzerinde 193.140.83.9 olarak tanımlıyken, ‘193.140.83.9’ IP adresinin ismi ‘efe.ulakbim.gov.tr’ şeklinde tanımlı olabilir.


5 DNS Cache

DNS çözümlemesinde anlatıldığı şekilde isim çözümleme işlemi ardışıl olarak alan adı sunucularının sorgulanmasını gerektirir. Bu işlem oldukça vakit alıcı bir işlem olabilir ve karşılıklı olarak sistemler üzerinde yük oluşturduğu gibi hatlar üzerinde yüksek miktarda bant genişliği harcayabilir.

Bunun engellenmesi ve sorgunun mümkün olan en kısa sürede sonuçlandırılabilmesi için alan adı sunuculara cache özelliği eklenmiştir. Bu sayede bir alan adı sunucu daha önce sorguladığı alan adlarını kendi belleğinde tutarak yeni sorgularda diğer alan adı sunucularını sorgulamadan doğrudan cevap verebilir. Bu yukarıda anlatılan olumsuzlukları belli bir derecede önleyecektir. Ancak burada önemli bir nokta gözden kaçırılmamalıdır.

Sorgulanan alan adında son sorgulamadan sonra değişiklik yapılmış olabilir. Bu durumda bellekte tutulan bilgi güncelliğini yitirmiştir ve istemciye hatalı bilgi geri döndürülecektir.

Bu ancak belli bir noktaya kadar kabul edilebilir bir durumdur. Alan adı tanımları normalde çok sık değiştirilen tanımlamalar değillerdir. Nadiren değitirildiklerinde de değişikliğin aktive olması için bir gün gibi bir süre çoğu zaman yeterlidir. Şu halde bellekte tutulan bilgilerin bir süre sonra güncelliğini yitirdiği kabul edilmelidir. Bunu belirleyen değere daha önceki konularda da değinildiği gibi TTL (Time To Live, Yaşam Süresi) denilmektedir ve her alan adının tanımlanmasında bu alan adı için geçerli TTL değeri belirtilir. Bu alan adından sorgulanan bilgiler bellekte TTL süresince tutulduktan sonra güncelliğini yitirdiği kabul edilir. TTL’in nasıl tanımlandığı daha sonra incelenecektir.


BIND

Bu bölüme kadar olan kısımda isim çözümleme işlemi açıklanmıştı. Burada ise bir alan adı sunucunun nasıl kurulduğu ve konfigürasyon detayları anlatılacaktır.

BIND (Berkeley Internet Name Domaın) adını geliştirildiği Berkeley üniversitesinden alan günümüz Internetinin tartışmasız en popüler alan adı sunucu yazılımıdır. Unix sistemlerinde tasarlanmış ve çalıştırılmaya başlamış olmasına rağmen bugün Microsoft NT için üretilmiş dağıtımları da mevcuttur.


1 BIND’ın Temini

BIND’ın geliştirilmesi Internet Yazılım Konsorsiyumu (Internet Software Consortium) tarafından yapılmaktadır ve web sayfalarından ücretsiz olarak yüklenebilir.

BIND’in şu andaki en son sürümü Kasım 1999’da yayınlanmış olan versiyon 8.2.2 yama 5’tir.http://www.isc.org/products/BIND adresinden yüklenebilir.

BIND’in yaygın kullanımda olan 4 ve 8 versiyonları arasında oldukça büyük farklar bulunmaktadır. Bu konuda incelenecek versiyon 8 olup, 4 versiyonu kullananların da mümkünse bu versiyona terfi etmeleri önerilir.


2 BIND’in Kurulumu

BIND yüklenmesi ve derlenmesi örnek olarak gösterilecektir. Test makinası sparc mimari üzerinde çalışan bir RedHat linuxtur. Ancak linux üzerinde dağıtım ile beraber gelen derlenmiş durumdaki BIND da kullanılabilir. Burada derlemenin verilmesindeki amaç farklı platformlardaki kullanıcılara yardımcı olmaktır.

[ilker@hornet bind]$ ftp ftp.isc.org
Connected to isrv4.pa.vix.com.
220 isrv4.pa.vix.com FTP server (Version wu-2.6.0(1) Tue Nov 30 17:39:57 PST 1999) ready.
Name (ftp.isc.org:ilker): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd isc/bind/src/8.2.2-P5
250 CWD command successful.
ftp> bin
200 Type set to I.
ftp> get bind-src.tar.gz
local: bind-src.tar.gz remote: bind-src.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for bind-src.tar.gz (1251509 bytes).
226 Transfer complete.
1251509 bytes received in 30.6 secs (40 Kbytes/sec)
ftp> bye
221-You have transferred 1251509 bytes in 1 files.
221-Total traffic for this session was 1252085 bytes in 1 transfers.
221-Thank you for using the FTP service on isrv4.pa.vix.com.
221 Goodbye.

[ilker@hornet bind]$ tar –xzvf bind-src.tar.gz
………
[ilker@hornet bind]$ cd src
[ilker@hornet src]$ make depend
……..
[ilker@hornet src]$ make
…….
[ilker@hornet src]$ su
Password:
[root@hornet src]# make install
……..
[root@hornet src]# /usr/sbin/named -v
named 8.2.2-P5 Sun Apr 23 13:45:06 EEST 2000
ilker@hornet.ulakbim.gov.tr:/home/ilker/download/bind/src/bin/named
[root@hornet src]#

Görüldüğü gibi BIND’ın kurulumu başarıyla tamamlanmıştır.


3 BIND Konfigürasyonu

BIND konfigürasyon dosyası olarak, aksi belirtilmediği sürece ‘/etc/named.conf’ dosyasını kullanır. BIND 4 versiyonu için bu dosya ‘/etc/named.boot’ dosyasıdır ve dosyaların formatları birbirinden hayli farklıdır bu yüzden iki dosyanın karıştırılmamasına dikkat edilmelidir.

Örnek bir named.conf dosyasını aşağıda gösterilmiştir.

//
// /etc/named.conf
// Ilker TEMIR - 23/04/2000
//

options {
directory "/var/named";
};

zone "." {
type hint;
file "named.root";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "rev.local";
};
zone "ulak.net.tr" {
type master;
file "zone.ulak.net.tr";
};

zone "83.140.193.in-addr.arpa" {
type master;
file "rev.193.140.83";
};

Düşünülenin aksine ‘named.conf’ çoğu durumda örnekte görüldüğü kadar yalın olacaktır. Dosya içeriği aşağıda incelenecektir.

Seçenekler (options) kısmında tanımlanan dizin (directory), adres tanımlarını içeren dosyaların bulunacağı dizindir. Belirtilen tüm dosyalar buradaki dizin altında yer alacaklardır. ‘/var/named’ genellikle bu amaçla en çok kullanılan dizindir.

zone “.”’ tanımı değiştirilmemesi gereken standart bir tanımdır. DNS çözümlemesi kısmında açıklanan üst seviye alan adı sunucularını gösterir, sunucu NS çözümünü yapamadığı alanlar için burada tanımlı olan alan adı sunuculara başvuracaktır. Bu sunucu adreslerinin nereden temin edileceği ilerleyen kısımlarda açıklanacaktır.

‘zone “0.0.127.in-addr.arpa”’ tamımı loopback olarak tabir edilen bilgisayarın kendi kendine bağlanması için gereken adreslerin ters tanımlamaları için gereklidir. Bu tanım da değiştirilmeden tutulmalıldır.

‘zone “ulak.net.tr”’ parantezi ile başlayan kısım anlaşılması gereken en önemli kısımlardan biridir. Örnekte bu, ‘ulak.net.tr’ şeklinde bir alan adı tanımlandığını gösterir. ‘Type’ ise sunucunın alan adı için durumunu belirtir. Örnekte belirtilmiş olan ‘master’ birincil isim sunucusunu göstermektedir. ‘File’ kısmında belirtilen isim ise ‘ulak.net.tr’ için adres IP tanımlamalarını içeren dosyanın adıdır. Örnekte bu dosya ‘/var/named/zone.ulak.net.tr‘ olmaktadır.

Zone “83.140.193.in-addr.arpa” parantezi ile başlayan kısım da bir öncekine benzer şekilde 83.140.193.in-addr.arpa alan adını tanımlamaktadır. Çözümleme kısmında açıklandığı şekilde bu alan adı 193.140.83 ağında bulunan IP adreslerinin isim karşılıklarını bulmak için kullanılacaktır.

‘named.conf’ dosyası BIND’a hangi alanlardan sorumlu olduğu ve bu alanlara ait bilgileri nerede bulacağı gibi parameteri vermektedir. Ancak IP adres karşılıkları bu dosyada işaret edilen veri dosyalarında bulunacaktır. Belirtilen dosya adları tamamen sistem yöneticisinin tercihine kalmıştır ancak sistematik bir yol izlenmesi faydalı olacaktır.

‘named.conf’ dosyasında belirtilen dosyaların içerikleri aşağıda incelenmiştir. Belirtilen dosyaların tamamı ‘/var/named’ altında yer alacktır.

named.root: Bu dosya root-server adı verilen en üst seviyede bulunan alan adı sunucularının isimlerini ve adreslerini içermektedir. Sıklıkla değişmemekle birlikte güncel haliftp://ftp.rs.internic.net adresinden çekilebilir. Bu satırların yazıldığı tarih itibariyle bu dosya şu şekildedir.

; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . "
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: Aug 22, 1997
; related version of root zone: 1997082200
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File


rev.local: Bu dosya 127.0.0 ağına ait olan IP adreslerinin isim tanımlamalarını içermektedir. İçeriği aşağıda verilmiştir. İçeriği ‘rev.193.140.83’ dosyasının açıklanmalarında bulunabilir.

$TTL 86400
@ IN SOA hornet.ulak.net.tr. root.hornet.ulak.net.tr. (
2000042300 ; Serial
28800 ; Refresh
14400 ; Retry
360000 ; Expire
86400 ) ; Minimum
IN NS hornet.ulak.net.tr.

1 IN PTR localhost.

zone.ulak.net.tr: Bu dosya ‘ulak.net.tr’ alan adı altında tanımlı isim adres tanımlamalarını içermektedir. İçeriği aşağıda sunulmuştur.

$TTL 86400
@ IN SOA hornet.ulak.net.tr. root.hornet.ulak.net.tr. (
2000042300 ; Serino
28800 ; Yenileme
14400 ; Tekrar
3600000 ; Süre
86400 ) ; TTL
IN NS hornet.ulak.net.tr.

ulak.net.tr. IN MX 10 efe.ulak.net.tr.
efe IN A 193.140.83.9
truva IN A 193.140.83.13
hornet IN A 193.140.83.91
www IN CNAME efe.ulak.net.tr.


İlk satırda görülen değer daha önce açıklanan TTL değeridir. Bu sunucuya ulaşan istemcilerin sorguladıkları isimleri ne kadar süreyle belleklerinde tutacaklarını gösterir. Bu değerin bilinçsiz olarak değiştirilmesi önerilmez. Çoğu durum için 24 saat uygun bir değerdir. Çok küçük olması DNS trafiğini artıracaktır. Ayrıca 0 yapmaktan kaçınılması gerekir.

İkinci satırın başında görülen ‘@’ alan adını belirten bir kısa gösterimdir, örnekte ‘ulak.net.tr.’nin yerine geçmiştir.

‘@’in yanında görülen ‘IN’, tanımın Internet için bir tanım olduğunu gösterir (Internet haricinde tanımlar yapabilmek mümkün olsa da burada değinilmeyecektir)

SOA, ‘Start of Authority’ anlamına gelir ve alan adı ile ilgili genel tanımları gösterir. Daha sonra gelen ‘hornet.ulak.net.tr.’ sunucunun üzerinde çalıştığı bilgisayarın adı. 'root.hornet.ulak.net.tr.’ ise ilk ‘.’, ‘@’ ile değiştirilmek kaydıyla sunucudan sorumlu kişinin e-posta adresini gösteren tanımlardır.

Sırasıyla verilen serino, yenileme, tekrar ve süre sayısal değerleri sunucu için çeşitli sayaç ve zaman kıstaslarını gösterir. Zaman birimlerinin tamamı saniyedir. Ne anlama geldikleri daha sonra incelenecektir.

Daha sonra görülen ‘NS’ kaydı Name Server (alan adı sunucu) tanımıdır. Her alan adı için en az bir alan adı sunucusu bu şekilde tanımlanmalıdır.

Sonraki satırda ‘ulak.net.tr.’ için tanımlanmış olan ‘MX 10’ kaydı görülmektedir. MX, Mail Exchanger’ı temsil eder ve belirtilen alan adı için posta servisinin çalıştığı bilgisayarın ismini gösterir. 10 ise tercih değeridir. Farklı tercih değerleri içinde en düşük tercih değeri seçilecektir. Buradaki örnek, ‘ulak.net.tr’ alan adına giden mesajların ‘efe.ulak.net.tr’ bilgisayarına yönlendirilmesini sağlar.

Farklı isimlerin yanında olan ‘A’ kayıtları, adres kayıtlarını temsil eder. İsmin hangi IP numarasına karşılık geldiğini gösterir.

Son satırda görülen ‘CNAME’ tanımı ise Canonical Name’den gelir ve bilgisayarlara ikincil isim verilmesini sağlar. Örnekte görülen tanım ‘www.ulak.net.tr’ adresinin ‘efe.ulak.net.tr’ adresi ile aynı olmasını sağlar. ‘A’ kaydına tercih edilmesinin nedeni ‘efe.ulak.net.tr’ tanımı değiştiğinde onu gösteren ‘CNAME’ kayıtlarının da otomatik olarak değişmesidir. Kullanımda bazı problemler yaratabildiği için kullanılması önerilmez. ‘CNAME’ kullanmak yerine farklı ‘A’ tanımları yapmak daha uygundur.

rev.193.140.83: Bu dosya 193.140.83 ağına ait olan IP adreslerinin isim tanımlamalarını içermektedir. İçeriği aşağıda verilmiştir.


$TTL 86400

@ IN SOA hornet.ulak.net.tr. root.hornet.ulak.net.tr. (
2000042300 ; Serino
28800 ; Yenileme
14400 ; Tekrar
360000 ; Süre
86400 ) ; TTL
IN NS hornet.ulak.net.tr.

9 IN PTR efe.ulak.net.tr.
13 IN PTR truva.ulak.net.tr.
91 IN PTR hornet.ulak.net.tr.

Görüldüğü gibi alan adı tanımları hemen hemen standarttır ve bu dosyanın da içerik olarak az önce incelenen dosyadan çok farkı yoktur. Fark yalnızca yeni ortaya çıkan ‘PTR’ kaydıdır, pointer (işaret) anlamına gelir. Örnekler sırasıyla ‘193.140.83.9’un ‘efe.ulak.net.tr’, ‘193.140.83.13’ün ‘truva.ulak.net.tr’ ve 193.140.83.91’in ‘hornet.ulak.net.tr’yi adreslediğini gösterir.

Sıklıkla kullanılan temel kayıtlar iki dosyanın içeriğinin incelenmesi sırasında açıklanmıştır. Ancak burada belirtilmeyen farklı kayıtlar da mevcuttur. Bunların listesi ve açıklamaları daha sonra verilecektir.

SOA kaydında belirtilen parametreler aşağıda detaylı olarak incelenmişlerdir.


Serino:

Sunucudan bilgi alan ikincil isim sunucular tarafından kullanılır. Burada belirtilen değerin ne olduğu gerçekte çok önemli değildir. Önemli olan dosya içeriğinde değişiklik yapıldığında mutlaka artırılması gerektiğidir. İkincil isim sunucular bu değere bakarak alan adı içeriğinin değişip değişmediğine karar verirler.
Genellikle yıl, ay, gün ve gün içinde yapılan değişiklik sayısı şeklinde kullanılır.

Yenileme:
İkincil sunucular için birincil sunucuyu ne kadar aralıkla kontrol edeceğini gösteren değerdir. Örneğimizde bu değer 8 saattir. Her 8 saatte bir ikincil sunucu birincil sunucuda değişiklil yapılıp yapılmadığını kontrol edecektir.
Tekrar:
Eğer ikincil sunucu herhangi bir nedenle birinci sunucuya ulaşmakta sorun yaşarsa tekrar denemek için ne kadar bekleyeceğini gösteren değerdir. Genellikle ‘Refresh’ süresinden daha kısa bir süredir. Örneğimizde 4 saattir.
Süre:
Bu kısım oldukça önemlidir. İkincil sunucunun birincil sunucuya ulaşamadığı durumlarda kendisinde bulunan verinin ne kadar daha doğru kabul edildiğini gösterir. Bu süreden sonra ikincil sunucu çağrılara cevap vermeyi keser. 1 haftadan kısa olması kesinlikle önerilmez. ‘Refresh’ ve ‘Retry’ değerlerinden çok daha büyük olmalıdır.
TTL:
Daha önce açıklanan TTL (Time to live) değeridir. İlk satırda ‘$TTL’ ile belirtilenden farkı BIND 8.2.1 ile birlikte buradaki değerin yalnız negatif TTL olarak kullanılmasıdır. Negatif TTL hata veren sorgulamaların bellekte tutulması için geçerli süredir.

4 BIND’ın Çalıştırılması

Daha önce açıklanan konfigürasyon tamamlandıktan sonra, BIND root olarak login olunmuş durumdayken aşağıdaki şekilde çalıştırılır.

[root@hornet /root]# /usr/sbin/ndc start
new pid is 9089
[root@hornet /root]#

Çalışıp çalışmadığını anlamak için aşağıdaki yol izlenebilir.

[root@hornet /root]# ps -aux |grep named
root 9089 0.0 1.4 2568 1808 ? S 09:23 0:00 /usr/sbin/named
root 9131 1.0 0.5 1464 712 pts/2 S 09:23 0:00 grep named
[root@hornet /root]#


Görüldüğü gibi ‘named’ işlemi 9089 process ID'si ile çalışmaya başlamıştır. Herhangi bir hata verip vermediği loglardan kontrol edilmelidir.

[root@hornet /root]# tail /var/log/messages

Apr 24 15:15:30 hornet named[9088]: starting. named 8.2.2-P5 Sun Apr 23 13:45:06 EEST 2000 ^Iilker@hornet.ulakbim.gov.tr:/home/ilker/download/bind/src/bin/named
Apr 24 15:15:30 hornet named[9088]: hint zone "" (IN) loaded (serial 0)
Apr 24 15:15:30 hornet named[9088]: master zone "0.0.127.in-addr.arpa" (IN) loaded (serial 2000042300)
Apr 24 15:15:30 hornet named[9088]: master zone "ulak.net.tr" (IN) loaded (serial 2000042301)
Apr 24 15:15:30 hornet named[9088]: master zone "83.140.193.in-addr.arpa" (IN) loaded (serial 2000042301)
Apr 24 15:15:30 hornet named[9088]: listening on [127.0.0.1].53 (lo)
Apr 24 15:15:30 hornet named[9088]: listening on [193.140.83.91].53 (eth0)
Apr 24 15:15:30 hornet named[9088]: Forwarding source address is [0.0.0.0].1038
Apr 24 15:15:30 hornet named[9089]: Ready to answer queries.
[root@hornet /root]#


NOT: Sistem logları farklı unix turevlerinde farklı dizinlerde bulunabilir. /var/log/messages linux için geçerli log dosyasıdır.

Görüldüğü gibi loglarda bir sorunu gösteren herhangi bir belirti bulunmamaktadır. Alan adı sunucusu sorunsuz olarak çalışmaktadır.


5 DNS Testi - NSLOOKUP

Nslookup alan adı sunucularını test etmek için oldukça etkili bir yazılımdır. Çok detaylı kullanım opsiyonları mevcut olsa da burada detaya girilmeyecektir. Hemen tüm unix sistemlerinde yüklü olarak gelmektedir ayrıca Windows NT üzerinde de yüklü olarak gelir.

Çalışan sunucunun nslookup yardımıyla testi aşağıda gösterilmiştir.


[root@hornet named]# nslookup - 0
Default Server: hornet.ulak.net.tr
Address: 0.0.0.0

> set type=soa
> ulak.net.tr
Server: hornet.ulak.net.tr
Address: 0.0.0.0

ulak.net.tr
origin = hornet.ulak.net.tr
mail addr = root.hornet.ulak.net.tr
serial = 2000042301
refresh = 28800 (8H)
retry = 14400 (4H)
expire = 3600000 (5w6d16h)
minimum ttl = 86400 (1D)
ulak.net.tr nameserver = hornet.ulak.net.tr
hornet.ulak.net.tr internet address = 193.140.83.91
> set type=a
> truva.ulak.net.tr
Server: hornet.ulak.net.tr
Address: 0.0.0.0

Name: truva.ulak.net.tr
Address: 193.140.83.13

>www.ulak.net.tr
Server: hornet.ulak.net.tr
Address: 0.0.0.0

Name: efe.ulak.net.tr
Address: 193.140.83.9
Aliases: www.ulak.net.tr

> set type=ptr
> 9.83.140.193.in-addr.arpa
Server: hornet.ulak.net.tr
Address: 0.0.0.0

9.83.140.193.in-addr.arpa name = efe.ulak.net.tr
83.140.193.in-addr.arpa nameserver = hornet.ulak.net.tr
hornet.ulak.net.tr internet address = 193.140.83.91


İlk satırda görülen, nslookup komutunun alan adı sunucu olarak kendi çalıştığı makinayı kullanacak şekilde çalıştırılmasıdır. Sorgu tipi ‘SOA’ya değiştirilerek (açılışta varsayılan sorgu tipi ‘A’ kaydı sorgusudur) ‘ulak.net.tr’ alan adı için SOA kaydı incelenmiştir. Tüm değerler daha önce tanımlananlarla uyum içerisindedirler. Daha sonra sorgu türü ‘A’ kaydına çevrilmiş ve ‘truva.ulak.net.tr’ için IP adresi bulunmuştur. Veritabanında ‘CNAME’ olarak tanımlanmış olan ‘www.ulak.net.tr’ için yapılan ‘A’ kaydı sorgulaması bu adresin takma ad olarak tanımlandığı ‘efe.ulak.net.tr’ adresini döndürmüştür. Son olarak yapılan ‘PTR’ sorgulamasıyla da 193.140.83.9’un ters tanımı (reverse tanımı) bulunmuştur. Bu da daha önce tanımlanan ‘efe.ulak.net.tr’ şeklindedir.

Nslookup testini genişletilerek devam edilirse;

> set type=a
>www.metu.edu.tr.
Server: hornet.ulak.net.tr
Address: 0.0.0.0

Non-authoritative answer:
Name: www.metu.edu.tr
Address: 144.122.199.13

‘www.metu.edu.tr’ alan adı için ilgili adres döndürülecektir. DNS tanımlarında Türkiye ile herhangi bir tanım olmadığı halde bu işlem nasıl yapılmıştır.

Daha önce açıklandığı şekilde root-server kullanılarak ‘.tr’ alan adından sorumlu suncular bulunmuş ve ardışıl sorgulama ile adrese ulaşılmıştır.

Sorgulamaya aşağıdaki şekilde devam edilsin.

> set norecurse
>www.bilkent.edu.tr.
Server: hornet.ulak.net.tr
Address: 0.0.0.0

Name: www.bilkent.edu.tr
Served by:
- ns1.metu.EDU.tr
144.122.199.90
EDU.tr
- ns2.metu.EDU.tr
144.122.199.93
EDU.tr
- ns.ulak.net.tr

EDU.tr
- firat.bcc.bilkent.EDU.tr
139.179.10.13
EDU.tr

>www.metu.edu.tr.
Server: hornet.ulak.net.tr
Address: 0.0.0.0

Non-authoritative answer:
Name: www.metu.edu.tr
Address: 144.122.199.13

>www.ulakbim.gov.tr.
Server: hornet.ulak.net.tr
Address: 0.0.0.0

Name: www.ulak.net.tr
Served by:
- NS1.METU.EDU.tr
144.122.199.90
tr
- NS2.METU.EDU.tr
144.122.199.93
tr
- MUNNARI.OZ.AU
128.250.1.21
tr
- NS.RIPE.NET
193.0.0.193
tr
- NS1-AUTH.SPRINTLINK.NET
206.228.179.10
tr
- NS.UU.NET
137.39.1.3
tr

‘set norecurse’ komutu daha önce açıkladığımız tekrarlı sorgulama modunu iptal etmiştir. Bu komutu sonraki sorgular tekrarlı olarak yapılmayacaktır.

Tekrarlı sorgu kapatıldıktan sonra bu kez ‘www.bilkent.edu.tr’ için sorgulama yapılmış ancak sunucu cevap olarak ‘.edu.tr’lar için geçerli sunucuları döndürmüştür.

‘www.ulakbim.gov.tr’ alan adı sorgulandığında ise ‘.tr’lar için geçerli sunucular dönmüş ancak ‘www.metu.edu.tr’ için IP karşılığı döndürülmeye devam etmiştir. Bu nasıl olmaktadır ?

Öncelikle tekrarlı sorguyu kapatmadan önce ‘www.metu.edu.tr’ için sorgulama yapıldığı hatırlanmalıdır. Bu sorgulama sırasında sunucumuz bu adres için yaptığı tüm sorguları belleğinde saklamaktadır. Bunlar ‘.tr’ alan adı sunucuları, ‘.edu.tr’ alan adı sunucuları, ‘.metu.edu.tr’ alan adı sunucuları ve ‘www.metu.edu.tr’ adresinin IP numarasıdır. Bu yüzden ‘.edu.tr’ altında bulunan ‘www.bilkent.edu.tr’ sorgulaması yapıldığında bu alan adı hakkında en fazla bilgiye sahip olan ‘.edu.tr’ alan adı sunucuları, ‘.gov.tr’ altında bulunan ‘www.ulakbim.gov.tr’ sorgulaması yapıldığında ise en fazla bilgiye sahip olan ‘.tr’ alan adı sunucuları döndürülmüştür. ‘www.metu.edu.tr’ adresi ise bellekten doğrudan cevaplanmıştır.


6 DNS Kayıtları

Geçerli DNS kayıtlarına daha önce de değinilmişti. Bu kayıtlar örneklerde belirtilenlerden sayıca daha fazladır. Burada daha önce açıklananlarla birlikte detaya girmeden açıklanacaklardır. Halen deneysel durumda olan kayıtlara burada değinilmeyecektir. Tam listesi RFC1035’ten bulunabilir.


A: Adres kaydıdır. İsme karşılık gelen 32 bitlik IP numarası tanımlanır.

Örnek:

marine.ulakbim.gov.tr. IN A 193.140.83.27

CNAME: Takma ad kaydıdır. Takma ad tanımlanır.

Örnek:

ilker.ulakbim.gov.tr. IN CNAME truva.ulakbim.gov.tr.

HINFO: Bilgi kaydıdır, işlemci işletim sistemi tanımlanır.

Örnek:

truva.ulakbim.gov.tr. IN HINFO Ultra10 Solaris

MD: Kullanımdan kalkmıştır. Yerine MX kaydı kullanılır.

MF: Kullanımdan kalkmıştır. Yerine MX kaydı kullanılır.

MX: Posta sunucu kaydı. Alan adı için ilgili posta sunucusunu tanımlar.

Örnek:

ulakbim.gov.tr. IN MX 10 efe.ulakbim.gov.tr.

NS: Alan adı sunucu kaydı. Alan için alan adı sunucularını tanımlar.

Örnek:

ulakbim.gov.tr. IN NS efe.ulakbim.gov.tr

PTR: İşaret kaydı. Ters tanımlamada ismi tanımlar.

Örnek:

9.83.140.193.in-addr.arpa IN PTR efe.ulakbim.gov.tr.

SOA: Sunucunun genel özelliklerini tanımlayan kayıttır. Serial, refresh, retry, expire ve TTL değerlerini alır.

Örnek:

ulakbim.gov.tr. IN SOA efe.ulakbim.gov.tr. root.ulakbim.gov.tr. (
2000042401 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; TTL

TXT: Bilgi kaydı. Kayıt hakkında bilgiyi tanımlar.

Örnek:

ulakbim.gov.tr. IN TXT "Ulusal Akademik Ag ve Bilgi Merkezi"

WKS: Servis kaydı. Çalışan servisleri tanımlar.

Örnek:

truva.ulakbim.gov.tr. IN WKS TCP (ftp, ssh, telnet, smtp)


Bu mesaja 1 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi

asp ve ado birlikteliği

ASP sayfalarında ADO nesnelerini kullanmayı açıklamak.

I. ADO NESNELERİ

Microsoft ActiveX Data Objects (ADO), Visual Basic ya da bir ASP kodu aracılığıyla veritabanlarına bağlantı kurmak ve veriler üzerinde işlem yapmak için geliştirilmiş bir arabirimdir.

3. İstenilen müşterilerin siparişlerini listeleyen bir form (HTML formu dosyası) ve karşılığını (Reponse dosyası) hazırlayın. Müşteri kodu bir açılan kutudan seçilsin. Ardından düğmeye basılarak karşılık sayfasına geçilerek orada tablo olarak müşterinin siparişleri listelensin.



VarMusteri=Request.Form("txtMusterisec")

Set Rs = Server.CreateObject("ADODB.Recordset")

StrSQL ="SELECT * FROM SIPARIS WHERE kodu = " & VarMusteri & ";"

Rs.Open StrSQL, "DSN=musteriler"

ASP uygulamalarının çoğunun amacı veritabanlarına erişmek ya da veritabanı üzerinde işlem yapmaktır. ADO, bir veri sağlayıcı (data provider-OLE DB) aracılığıyla yerel ya da uzak veritabanlarına erişmeyi sağlayan bir veri erişim yöntemidir. ADO hiyerarşik olmayan ve bağımsız olarak kullanılan nesneleriyle verilere kolayca ulaşmayı sağlar. ADO'nun bellek gereksinimi daha azdır. Hızlı bir biçimde çalışarak veritabanı uygulamalarının daha etkin bir biçimde veritabanlarına erişim yapmasına olanak sağlar. DAO ve RDO veri erişim yöntemlerinin yerine geçen gelişmiş bir teknoloji olan ADO, daha kolay ve anlaşılabilir nesnelerle veritabanı işlemlerini sadeleştirir:



A. ADO'YU YÜKLEMEK

ADO, tek başına satılan ve yüklenen bir yardımcı program değildir. ADO, Microsoft Data Access Components (MDAC) adı verilen program grubunun bir parçasıdır. Bilgisayara IIS gibi Web server yazılımı yüklendiğinde ADO'da yüklenmiş olur. Bunun dışında veritabanı uygulamaları ve programlama dillerinin yüklenmesi ADO'yu yükler ya da var olan bileşenleri güncelleştirir.



İPUCU: MDAC'ın en güncel şeklini indirmek içinwww.microsoft.com/data adresinden yararlanabilir.



B. ADO NESNE MODELİ

ADO veri erişim sistemi oldukça basit bir nesne modeline sahiptir. Bu modelde birçok nesne seçimli olarak (birlikte) ya da bağımsız olarak kullanılabilir.



ADO nesneleri RDO nesnelerine benzer ancak oldukça farklıdır. Yalnızca nesne olarak üç nesneye sahip olan nesne modelinde tam olarak yedi nesne ve collection (koleksiyon, topluluk) vardır.



En üst düzey ADO nesnesi Connection'dır. Bu nesne veri kaynağıyla ilgili her türlü iletişimi yerine getirir. Bağlantı nesnesi olan Connection, diğer nesnelerde de olduğu gibi önce tanımlanır ve ardından açılarak kullanılır.



Tablo: ADO modelinde yer alan nesneler

Nesne Amacı

Command Bir veri kaynağı üzerinde bir query ya da deyimi işletir.

Connection Bir veri kaynağına doğrudan bağlantı yaratır.

Error Veri kaynağından bir hatayı döndürür.

Field Bir kayıt içindeki bir alan (kolon).

Parameter Bir komut için parametre tutar.

Recordset Bir komut tarafından üretilen (dönen) verileri içerir.



C. ADO SABİTLERİ

ADO nesne modelindeki nesneleri kullanmak için bazı sabitlerin kullanılması gerekir. Bu sabitler her seferinde tanımlanmaktansa kodun içinde tanımlanarak var olan bir dosyadan yüklenir.



Bu sabitler connection, recordset, adOpenDynamic gibi ADO nesnelerinin ve bileşenlerinin tanımladır.

NOT: Bu dokümanlar Faruk Çubukçu tarafından hazırlanmıştır. Burada adı geçen ticari ünvanlar ve markalar bilgi amaçlı kullanılmışlardır ve kendi imtiyazlarına sahiptirler. Bu dokümanlar ticari amaçlı olarak kullanılmaz. Daha fazla bilgi içinwww.farukcubukcu.com adresine bakınız.



ASP kodlarında yer alan ADO sabitleri, ADOvbs.inc gibi bir dosyanın ASP sayfalarına eklenmesiyle sağlanır.



<!--#include file="ADOvbs.inc"-->



Örnek: ASP'de ADO sabitlerinin yüklenmesi.



<% @Language = VBScript Codepage= 1254 %>

<HTML>

<!-- Kirtasiye Istek formu doldurmak ve veritabanina yazmak-->



<HEAD>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

<!-- yukaridaki iki satir türkçe çikti saglamak için -->



<TITLE> Kirtasiye istek Formu </TITLE>

</HEAD>



<BODY>

<!--#include file="ADOvbs.inc"-->

<%

Dim varMusteriKodu

varMusteriKodu=Request.Form("txtkodu")



Dim Rs

StrSql = "SELECT * FROM MUSTERI"

StrProvider="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\musteriler.mdb"

Set Rs = Server.CreateObject("ADODB.recordset")

Rs.Open StrSql, StrProvider, adOpenDynamic, adLockOptimistic



Rs.Find "kodu = " & varMusteriKodu

If Rs.EOF Then

Response.Write "Girilen kod bulunamadi"

Else

Rs.Delete adAffectCurrent

Response.Write "kayit silinmistir."

End If



Rs.Close

Set Rs=Nothing

%>

</BODY>

</HTML>





D. VERİTABANI BAĞLANTILARI İÇİN HAZIRLIK YAPMAK

ASP uygulamalarında genellikle bir veritabanı dosyasına erişim yapılır. Bu veritabanı dosyası Microsoft Access ya da Microsoft SQL Server üzerinde olabilir. Veritabanlarına bağlanmak için değişik yöntemler vardır. Bunların başında DSN tanımı kullanmak, veritabanının kendi sürücüsünü kullanmak ya da Native OLEDB denen teknik gelir.



DSN Tanımı Yapmak

DSN tanımı ODBC veritabanları için yapılır. ODBC veritabanlarına erişim için bir ODBC DSN (Data Source Name) tanımlanır.



Bir DSN bilgisi şunları içerir:



-DSN adı.

-Başvurduğu (işaret ettiği) dosya.

-Veritabanına erişim için kullanıcı adı ve parola.

-Özel veritabanlarına erişmek için diğer bilgiler.



1. WİNDOWS İŞLETİM SİSTEMLERİNDE ODBC-DSN TANIMI

Visual Basic ile bir veri erişim yöntemi ile ODBC üzerinden bir veritabanına bağlantı kurulması için gerekli DSN (Data Source Name) tanımının yapılması gerekir.



Bu işlem için:

Windows işletim sistemlerinde Control Panel'de yer alan ODBC simgesi kullanılır:



Bu ekranda Add düğmesine tıklanarak yeni bir veritabanı kaynağı seçilir. Ardından hangi tür bir veritabanı için bağlantı yapılacağı ve veritabanının seçimi yapılır.



SQL Server tanımlanmasında Server kutusunda network üzerindeki SQL server seçilir. Name kutusuna ise DSN tanımına bir ad verilir. Bu genellikle erişilecek veritabanın adı ya da konuyla ilgili bir ad olabilir. Örneğin Musteri veritabanına bağlanılacaksa Musteri adlı bir DSN adı verilebilir.



Microsoft Access için ise Select düğmesine tıklanarak veritabanı dosyası seçilir. Örneğin musteri.mdb gibi.



DSN İle Microsoft Access'e ya da SQL Server'a Erişmek:



Set Rs=Server.CreateObject("ADODB.Recordset")

Rs.Open "kirtasiye", "DSN=sirket"



Veritabanı Sürücüsüyle Microsoft Access'e Erişmek:



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")

Con.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\data\sirket.mdb"

Rs.Open "SELECT * FROM musteriler", Con



Native OLEDB İle Microsoft Access'e Erişmek:



OLE DB'nin kullanıldığı erişimlerde DSN gibi, istemci bilgisayarda bir düzenleme yapmaya gerek yok. Microsoft veri erişim bileşenlerinin bulunması yeterlidir.



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")

Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\sirket.mdb"

Rs.Open "SELECT * FROM musteriler", Con



Native OLEDB İle Microsoft SQL Server'a Erişmek:



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")

con.Open "Provider=SQLOLEDB;Data Source=LAB1-2;Database=SiparisYonetim;User Id=USER1;Password=USER1;"

StrSQL = "Select * FROM SIPARIS"

Rs.Open StrSQL, Con



Örnekteki tanımlamalar:



Bağlanılan SQL Server: LAB1-2

Veritabanı: siparisyonetim

Kullanıcı adı: USER1

Parolası: USER1



İPUCU: Yukarıdaki tanımlamalar sizin çalışmanıza göre farklı olabilir. Bir de bu bağlantılar verileri okumak içindir. Verileri yazmak için "adOpenDynamic, adLockPessimistic" imleç ve kilitleme tanımlarının da yapılması gerekir.



E. DATA PROVİDER’I BELİRTMEK

Bağlantıda OLE DB kullanılacaksa, Connection nesnesi başlatıldığında bir OLE DB sağlayıcısının (data provider) belirtilmesi gerekir. Bunu yapmak için Provider özelliği kullanılır.



bağlantı.Provider = "SQLOLEDB"



Tanımlaması SQL SERVER için bir bağlantının tanımlanmasını sağlar.



Tablo : Veri Sağlayıcılar.

OLE DB Provider Açıklama

SQLOLEDB SQL Server için OLE DB sağlayıcısı

MSDASQL ODBC için OLE DB sağlayıcısı

Microsoft.Jet.OLEDB.3.51 Jet (Access) için OLE DB sağlayıcısı

Microsoft.Jet.OLEDB.4.0 Jet (Access) için OLE DB sağlayıcısı

MSIDXS Index Server için OLE DB sağlayıcısı

ADSDSOObject Active Directory Service için OLE DB sağlayıcısı

MSDAORA Oracle için OLE DB sağlayıcısı



Örnek bağlantılar:



Access'e erişmek:



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")



Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\sirket.mdb"

Rs.Open "kirtasiye", Con



Access'e yazmak:



Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")



Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\sirket.mdb"

Rs.Open "kirtasiye", Con, adOpenKeyset, adLockOptimistic





SQL Server'a erişmek:



con.Open "Provider=SQLOLEDB;Data Source=LAB1-2;Database=SiparisYonetim;User Id=sa;Password=;"

StrSQL = "Select * FROM SIPARIS"

Rs.Open StrSQL, Con



SQL Server'a yazmak:



con.Open "Provider=SQLOLEDB;Data Source=LAB1-2;Database=SiparisYonetim;User Id=sa;Password=;"

StrSQL = "Select * FROM SIPARIS"

Rs.Open StrSQL, Con, adOpenKeyset, adLockOptimistic



Örnekteki tanımlamalar:



Bağlanılan SQL Server: LAB1-2

Veritabanı: siparisyonetim

Kullanıcı adı: sa

Parola: yok



Örnek : Veritabanındaki Verileri Listelemek

Aşağıdaki örnekte bir Access veritabanındaki veriler tablo halinde listelenmektedir:



<% @Language = VBScript Codepage= 1254 %>

<HTML>

<!-- tablodan bütün kayitlari okumak ve tablo yaparak ekrana getirmek-->

<HEAD>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

<!-- yukaridaki iki satir türkçe çikti saglamak için -->

<TITLE> Listeleme </TITLE>

</HEAD>

<H1> MALZEME DURUM LISTESI </H1>

<BR>

<BODY>

<%

Set Con = Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.recordset")

Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\malzemeyonetim.mdb"

Rs.Open "SELECT * FROM MALZEME", Con



Response.Write "<TABLE BORDER= '1'>"

Response.Write "<TR> <TD>" & "<B>" & "MKODU" & "</B>" & "</TD> <TD>" & "MADI" & "</TD> <TD>" & "MGRUBU" & "</TD> </TR>"



Do While Not Rs.Eof

Response.Write "<TR> <TD>" & Rs("MKODU") & "</TD> <TD>" & Rs("MADI") & "</TD> <TD>" & Rs("MGRUBU") & "</TD> </TR>"

Rs.MoveNext

Loop

Response.Write "</TABLE>"

Rs.Close

%>

</BODY>

</HTML>





II. UYGULAMALAR

1. Microsoft Access kullanarak bir şirket veritabanı yaratın. Bu veritabanında bir müşteri tablosu yaratın. Alanları: kodu, adisoyadi, adresi, ili, borcu vb. olsun.



2. Müşterileri alfabetik olarak listeleyen bir sayfa hazırlayın.



İpucu:



Set Rs = Server.CreateObject("ADODB.Recordset")

StrSQL ="SELECT * FROM MUSTERI ORDER BY adisoyadi"

Rs.Open StrSQL, "DSN=musteriler"

...


Bu mesaja 1 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi


Visual Basic'de RGB Fonksiyonunun Kullanımı


Visual Basic'de RGB fonksiyonu Red(Kırmızı),Green(Yeşil), ve Blue(Mavi) Kelimelerinin Kısaltımış halidir.Sizinde anlayacağınız gibi 16Milyon renk Kırmızı,Yeşil ve Mavi'nin karışımından oluşturuluyor.

Visual Basic'de RGB Fonksiyonunun Kullanımı
Visual Basic'de RGB fonksiyonu Red(Kırmızı),Green(Yeşil), ve Blue(Mavi) Kelimelerinin Kısaltımış halidir.Sizinde anlayacağınız gibi 16Milyon renk Kırmızı,Yeşil ve Mavi'nin karışımından oluşturuluyor.
Herbiri 0 ile 255 arasındaki bir değer alarak toplam değeri 256'ya tamamlanır.
Yani Formulüze edersek;
Red(Kırmızı) 0 + 255 = 256
Green(Yeşil) 0 + 255 = 256
Blue(Mavi) 0 + 255 = 256

Diğer bir deyişle R(256)* G(256)*B(256) = 16777216'dır(Toplam Renk Sayısı)
NOT:Kırmızının toplam değeri ile Yeşil ve Mavinin değerleri çarpma işlemine tabii tutularak
Toplam renk sayısı elde edilmiş oluyor.
Örnek olarak Kullanıcının kırmızı,yeşil,ve mavi renklerinin karışımından oluşacak 16 milyon renk tonundan birini seçmesini ve bu renk tonunu bir metin kutusunun arkaplan rengi olarak kullanmasını sağlayalım.Örnekteki Text1.backcolor değerini Text1.Forecolor olarak değiştirirseniz aynı işlemi bu seferde metin kutusunun yazı rengini değiştirmek için kullanabilirsiniz.

Örnek: Örneğimiz için 1 tane textbox(Text1),3 tanede Dikey Scrollbar yerleştirin.İsimleri Vscroll1, VScroll2 ve Vscroll3 olsun.

Private Sub Form_Load()'Formun Load olayına Eklenecek
Vscroll1.Max = 255'Kırmızı
Vscroll2.Max = 255'Yeşil
Vscroll3.Max = 255'Mavi
End Sub


Private Sub VScroll1_Change()
Text1.BackColor = RGB (VScroll1.Value, VScroll2.Value, VScroll3.Value)
'Text1 metin kutusunun arkaplan renkleri Scrollbarların değerlerine eşitleniyor
'Böylece 3 Scrollbardaki renkkodlarından ortaya çıkan renktonu text1in arkaplanrengine aktarılıyor.
End Sub

Private Sub VScroll2_Change()
Text1.BackColor = RGB (VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub

Private Sub VScroll3_Change()
Text1.BackColor = RGB (VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub


Bu mesaja 2 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi

Winsock Kullanımı

Winsock Kullanımını Öğrenmek için bir bakın. Client ve Server kodları dahil

Winsock nesnesi sunucu ve istemci şeklinde çalışır hazırlanmış program ya sunucu modunda yada istemci modundadır.
Öncelikle Sunucu kısmını inceleyelim

frmserver adında bir form ekleyelim , form üzerine bir winsock nesnesi ekleyelim ve adını tcpServer olarak değiştirelim,ayrıca ConnectStatus adında bir label ekleyelim , şimdi Formun Load olayına aşağıdaki kodları yazarak Winsock nesnesini bir sunucu olarak konfigüre edelim.


'#################################################
' LocalPort değerini integer olarak belirliyoruz.
' Ve Dinleme Methoduyla çağrı moduna çeviriyoruz.
tcpServer.LocalPort = 1001
tcpServer.Listen
ConnectStatus.Caption = tcpServer.State ' Bu şekilde gelen çağrılara verilen cevapları görebiliriz.
'#################################################

Artık programımız bir Sunucu olarak çalışmaya hazır şimdi gelecek olan isteklere cevap vermesi için Winsock nesnesini düzenlememiz gerekiyor.

Winsock nesnesini çift tıklayıp ConnectionRequest yordamını yaratalım bu yordamın tamamı şu şekilde görünmeli


'#################################################
Private Sub tcpServer_ConnectionRequest (ByVal requestID As Long)
' Öncelikle bağlantının kapalı olduğu kontrol ediliyor, eğer kapalı değil ise
' Yeni bağlantı öncesinde kapatılıyor.

If tcpServer.State <> sckClosed Then tcpServer.Close
' Gelen çağrı kabul ediliyor
tcpServer.Accept requestID
End Sub
'#################################################


Artık sunucumuz gelen bağlantıları kabul edecek durumda şimdi gönderilen bilgileri almasını sağlayalım, Bunun için Winsock nesnesinin DataArrival yordamını kullancağız.


'#################################################
Private Sub tcpServer_DataArrival (ByVal bytesTotal As Long)
' Gelen verileri aktarmak için önce bir değişken tanımlıyoruz değişkenimizin adı Strdata
' StrData değişkeni Clientten gönderilen bilgileri saklamak amacıyla kullanılacak

Dim strData As String ' Değişken String olarak tanımlandı
tcpServer.GetData strData
txtOutput.Text = strData
End Sub
'#################################################



Ve artık sunucu programı verieri almaya hazır gönderilen veriler StrData değişkenine aktarılacak.


Client (İstemci Programı)

Önce frmclient adında bir form oluşturalım bu formun üzerine cmdconnect adında bir button tcpclient adında bir Winsock nesnesi ve bir txtsend adında TextBox koyalım.

Önce bağlanacağımız Sunucunun IP adresini belirtmemiz gerekiyor, bunun için Formun load olayına şu satırları ekliyoruz


tcpclient.RemoteHost = "10.1.0.20" ' Sunucunun IP adresi
tcpclient.RemotePort = 1001 ' Port numarası


şimdi Connect butonuna bastığımızda sunucuya bağlanmasını sağlayacak kodu yazalım


tcpclient.Connect ' Bağlan emri veriliyor


bu şekilde karşıdan onay geldiği anda bağlantı kurulur şimdi verileri göndermek için TXTSend nesnesini düzenleyelim, Textbox nesnesinin Change olayı aşağıdaki gibi olmalı


Private Sub txtSendData_Change()
tcpclient.SendData txtsend.Text
End Sub


Sunucumuzunda gelen verileri kabul etmesi gerekir bu nedenle DataArrival yordamını oluşturmalıyız.


Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
tcpclient.GetData strData
txtoutput.Text = strData ' TxtOutput gelen verileri ekrana yansıtmak için bir textbox nesnesi olsun
End Sub


ve artık hem sunucumuz hem clientımız veri alıp vermeye hazır.



N
20 yıl
Binbaşı
Konu Sahibi

Formunuza tek satır kod ile açılış ve kapanış efektleri ekleyebilirsiniz.

Burada vereceğim kodlarla ile formunuzuna açılış ve kapanış efektleri ekleyebilirsiniz.


Şimdi bu kodları nasıl kullanacağız, ona bakalım.

* Aslında ben zaten gerekli tüm açıklamayı kodların içine yazdım ancak yine de burada bir açıklama yapayım.

1. Formunuza (adı Form1 olsun) sadece 1 adet timer ekleyin. (adı Timer1 olsun)

2. Kodların kullanımı çok basittir. Tek satır kod! ---> efekt_adi parametreler
Gelelim efektlere ve kullanım şekillerine,

-
FORM AÇILIŞLARI
-
Sağa Aç (Form Açılışı)
Kullanımı: SagaAc 5000, 5
5 milisaniyede bir formu +50 uzatır. (5000'e kadar.)
Buradaki 5 milisaniyeyi ve 5000'i değiştirebilirsiniz.
-
Aşağıya Aç (Form Açlışı)
Kullanımı: AsagiyaAc 5000, 5
5 milisaniyede bir formu asağıya doğru uzatır. (5000 olana kadar.)
Buradaki 5 milisaniyeyi ve 5000'i değiştirebilirsiniz.
-
Köşeye Aç (Form Açılışı)
Kullanımı: KoseyeAc 5000, 4000, 5
5 milisaniyede bir formu büyütür. (5000x4000 olana kadar.)
Buradaki 5 milisaniyeyi, 5000'i ve 4000'i değiştirebilirsiniz.
-

FORM AÇILIŞARININ DAHA KOLAY 2. VERSİYONLARI
-
Buradaki kolaylık, formunuza efektli açılış eklerken 3000'le 4000'le
istediğiniz ayarı tutturmak zor oluyorsa siz sadece formu istediğiniz
büyüklüğe getirin, kodu yazın ve açılış hızını ayarlayın ve böylece
otomatik olarak ayarladığınız büyüklüğe doğru form efektli bir şekilde
açılacaktır. Daha kolay bir yöntem değil mi?
-
Sağa Aç 2 (Form Açılışı)
Kullanımı: SagaAc2 5
Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
formu anında küçücük yapar ve sonra eski haline doğru büyütür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-
Aşağıya Aç 2 (Form Açılışı)
Kullanımı: AsagiyaAc2 5
Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
formu anında küçücük yapar ve sonra eski haline doğru büyütür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-
Köşeye Aç 2 (Form Açılışı)
Kullanımı: KoseyeAc2 5
Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
formu anında küçücük yapar ve sonra eski haline doğru büyütür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-

FORM KAPANIŞLARI
-
Sola Kapa (Form Kapanışı)
Kullanımı: SolaKapa 5
5 milisaniyede bir formu sola doğru küçültür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-
Aşağıya Kapat (Form Kapanışı)
Kullanımı: AsagiyaKapa 5
5 milisaniyede bir formu yukarı doğru küçültür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
YUKARIDAKİ BAZI KOMUTLARIN DAHA KOLAY 2. VERSİYONLARI
-
Köşeden Kapat (Form Kapanışı)
Kullanımı: KosedenKapat 5
5 milisaniyede bir formu küçültür.
Buradaki 5 milisaniyeyi değiştirebilirsiniz.
-



KOMUTLARI ÖZETLERSEK
-
Milisaniye olarak 5 ve boyut olarak 5000 kabul edelim.

* Açılışlar
SagaAc 5000, 5
AsagiyaAc 5000, 5
KoseyeAc 5000, 4000, 5

* Boyutsuz Açılışlar
SagaAc2 5
AsagiyaAc2 5
KoseyeAc2 5

* Kapanışlar
SolaKapa 5
AsagiyaKapa 5
KosedenKapat 5


SON OLARAK

Şimdi aşağıdaki kodları forma aynen kopyala/yapıştır yapalım. Hadi kolay gelsin!


'******************** - KOD BAŞLANGICI - ********************

'Bu kodların tamamını Furkan Omay yazmıştır.

'Formunuza sadece bir timer ekleyin ve
'Form_Load olayına istediğiniz bir efektin komutunu yazınız.

'Bu kodlarla birçok form'a açılış ve kapanış
'efekti ekleyebilirsiniz.

'Hız olarak 1-100 girmeniz uygun olacaktır.

'Not: Timer ve Form adını değiştirecekseniz,
'kodlarda da gerekli düzenlemeyi yapınız.

'Kullanabileceğiniz efektkerin tam listesi aşağıda!

'********************EFEKT LİSTESİ********************
'Sağa Aç (Form Açılışı)
'Kullanımı: SagaAc 5000, 5
'5 milisaniyede bir formu +50 uzatır. (5000'e kadar.)
'Buradaki 5 milisaniyeyi ve 5000'i değiştirebilirsiniz.
'-
'Sola Kapa (Form Kapanışı)
'Kullanımı: SolaKapa 5
'5 milisaniyede bir formu sola doğru küçültür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'Köşeye Aç (Form Açılışı)
'Kullanımı: KoseyeAc 5000, 4000, 5
'5 milisaniyede bir formu büyütür. (5000x4000 olana kadar.)
'Buradaki 5 milisaniyeyi, 5000'i ve 4000'i değiştirebilirsiniz.
'-
'Köşeden Kapat (Form Kapanışı)
'Kullanımı: KosedenKapat 5
'5 milisaniyede bir formu küçültür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'Aşağıya Aç (Form Açlışı)
'Kullanımı: AsagiyaAc 5000, 5
'5 milisaniyede bir formu asağıya doğru uzatır. (5000 olana kadar.)
'Buradaki 5 milisaniyeyi ve 5000'i değiştirebilirsiniz.
'-
'Aşağıya Kapat (Form Kapanışı)
'Kullanımı: AsagiyaKapa 5
'5 milisaniyede bir formu yukarı doğru küçültür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'YUKARIDAKİ BAZI KOMUTLARIN DAHA KOLAY 2. VERSİYONLARI
'-
'Köşeye Aç 2 (Form Açılışı)
'Kullanımı: KoseyeAc2 5
'Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
'formu anında küçücük yapar ve sonra eski haline doğru büyütür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'Sağa Aç 2 (Form Açılışı)
'Kullanımı: SagaAc2 5
'Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
'formu anında küçücük yapar ve sonra eski haline doğru büyütür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'Aşağıya Aç 2 (Form Açılışı)
'Kullanımı: AsagiyaAc2 5
'Formunuzu ilk önce boyutlandırın ve bu kod otomatik olarak
'formu anında küçücük yapar ve sonra eski haline doğru büyütür.
'Buradaki 5 milisaniyeyi değiştirebilirsiniz.
'-
'********************EFEKT LİSTESİ SONU********************
Public yapilacak, limit, limit2, eski, eski2 As Integer

Public Sub SagaAc(Ne_Kadar As Long, Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 1
limit = Ne_Kadar
Form1.Width = 1
Timer1.Enabled = True
End Sub

Public Sub SolaKapa(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 2
Timer1.Enabled = True
End Sub

Public Sub KoseyeAc(Ne_Kadar_Asagi As Long, Ne_Kadar_Saga As Long, Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 3
limit = Ne_Kadar_Asagi
limit2 = Ne_Kadar_Saga
Form1.Width = 1
Form1.Height = 1
Timer1.Enabled = True
End Sub

Public Sub KosedenKapat(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 4
Timer1.Enabled = True
End Sub

Public Sub KoseyeAc2(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 3
limit = Form1.Height
limit2 = Form1.Width
Form1.Height = 1
Form1.Width = 1
Timer1.Enabled = True
End Sub

Public Sub SagaAc2(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 1
limit = Form1.Width
Form1.Width = 1
Timer1.Enabled = True
End Sub

Public Sub AsagiyaAc(Nereye_Kadar As Integer, Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 5
limit = Nereye_Kadar
Form1.Height = 1
Timer1.Enabled = True
End Sub

Public Sub AsagiyaAc2(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 5
limit = Form1.Height
Form1.Height = 1
Timer1.Enabled = True
End Sub

Public Sub AsagiyaKapa(Hiz As Integer)
Timer1.Interval = Hiz
yapilacak = 6
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Select Case yapilacak

Case Is = 1
If Form1.Width < limit Then
Form1.Width = Math.Round(Form1.Width + 50)
Else
yapilacak = 0
Timer1.Enabled = False
End If

Case Is = 2
eski = Form1.Width
If Form1.Width > 5 Then
Form1.Width = Math.Round(Form1.Width - 50)
Else
End
End If
If Form1.Width = eski Then
End
End If

Case Is = 3
If Form1.Height < limit Then
Form1.Height = Math.Round(Form1.Height + 50)
Else
If Form1.Width >= limit2 Then
Timer1.Enabled = False
End If
End If
If Form1.Width < limit2 Then
Form1.Width = Math.Round(Form1.Width + 50)
Else
If Form1.Height >= limit Then
Timer1.Enabled = False
End If
End If

Case Is = 4
eski = Form1.Width
eski2 = Form1.Height
If Form1.Width > 5 Then
Form1.Width = Math.Round(Form1.Width - 50)
Else
If Form1.Height <= 5 Then End
End If
If Form1.Height > 5 Then
Form1.Height = Math.Round(Form1.Height - 50)
Else
If Form1.Width <= 5 Then End
End If
If Form1.Width = eski And Form1.Height = eski2 Then
End
End If

Case Is = 5
If Form1.Height < limit Then
Form1.Height = Math.Round(Form1.Height + 50)
Else
Timer1.Enabled = False
End If

Case Is = 6
eski = Form1.Height
If Form1.Height > 5 Then
Form1.Height = Math.Round(Form1.Height - 50)
Else
End
End If
If Form1.Height = eski Then
End
End If

Case Else
yapilacak = 0
Timer1.Enabled = False
End Select

End Sub
'******************** - KOD SONU - ********************

Şimdi Form_Load olayı ya da başka bir yere istediğiniz komutu yazarak formunuza hava katabilirsiniz.
Bu kodlar kısaltılabilir ya da içerisinden sadece kullanılacak efekt alınabilir.


Bu mesaja 1 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi

Kıssadan Hisse Asp Kodlar ve Örnekleri


Kod:
Bu inc.asp olsun
<%
const title = "www.donanimhaber.com Bizim İşimiz" 'Burada başlık belirliyoruz
Const meta = "dizayn host asp vb visual" 'burada metaları belirliyoruz
%>

buda default.asp olsun
<title><%=title%></title>
<meta name="keywords" content="<%=meta%>">

veri tabanı bağlantısı

Kod:
<%
vt_yol = Server.MapPath("db/verilerim.mdb" )
Set ObjCon = Server.CreateObject("ADODB.Connection" )
ObjCon.Open "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & vt_yol & ";"
%>
Jmail ile mail gönderme
mail gönderme Jmail ile
bir form hazırlaycaksın.. kutucuklara isim vereceksin..
gönderim metodunu her zaman post sec..örnek
Kod:
<form method="POST" action="mailgonder.asp">


formdan gelen bilgileri böyle alacaksın..
bu dosya adı mailgonder.asp olsun
Kod:

<%
ad = Request.Form ("ad")
tel = Request.Form ("tel")
mail = Request.form ("mail")
baslik = Request.Form ("baslik")
mesaj = Request.Form ("mesaj")

gidecek = " " & ad & " şahıs size siteden mail atmıştır.<br>Şahısın iletişim adresi aşağıdaki gibidir.<br><b>Adı

Soyadı:</b> " & ad & " <br><b>Mail Adresi:</b> " & mail & " <br><b>Telefon:</b> " & tel & " <br><b>Mesaj Başlığı:</b> " &

baslik & " <br><b>Mesajı:</b> " & mesaj & " <br> "

CONST infMailSunucu = "mail.donanimhaber.com
CONST infMailKullaniciAdi = "info"
CONST infMailSifre = "123456789"
CONST infMailYollayan = "info@donanimhaber.com"

SET objMail = Server.CreateObject("JMail.Message" )
With objMail
.ContentType = "text/html"
.CharSet = "ISO-8859-9"
.AddRecipient mail
.From = infMailYollayan
.MailServerUserName = infMailKullaniciAdi
.MailServerPassWord = infMailSifre
.Logging = True
.Silent = True
.Subject = baslik
.Body = gidecek
.Send(infMailSunucu)
End With
SET objMail = Nothing
%>


Veri tabanından kayıt çekelim

Veri tabanından kayıt çekme

<%
Set ObjRs = Server.CreateObject ("ADODB.RecordSet")
StrSql = ("SELECT top 5 * FROM tablo_adi order by id asc") 'burada top 5 son 5 kayıt sıralar asc yukrıdan aşağıya desc

aşağıdan yukarıya
ObjRs.Open StrSql, ObjCon, 1, 3
%>
<%
if ObjRs.RecordCount = 0 then
Response.Write "Kayıt yok!" 'Eğer kayıt yoksa bu uyarı gelir
Else
%>
<%
Do While not ObjRs.Eof
%>
<%=ObjRs("resim")%><br>
<%

ObjRs.Movenext
Loop
%>
<% End If %>


birde mesela bir kategorilerin var.. menu.asp de.. bunu default.asp de çıkartmak istiyorsun...



Kod:

<!--#include file="inc.asp"-->


ama bunu hangi tabloda çıkartmak istiyorsan orada yap..
Kategorileme
haa birde kategorileme yapalım..
veri tabanında id, kategori bölümleri var sayalım
Kod:

'Veri tabanı açtım var sayalım
'Recordseti açalım
'Döngüye gir
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=git.asp?ID=<%=ObjRs("id")%>" data-href="git.asp?ID=<%=ObjRs("id")%>"><%=ObjRs("kategori")%></a><br>
'Döngüyü bitir
Recordseti kapat



şimdi birde git.asp yapalım

Kod:

id = Request.QueryString ("id")
'Gerekli prosedürler falan
.
.



Kayıt ekleme


kayıt ekleme ise bir form hazılıyorsun gene mail göndermede gibi..ondan sonra eklenecek şeyleri request.form ile belirliyorsun.. buna bir örnek..

Kod:

<%
ad = Request.Form ("ad")
tel = Request.Form ("tel")
fax = Request.Form ("fax")
mail = Request.Form ("mail")


if adres = "" or ad = "" then
Response.Write "Lütfen alanları eksiksiz ve tam doldurunuz"
Else

Set teslim = Server.CreateObject ("ADODB.RecordSet")
StrSql = ("Select * from tablo_adi")
teslim.Open StrSql, ObjCon, 1, 3
teslim.AddNew 'Bu yeni kayıt nesnesidir Ama kayıtları değiştireceksen yine form aynı ama bu satır olmayacak yoksa yeni eklenir
teslim("ad") = ad
teslim("tel") = tel
teslim("fax") = fax
teslim("mail") = mail
teslim.Update
Response.Write "Bilgiler Eklenmiştir."
end if
%>


Sub olayları

birde böyle ufak tefek sub olayları var.. çok işe yarar.. örnek kodlar.. sayfa sub.asp olsun

Kod:

<%
if request ("page") = "" then
call default
elseif request ("page") = "hakkimizda" then
call hakkimizda
elseif request ("page") = "sozlesme" then
call sozlesme
elseif request ("page") = "odeme" then
call odeme
end if
%>
<% Sub default %>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp" data-href="sub.asp">Ana Sayfa</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?page=hakkimizda" data-href="sub.asp?page=hakkimizda">Hakkimizda</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?page=sozlesme" data-href="sub.asp?page=sozlesme">Sözleşme</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?odeme" data-href="sub.asp?odeme">Ödeme</a><br>

Ana Sayfadasınız

<% End Sub %>

<% Sub hakkimizda %>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp" data-href="sub.asp">Ana Sayfa</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?page=hakkimizda" data-href="sub.asp?page=hakkimizda">Hakkimizda</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?page=sozlesme" data-href="sub.asp?page=sozlesme">Sözleşme</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?odeme" data-href="sub.asp?odeme">Ödeme</a><br>

Hakkimizda Sayfadasınız

<% End Sub %>

<% Sub sozlesme %>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp" data-href="sub.asp">Ana Sayfa</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?page=hakkimizda" data-href="sub.asp?page=hakkimizda">Hakkimizda</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?page=sozlesme" data-href="sub.asp?page=sozlesme">Sözleşme</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?odeme" data-href="sub.asp?odeme">Ödeme</a><br>

sozleşme Sayfadasınız

<% End Sub %>

<% Sub odeme %>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp" data-href="sub.asp">Ana Sayfa</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?page=hakkimizda" data-href="sub.asp?page=hakkimizda">Hakkimizda</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?page=sozlesme" data-href="sub.asp?page=sozlesme">Sözleşme</a><br>
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=5082160&url=sub.asp?odeme" data-href="sub.asp?odeme">Ödeme</a><br>

Ödeme Sayfadasınız

<% End Sub %>

Kayıt silme

KAYIT SİLME
Mesela hazırladığınız admin bölümündeki bir başlığı silmek istiyorsunuz.. Admin panelinde şöyle bir linke tıkladınız.
sil.asp?ID=2565
bundan sonraki olacak olaylar ve kodları aşağıdaki gibidir.
Kod:
<%
ID = Request.QueryString ("ID") 'Stringi alıyor
Set ObjSil = Server.CreateObject ("ADODB.RecordSet")
StrSql = ("Delete From tablo_adi where ID = " & ID & "")
ObjSil.Open StrSql, ObjCon, 1, 3
if ID = "" then 'ID boş ise sayfaya yönlendirecek
Response.Redirect Request.ServerVariables ("HTTP_REFERER")
Else
'Eğer ID dolu ve işlem yapıldıysa silind yazısı gelir ve tekrar önceki sayfaya döner
Response.Write "Silindi"
Response.Redirect Request.ServerVariables ("HTTP_REFERER")
End if
%>


Operatorler

Birazda operatörlerden bahsedelim.

Kod:

dim a,b,c,Topla
a = 2
b = 3
c = 4
Topla = a + b + c
Response.Write Topla





Bu kodun sonucunda 9 çıkar.

Diğer Operatör işlemleri

Topla +
Çıkarma -
Bölme /
Çarpma *
Tam bölme \
Mod alma Mod


Hata arama


HATALARLA BAŞ EDİLEMEZ
her programcı gibi bizde hata yapabilirz ama bu bizi durduramaz.. hata olsa bilse programamız işlemeye devam edecek

Kod:
<% On Error Resume Next %>


ama sonunda size asla tam sonuç vermeyebilir.. sadece hatayı atlar ama hatları düzeltmez..

BAZI SERVER NESNELERİ

Bazen döngülerimiz sonsuzagidebilir ama serverimızın bize tanıdığı süre 90 saniyedir. eğer döngüleriniz 90 saniyeden süreceğini biliyorsanız bu süreyi uzatabilirsiniz..
Kod:
<% Server.ScriptTimeout = 100 %>




ama asla bu kadar uzun süre bir döngü ziyaretçeyi sıkabilir..


Server değişkenleri

SERVER DEĞİŞKENLERİ
ALL_HTTP HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adlarının önünde "HTTP_" öneki vardır.
ALL_RAW HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adları ve değerleri istemci Browser'ın verdiği şekilde gösterilir.
APPL_MD_PATH Web Server'ın ISAPI.DLL dosyası için varsaydığı kök dizin
APPL_PHYSICAL_PATH Web Server'ın varsaydığı kök dizinin gerçek yolu
AUTH_PASSWORD Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan parola
AUTH_TYPE Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan yetkilendirme yöntemi
AUTH_USER Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanıcı adı
CERT_COOKIE Kullanıcı siteye bağlanmak için yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik (ID)
CERT_FLAGS Sertifikanın varlığını gösteren bit değeri
CERT_ISSUER Sertifika varsa veren kurum
CERT_KEYSIZE Secure Socket Layers kullanılıyorsa, bağlantı için anahtar değeri
CERT_SECRETKEYSIZE Ö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önderdiği bilgi yumağının boyutu
CONTENT_TYPE Ziyaretçiden gelen bilgilerin GET veya POST metoduna göre edindiği tür
GATEWAY_INTERFACE Web Server'ın ziyaretçi ile etkileşim arayüzünün adı ve sürümü. Genellikle: CGI/1.1
HTTPS Ziyaretçi ile bağlantı güvenli ise ON, değilse OFF
HTTPS_KEYSIZE Secure Sockets Layer için bağlantı anahtar sayısı
HTTPS_SECRETKEYSIZE Özel Server sertifikasının gizli anahtar sayısı
HTTPS_SERVER_ISSUER Özel Server sertifikasının veren merci
HTTPS_SERVER_SUBJECT Özel Server sertifikasının konusu
INSTANCE_ID Web Server'ın aynı anda kaç kere çalışmakta olduğu
INSTANCE_META_PATH Şu anda çalışmakta olan Web Server'ın Meta yolu
LOCAL_ADDR İstemcinin IP numarası
LOGON_USER İstemci Windows NT sisteminde ise oturum açma adı
PATH_INFO Çalışmakta olan ASP'nin göreli yolu ve adı
PATH_TRANSLATED Çalışmakta olan ASP'nin gerçek yolu ve adı
QUERY_STRING İstemcinin gönderdiği bilgi kümesi
REMOTE_ADDR İstemcinin Host'unun (ISS'inin) IP'si
REMOTE_HOST İstemcinin Host'unun (ISS'inin) adı
REMOTE_USER İstemcinin gerçek adı
REQUEST_METHOD İstemciden bilgi isteme yöntemi (GET veya POST)
SCRIPT_NAME Ç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üvenli ise 1, değilse 0
SERVER_PROTOCOL Server'ın çalıştırdığı HTTP'nin sürümü
SERVER_SOFTWARE Server programının adı ve sürümü
URL Şu anda geçerli URL


FSO Upload Scripti



Netde gezerken bulduğum FSO Upload Scripti..


Kod:

------------ UploadForm.htm----------------

<FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="Upload.asp">
Dosya:<INPUT NAME="dosya" TYPE="file" size="25"><BR>
<INPUT TYPE="submit" Value="Kaydet">
</FORM>
------------
Bu kod üzerinde sadece 4.satirda Yol isimli degiskende yüklenecek klasörü belirleyin. Sondaki \ isaretini ise kaldirmayin.
-----------Upload.asp--------
<%
Set Yukle = New DosyaYukleme

Yol = Server.Mappath("dosyalar")&"\"

DosyaIsmi = Yukle.FileName (" dosya ")

Set FSO = Server.CreateObject("Scripting.FileSystemObject" )

Set YeniDosya = FSO.CreateTextFile(Yol & DosyaIsmi)

For i = 1 To LenB(Yukle.Value("dosya" ))
YeniDosya.Write Chr(AscB(MidB(Yukle.Value("dosya" ), i, 1)))
Next


YeniDosya.Close
Set YeniDosya = Nothing
Set FSO = Nothing

Set Yukle = Nothing
%>
Yüklendi.
<!-- ***** Bu bölümden asagisini degistirmeyin. **** -->
<%
Class DosyaYukleme

Private pvObjUploadRequest

Private Sub Class_Initialize
Dim RequestBin, Boundary, Value
Dim lngPosBegin, lngPosEnd, lngBoundaryPos
Dim lngPos, lngPosFile, lngPosBound
Dim strName, strFileName, strContentType
Dim objUploadControl


Set pvObjUploadRequest = Server.CreateObject("Scripting.Dictionary" )


RequestBin = Request.BinaryRead(Request.TotalBytes)


lngPosBegin = 1
lngPosEnd = InStrB(lngPosBegin, RequestBin, GetByteString(Chr(13)))
Boundary = MidB(RequestBin, lngPosBegin, lngPosEnd - lngPosBegin)
lngBoundaryPos = InstrB(1, RequestBin, Boundary)


Do Until (lngBoundaryPos = InstrB(RequestBin, Boundary & getByteString("--" )))

Set objUploadControl = CreateObject("Scripting.Dictionary" )


lngPos = InstrB(lngBoundaryPos, RequestBin, GetByteString("Content-Disposition" ))
lngPos = InstrB(lngPos, RequestBin, GetByteString("name=" ))
lngPosBegin = lngPos + 6
lngPosEnd = InstrB(lngPosBegin, RequestBin, GetByteString(Chr(34)))
strName = LCase(GetString(MidB(RequestBin, lngPosBegin, lngPosEnd - lngPosBegin)))
lngPosFile = InstrB(lngBoundaryPos, RequestBin, GetByteString("filename=" ))
lngPosBound = InstrB(lngPosEnd, RequestBin, Boundary)


If lngPosFile <> 0 AND lngPosFile < lngPosBound Then

lngPosBegin = lngPosFile + 10
lngPosEnd = InStrB(lngPosBegin, RequestBin, GetByteString(Chr(34)))
strFileName = GetString(MidB(RequestBin, lngPosBegin, lngPosEnd - lngPosBegin))


objUploadControl.Add "FileName" , strFileName
lngPos = InStrB(lngPosEnd, RequestBin, GetByteString("Content-Type:" ))
lngPosBegin = lngPos + 14
lngPosEnd = InStrB(lngPosBegin, RequestBin, GetByteString(Chr(13)))


strContentType = GetString(MidB(RequestBin, lngPosBegin, lngPosEnd - lngPosBegin))
objUploadControl.Add "ContentType" , strContentType


lngPosBegin = lngPosEnd + 4
lngPosEnd = InstrB(lngPosBegin, RequestBin, Boundary) - 2
Value = MidB(RequestBin, lngPosBegin, lngPosEnd - lngPosBegin)
Else

lngPos = InstrB(lngPos, RequestBin, GetByteString(Chr(13)))
lngPosBegin = lngPos + 4
lngPosEnd = InStrB(lngPosBegin, RequestBin, Boundary) - 2
Value = GetString(MidB(RequestBin, lngPosBegin, lngPosEnd - lngPosBegin))
End If


objUploadControl.Add "Value" , Value


pvObjUploadRequest.Add strName, objUploadControl


lngBoundaryPos = InStrB(lngBoundaryPos + LenB(Boundary), RequestBin, Boundary)
Loop
End Sub


Private Sub Class_TerMINate
Dim objDictionary

For Each objDictionary In pvObjUploadRequest.Items
objDictionary.RemoveAll
Set objDictionary = Nothing
Next
pvObjUploadRequest.RemoveAll
Set pvObjUploadRequest = Nothing
End Sub



Private Function GetByteString(strString)
Dim Char
Dim i

For i = 1 To Len(strString)
Char = Mid(strString, i , 1)
GetByteString = GetByteString & ChrB(AscB(Char))
Next
End Function



Private Function GetString(strBin)
Dim intCount

GetString = ""

For intCount = 1 To LenB(strBin)
GetString = GetString & Chr(AscB(MidB(strBin, intCount, 1)))
Next
End Function


Public Function Value(Name)
Name = LCase(Name)
If pvObjUploadRequest.Exists(Name) Then
Value = pvObjUploadRequest.Item(Name).Item("Value" )
Else
Value = Empty
End If
End Function


Public Function ContentType(Name)
Name = LCase(Name)
If pvObjUploadRequest.Exists(Name) Then
If pvObjUploadRequest.Item(Name).Exists("ContentType" ) Then
ContentType = pvObjUploadRequest.Item(Name).Item("ContentType" )
Else
ContentType = Empty
End If
Else
ContentType = Empty
End If
End Function


Public Function FileNamePath(Name)
Name = LCase(Name)
If pvObjUploadRequest.Exists(Name) Then
If pvObjUploadRequest.Item(Name).Exists("FileName" ) Then
FileNamePath = pvObjUploadRequest.Item(Name).Item("FileName" )
Else
FileNamePath = Empty
End If
Else
FileNamePath = Empty
End If
End Function


Public Function FileName(Name)
Dim strFileName

Name = LCase(Name)
If pvObjUploadRequest.Exists(Name) Then
If pvObjUploadRequest.Item(Name).Exists("FileName" ) Then
strFileName = pvObjUploadRequest.Item(Name).Item("FileName" )
FileName = Right(strFileName, Len(strFileName) - InStrRev(strFileName, "\" ))
Else
FileName = Empty
End If
Else
FileName = Empty
End If
End Function

End Class
%>



Türkçe Tarih


Türkçe Tarih

Kod:

<%
dim gun_tarih, ay, yil, ayadi, gun_sayi, gun_adi
gun_sayi=Weekday(date)
gun_tarih= Day(date)
ay=Month(date)
yil=Year(date)

Select Case(ay)
Case 1
ayadi="Ocak"
Case 2
Ayadi="Şubat"
Case 3
Ayadi="Mart"
Case 4
Ayadi="Nisan"
Case 5
Ayadi="Mayıs"
Case 6
Ayadi="Haziran"
Case 7
Ayadi="Temmuz"
Case 8
Ayadi="Ağustos"
Case 9
Ayadi="Eylül"
Case 10
Ayadi="Ekim"
Case 11
Ayadi="Kasım"
Case 12
Ayadi="Aralık"
End Select

Select Case(gun_sayi)
Case 1
gun_adi="Pazar"
Case 2
gun_adi="Pazartesi"
Case 3
gun_adi="Salı"
Case 4
gun_adi="Çarşamba"
Case 5
gun_adi="Perşembe"
Case 6
gun_adi="Cuma"
Case 7
gun_adi="Cumartesi"
End Select

Response.Write "Bugün : " & gun_tarih &" " & ayadi &" " & yil &" " & gun_adi
%>



Oracle Veritabanına Bağlantı



Oracle Veritabanına Bağlantı

Kod:

DSN ve ODBC ile
<%
Set conn=Server.CreateObject("adodb.connection" )
conn.CursorLocation=adUseClient ' requires use of adovbs.inc; numeric value is 3
conn.Open "DSN=your_DSN_name;UID=kathi;PWD=xxxxxx"
%>

OLEDB ile

<%
Set conn=Server.CreateObject("adodb.connection" )
conn.CursorLocation=adUseClient
DSNTemp="Provider=MSDAORA.1;Password=xxxxx;User ID=kathi;Data Source=xxx.world"
conn.Open DSNtemp
%>


Bu mesaja 1 cevap geldi.
N
20 yıl
Binbaşı
Konu Sahibi

Araneae HtmL proGramı(TÜRKÇE)
--------------------------------------------------------------------------------


Web TasarıMına yeni başLayan ArkaDasLara öneririm


http://www.ornj.net/software/araneae/files/asetup.exe



TÜRKÇE yaması

http://www.ornj.net/software/araneae/files/araneae_tur.zip


Bu mesaja 1 cevap geldi.