ASP sayfası hazırlama
Dreamweaver mx de ASP çalışmak için daha önceden ASP ile uğraşmış olmak gereklidir. Her nekadar Dreamweaver Mx işimizi kolaylaştırsa da ASP 'den anlamak bazı durumlarda faydalı olacaktır. ASP öğrenmek için Dr. Hakkı ÖCAL 'ın ASP kitaplarını tavsiye ederim
Bilgisayarımızda PWS veya IIS yüklenmiş olduğunu söylemeye gerek yok sanırım. İşe önce yeni bir ASP sayfası açmakla başlayalım. Çünkü HTML içerikli sayfada Dreamweaver mx ASP çalışmaya izin vermez. Yeni bir ASP sayfası açtıktan sonra Insert-ASP menüsüne bakalım. Yanlız buradakilerin bazıları ASP-VBscript ve ASP-Javascript sayfa yapısında farklıdır. Bunları ayrıca belirttim.
Insert - ASP menüsü
Server variable - Server değişkenleri ekler. Bunlar Web Server'ımızın o anda çalışmakta olan ASP sayfası için oluşturduğu ortamın değişkenleridir | |
Variable: 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. 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 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 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ü Wrap in <% %> : Bu kodlar için Sayfaya <%...%> ekler. |
Include - Harici dosyalar ekler. |
Code block - ASP nin bildiğimiz ( <% ... %>) kod bloğunu ekler. |
Output - HTML kodları arasında ASP çıktıları verir. | |
Örneğin ; <font color="#FFCC33"><%=yaz("ad")%></font> |
If - Şart yapısını ekler. | |
VBscript için <% if then %> | |
Javascript için <% if () %> |
Else - değil ise yapısını ekler. | |
<% else %> |
Else if - eğer değil ise yapısını ekler. | |
Vbscript için <% elseif then %> | |
Javascript için <% else if () %> |
End - şartı sonlandırır. | |
Sadece Vbscript için <% endif %> |
Response.write - Yazdırma metodu ekler. | |
Response.write() |
Trimmed form element - Form içinden bilgi almayı sağlar. | |
Trim(Request.Form("")) |
Trimmed QueryString element - Ziyaretçiden servere gelen her tür bilgiyi almayı sağlar. | |
Trim(Request.QueryString("")) |
Server.CreateObject - Veritabanından yararlanmak için Server in CreateObject metodunu kullanır. | |
= Server.CreateObject("") |
More tag... - ASP için başka taglar ekler. |
INSERT - Application
Recordset ile ilgili uygulamaları sonraki sayfada bulabilirsiniz.
Recordset - ADO nun kayıt dizisi nesnesini ekler. | |
Name : Bağlantı adı Connection : Bağlantı dosyası (sayfaya include edilecek) Table : Veritabanı tabloları Column : Veritabanı tablo verileri Filter: Verilere uygulanan filtreler Sort: Veri sıralaması |
Repeated region - Veritabanı tablolarına ekleme yapmayı sağlar. Örneğin veritabanından isim ve telefon gösteren tablo oluşturmuşsak isim kolonunu seçerek repeated region ile veri listesini arttırabiliriz. |
Dynamic table - Veritabanındaki verileri tablo şeklinde listeler. | |
Recordset : Bağlantı adı Show: Gösterilecek kayıt sayısı Border: Tablonun çerçevesi |
Dynamic text - Veritabanı verisini gösterir. | |
Field : Veritabanı verileri Format : Veri türü Code: Kod eklemek için |
Recordset navigation bar - Kayıt bilgilerini ileri-geri gösterme menüsü oluşturur. |
Recordset navigation status - Verileri navigation bar ile listelerken ilk,son ve toplam veri içerik sayısını gösterir. |
Master detail page set - Dynamic table ile benzerdir. Ancak burada istediğimiz verileri listeleyebilir ayrıca ilgili veri için bir detay dosyası gösterebiliriz. | |
Recordset: Bağlantı adı Master page fields: Gösterilcek veriler Link to detail from: Detay dosyasını bağlıcağımız veri Pass uniqe key: Anahtar veri Detail page name: Oluşturulacak detay dosyası Detail page fields: Detay dosyasında gösterilecek veriler |
Record insertion form - Kayıt ekleme formu oluşturur. | |
Connection : Bağlantı adı Insert into table: Veritabanı tablosu After inserting, GOTO : Bilgilerin girildiğine dair bir onay dosyası Form fields: Form elemanları Label : Eleman adı Display As: Form elemanının ekrandaki türü (yazı alanı, radyo butonu...) Submit As: Form elemanının biçimi(karakter, sayı, tarih) |
Record update form - Kayıt güncelleme formu ekler. |
Recordset (Kayıt dizisi) oluşturma
Application uygulamalarını daha iyi anlamak için bir mesaj panosu örneği yapalım. Bunun için ilk önce Access (.mdb) veritabanı oluşturmalıyız.Dosyayı burdan indirebilirsiniz.Bu dosyanın özellikleri aşağıdaki gibi olabilir;
Veritabanı dosyası | Mesaj.mdb | |
Tablo adı | Mesaj | |
Alanlar | id | Otomatik sayı |
Ad | Metin | |
Mesaj | Not | |
Tarih | Tarih/saat |
Şimdi bu ole-db extensionu yükleyip kuralım. Bu extension ile otomatik veritabanı bağlantısı yapabiliririz. Kurduktan sonra aktif olması için dreamweaveri kapatıp tekrar başlatın.
Yeni bir ASP-Vbscript dosyası açalım. Insert-Application dan bir Databases > OLE DB connections seçelim. Sonra ;
1 - connection name kısmına 'baglanti' gibi bir bağlantı adı yazalım.
2 - Build tıklayıp veritabanını seçiyoruz.
3 - Veritabanını seçtikten sonra Test tıklayıp deneme yapabiliriz.
Not: Eğer bağlantı oluşturamadıysanız manuel Custom connecting string ile aşağıdaki satırları deneyebilirsiniz;
MS Access ODBC DSNless bağlantısı için
Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\yol\mesaj.mdb
veya
"Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.Mappath("..\yol\mesaj.mdb")
MS Access OLE DB bağlantısı için
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\yol\mesaj.mdb
veya
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("..\yol\mesaj.mdb")
Tüm bunlardan sonra Insert-Application > Bindings > + > Recordset tıklayalım. Connection yerinden tanımladığımız 'baglantı' veritabanı adını seçtiğimiz zaman veritabanı aktif olacak ve tabloları görebileceğiz. Oluşturulan her veritabanı bağlantısı sitemizin bir alt dizini içindeki connections klasöründe depolanır.
Buradaki Filter ile mesaj tablosu verilerini belli kriterlere göre seçtirebiliriz. Örneğin id > 5 olanları veya adları A ile başlayanları seçebiliriz. Sort ile de elemanları büyükten küçüğe yada küçükten büyüğe sıralamak mümkün. Tabi şimdilik mesaj.mdb dosyamız boş olduğu için olayları gözlemleyemeyiz. OK dedikten sonra Recordset oluşturmuş oluruz. |
Recordset ekledikten sonra Window > Bindings penceresinde bu recordset i görebiliriz. Burada eklediğimiz tüm application ları kontrol edebiliriz. Bağlantı dosyası olan baglanti_dosyasi.asp connections dizini altındadır.
Dosyamızı internette yayımlarken veritabanı dosyasının bulunduğu yeri belirtmek gerekir. Bunun için;
Kayıt formu oluşturalım
Şimdi kayıt formu oluşturalım. tıkladıktan sonra şekildeki yerleri doldurun.
Ad: textfield Mesaj: textarea Tarih: Hidden field olacak. Tarih için default value değerini şimşek simgesine tıklayıp tarih i seçebiliriz. Burda dikkat ederseniz id verisini formda kullanmadık çünkü id otomatik sayıdır. |
mesaj_kaydet.asp dosyası form bilgilerinin doğru girildiğini gösteren bir dosyadır.Buraya yönlendirmek istediğimiz başka bir dosyada yazabiliriz.
F12 ile hazırladığımız kayıt formunu browserda test edebilirsiniz.Eğer "belirtilen sayfanın öz niteliği geçersiz" diye bir hata alırsanız sayfanın başındaki <%@LANGUAGE="VBSCRIPT" CODEPAGE="CP_ACP"%> satırını <%@LANGUAGE="VBSCRIPT"%> olarak değiştirin.
Kayıt tablosu ekleme
Şimdi ise kayıtları gösteren bir tablo hazırlayalım. Bunun için (dynamic table) veya (Master detail page) kullanabiliriz. Dynamic page sadece verileri listeler. Master detail page ile detay dosyasıda oluşturabiliriz. Şimdi Master detail page simgesine tıklayıp gerekli yerleri dolduralım.
Master page fields kısmı: Ana sayfada gözükecek veriler. Link to detail from: ad kısmına tıklayanlar ilgili detayı görebilecek. Show: Burada sayfada kaç kayıt göstereceğimizi belirliyoruz. Detail page name: detay dosyası Detail page fields: Detay dosyasındaki gözükecek veriler. |
Tablomuzu oluşturduk. Ana sayfayı F12 ile çalıştırdığımızda isimler ve mesajlar gözükecek. Her isme tıklandığında ona ait diğer bilgiler (id,ad,mesaj,tarih) detay dosyasında gözükür.
Kayıtlı verileri gösterme
Bir Recordset oluşturduktan sonra window > Bindins penceresinde Recordset içindeki tüm kayıtları, ilk, son ve toplam kayıtları bu pencereden mouse ile sayfaya sürükle-bırak yapabiliriz. Aynı şeyi ile yapabiliriz.
Field: Kayıtlı alanlardan istediğimizi seçebiliriz. Format: Bu kısımda örneğin Tarih alanını seçmişsek tarihin biçimini ayarlayabiliriz. |
Üye girişli sayfa yapmak için hazırlayacağımız dosyalar;
1- user.mdb (üyelerin kayıtlı olduğu MS Access veritabanı dosyası)
2- kayit.asp (yeni üye kaydı)
3- kayit_var.asp ('Bu üye zaten kayıtlı')
4- kayit_okey.asp ('Kaydınız tamamlandı')
5- gir.asp (üye girişi)
6- anasayfa.asp (ana sayfa)
7- izin_yok.asp ('izinsiz giremezsiniz')
8- uye_yok.asp ('İlgili üye bulunamadı')
8- cikis.asp (üyelik çıkışı)
user.mdb dosyasını id(otomatik sayı), kullanici(text) , parola(text) ve tablo adı giris şeklinde hazırlayabiliriz. Şimdi ilk olarak yeni üye kaydı(kayit.asp) sayfasını hazırlayalım.
Yeni üye kaydı (kayit.asp)
1- Yeni bir ASP-VBscript sayfası açalım.
2- Insert-Form dan iki tane text field ve bir buton oluşturalım. İlk text field kullanici adında, ikincisi parola adında ve tipi password olsun.
3- Application > Server Behaviors > + > Insert Record diyelim.
Connection > define ile yeni bir bağlantı oluşturalım. Bu konuyu bir önceki sayfada görebilirsiniz. Oluşturduğumuz form elemanlarıyla form elementlerini ilişkilendirip tamam diyoruz. After inserting, GO TO : Kayıdın tamamlandığını bildiren sayfa(kayit_okey.asp) |
4- Application > Server Behaviors > + > User Authentication > Check New username
if Already Exists, GOTO : İlgili kayıdın zaten olduğunu gösteren sayfa(kayit_var.asp) |
5- Hazırladığımız sayfası kayit.asp olarak kaydedin.
Üye kaydı tamam (kayit_okey.asp)
Bu sayfada 'Üyelik kaydınız tamamlandı, şimdi giriş yapabilirsiniz...' şeklinde bir yazı yazıp gir.asp ye bir link verebilirsiniz.
İlgili üye zaten var (kayit_var.asp)
Bu sayfada 'Bu kullanıcı adında bir üye zaten var, yeniden deneyin...' gibi bir yazı ile gir.asp ye link verebilirsiniz.
Üye girişi (gir.asp)
Yeni bir ASP Vbscript sayfası açıp Application > Server Behaviors > + > User Authentication > Log in User
Ayarları şekildeki gibi yapalım. |
Bu sayfada ayrıca 'Üye değilsen üye ol' şeklinde kayit.asp ye link verebiliriz.
İlgili üye bulunamadı (üye_yok.asp)
Bu sayfada 'Bu isimde bir üye yok, tekrar giriş yapın...' gibi bir yazı ile gir.asp ye link verebiliriz.
Ana sayfa (anasayfa.asp)
Burası sadece üyelerin girebildiği ana sayfa. Buraya üye olmayanların direk girmemeleri için bir session kontrolü koymalıyız.Bunu da Resctrit Access to page ile yapıyoruz. Application > Server Behaviors > + > User Authentication > Resctrit Access to page
if Access denied, GOTO: izin_yok.asp |
Anasayfa.asp içinde 'Merhaba xxx , sayfaya hoşgeldin.' şeklinde giriş yapılan kullanıcı adını göstermek için session variable kullanabiliriz. Bunu Application > Bindings > + > Session variable
Burada kullanılan session Dreamweaver Mx in oluşturduğu kullanıcı adı için MM_Username dir. |
Oluşturduğumuz session u panelden sürükle-bırak şeklinde sayfada istediğimiz yerde kullanabiliriz.
Anasayfa da ayrıca kullanıcının oturumdan çıkmasını sağlayan cikis.asp ye link verebiliriz.
Oturumdan çık (cikis.asp)
Oturumdan çıkış sayfasını Application > Server Behaviors > + > User Authentication > logout user ile veya cikis.asp dosyasının en başına aşağıdaki kodları yazarak yapabiliriz;
<%
' *** Logout the current user.
Session.Contents.Remove("MM_Username")
Session.Contents.Remove("MM_UserAuthorization")
%>