ASP Öğrenme Konuları
Kapsamlı ASP Eğitim Serisi
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.
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!"
%>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.