ASP programlama eğitim diyagramı

Bu sayfada, Active Server Pages (ASP) programlama dili ile ilgili temel ve ileri seviye konuları detaylı bir şekilde öğreneceksiniz. Her konu, kod örnekleri ve açıklamalar ile desteklenmiştir. ASP, Microsoft'un sunucu taraflı web programlama teknolojisidir ve dinamik, veritabanı destekli web siteleri oluşturmanıza olanak tanır.

1. Temel ASP Kavramları

ASP Nedir?

Active Server Pages (ASP), sunucu tarafında çalışan ve dinamik web sayfaları oluşturmak için kullanılan bir programlama teknolojisidir. ASP sayfaları .asp uzantısı ile kaydedilir ve Internet Information Services (IIS) web sunucusu üzerinde çalışır.

ASP'nin temel özellikleri şunlardır:

  • Sunucu Taraflı İşleme: Kod sunucuda çalıştırılır, sonuç istemciye HTML olarak gönderilir
  • VBScript veya JScript Desteği: İki farklı script dili ile programlama yapabilirsiniz
  • Veritabanı Entegrasyonu: ADO (ActiveX Data Objects) ile veritabanı bağlantıları
  • Session Yönetimi: Kullanıcı oturumlarını izleme ve yönetme
  • Component Desteği: COM bileşenleri ile genişletilebilir yapı

İlk ASP Sayfanız

Basit bir ASP sayfası oluşturalım. Aşağıdaki kodu merhaba.asp olarak kaydedin:

<%@ Language=VBScript %> <html> <head> <title>İlk ASP Sayfam</title> </head> <body> <h1>Merhaba Dünya!</h1> <% Response.Write "Bu sayfa " & Now() & " tarihinde oluşturuldu." %> </body> </html>

Bu kod çalıştırıldığında, sunucu o anki tarih ve saati sayfaya yazacaktır. <% %> işaretleri arasındaki kod sunucuda çalışır.

İpucu: ASP öğrenirken Microsoft'un resmi IIS ve ASP dokümantasyonunu mutlaka inceleyin.

2. Değişkenler ve Veri Tipleri

VBScript'te değişkenler Dim anahtar kelimesi ile tanımlanır. VBScript dinamik bir dil olduğu için veri tipini belirtmenize gerek yoktur.

<% Dim kullaniciAdi Dim yas Dim aktifMi kullaniciAdi = "Ahmet" yas = 25 aktifMi = True Response.Write "Kullanıcı: " & kullaniciAdi & "<br>" Response.Write "Yaş: " & yas & "<br>" Response.Write "Aktif: " & aktifMi %>

VBScript Veri Tipleri

  • String: Metin verileri ("Merhaba")
  • Integer/Long: Tamsayı değerler (42, 1000)
  • Double: Ondalık sayılar (3.14, 99.99)
  • Boolean: True veya False
  • Date: Tarih ve saat değerleri (Now(), Date())
  • Array: Dizi değişkenleri
  • Object: Nesneler (Connection, Recordset, vb.)

Diziler (Arrays)

<% Dim renkler(3) renkler(0) = "Kırmızı" renkler(1) = "Yeşil" renkler(2) = "Mavi" renkler(3) = "Sarı" For i = 0 To 3 Response.Write renkler(i) & "<br>" Next %>

3. Veritabanı İşlemleri

ASP'nin en güçlü özelliklerinden biri ADO (ActiveX Data Objects) kullanarak veritabanı işlemleri yapabilmesidir. Microsoft Access, SQL Server, MySQL gibi veritabanlarına bağlanabilirsiniz.

Veritabanı Bağlantısı

Access veritabanına bağlanmak için connection string oluşturmalısınız. Güvenlik açısından, bağlantı bilgilerini ayrı bir dosyada tutmanız önerilir. ConnectionStrings.com sitesi farklı veritabanları için hazır connection string örnekleri sunar.

<% ' Access Veritabanı Bağlantısı Dim conn, connStr Set conn = Server.CreateObject("ADODB.Connection") connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" connStr = connStr & "Data Source=" & Server.MapPath("veriler/database.mdb") conn.Open connStr ' İşlemler burada yapılır conn.Close Set conn = Nothing %>

Veri Çekme (SELECT)

<% Dim rs, sql Set rs = Server.CreateObject("ADODB.Recordset") sql = "SELECT * FROM urunler ORDER BY urun_adi" rs.Open sql, conn Do While Not rs.EOF Response.Write rs("urun_adi") & " - " & rs("fiyat") & " TL<br>" rs.MoveNext Loop rs.Close Set rs = Nothing %>

Veri Ekleme (INSERT)

<% Dim sql sql = "INSERT INTO uyeler (kullanici_adi, email, kayit_tarihi) " & _ "VALUES ('ahmet', 'ahmet@example.com', #" & Now() & "#)" conn.Execute sql Response.Write "Kayıt başarıyla eklendi!" %>
Güvenlik Uyarısı: Kullanıcıdan gelen verileri direkt SQL sorgularında kullanmayın! SQL Injection saldırılarına karşı parametreli sorgular (Prepared Statements) kullanın.

Parametreli Sorgular

<% Dim cmd Set cmd = Server.CreateObject("ADODB.Command") cmd.ActiveConnection = conn cmd.CommandText = "INSERT INTO uyeler (kullanici_adi, email) VALUES (?, ?)" cmd.Parameters.Append cmd.CreateParameter("", adVarChar, adParamInput, 50, Request.Form("kullanici")) cmd.Parameters.Append cmd.CreateParameter("", adVarChar, adParamInput, 100, Request.Form("email")) cmd.Execute Set cmd = Nothing %>

4. Session ve Cookie Yönetimi

Session ve Cookie'ler, kullanıcı verilerini saklamak ve yönetmek için kullanılır. Session sunucu tarafında, Cookie ise istemci tarafında veri saklar.

Session Kullanımı

<% ' Session değişkenine değer atama Session("kullanici_id") = 123 Session("kullanici_adi") = "Ahmet" Session("giris_zamani") = Now() ' Session değerini okuma If Session("kullanici_id") <> "" Then Response.Write "Hoş geldin, " & Session("kullanici_adi") Else Response.Write "Lütfen giriş yapın" End If ' Session temizleme Session.Abandon %>

Cookie Kullanımı

<% ' Cookie oluşturma (30 gün geçerli) Response.Cookies("tercihler")("tema") = "koyu" Response.Cookies("tercihler")("dil") = "tr" Response.Cookies("tercihler").Expires = DateAdd("d", 30, Now()) ' Cookie okuma Dim tema tema = Request.Cookies("tercihler")("tema") Response.Write "Seçili tema: " & tema %>

5. Form İşleme

ASP ile HTML formlarından gelen verileri işlemek oldukça kolaydır. Request.Form ve Request.QueryString koleksiyonları kullanılır.

<% If Request.ServerVariables("REQUEST_METHOD") = "POST" Then Dim ad, email, mesaj ad = Request.Form("ad") email = Request.Form("email") mesaj = Request.Form("mesaj") ' Basit doğrulama If ad <> "" And email <> "" Then ' Veritabanına kaydet veya email gönder Response.Write "Teşekkürler " & ad & ", mesajınız alındı!" Else Response.Write "Lütfen tüm alanları doldurun." End If End If %> <form method="POST" action=""> Ad: <input type="text" name="ad"><br> Email: <input type="email" name="email"><br> Mesaj: <textarea name="mesaj"></textarea><br> <input type="submit" value="Gönder"> </form>

6. E-posta Gönderme

ASP ile e-posta göndermek için CDO (Collaboration Data Objects) veya CDOSYS bileşenleri kullanılır.

<% Dim objMail Set objMail = Server.CreateObject("CDO.Message") objMail.From = "gonderici@example.com" objMail.To = "alici@example.com" objMail.Subject = "MaxiASP'den Selamlar" objMail.TextBody = "Bu bir test emailidir." ' SMTP ayarları objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.example.com" objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objMail.Configuration.Fields.Update objMail.Send Set objMail = Nothing Response.Write "E-posta gönderildi!" %>

7. Güvenlik ve En İyi Uygulamalar

Web uygulamalarında güvenlik çok önemlidir. İşte ASP projelerinizde dikkat etmeniz gereken temel güvenlik önlemleri:

  • SQL Injection Koruması: Parametreli sorgular kullanın
  • XSS (Cross-Site Scripting): Kullanıcı girdilerini Server.HTMLEncode() ile temizleyin
  • Şifre Güvenliği: Şifreleri asla düz metin olarak saklamayın, hash algoritmaları kullanın
  • Session Güvenliği: Session timeout değerlerini ayarlayın
  • Dosya Yükleme: Dosya uzantılarını kontrol edin, executable dosya yüklemesine izin vermeyin
  • Error Handling: Detaylı hata mesajlarını kullanıcılara göstermeyin

XSS Koruması Örneği

<% Dim kullaniciGirisi kullaniciGirisi = Request.Form("yorum") ' Güvenli çıktı Response.Write Server.HTMLEncode(kullaniciGirisi) ' Alternatif olarak fonksiyon oluşturabilirsiniz Function GuvenliCikti(metin) GuvenliCikti = Server.HTMLEncode(metin) GuvenliCikti = Replace(GuvenliCikti, vbCrLf, "<br>") End Function %>

Daha fazla güvenlik bilgisi için OWASP (Open Web Application Security Project) kaynaklarını inceleyebilirsiniz.

Devam Eden İçerik: Bu sayfa sürekli güncellenmektedir. Daha fazla konu ve örnek için Uygulamalar ve Script Kütüphanesi sayfalarını ziyaret edin.