Forum Sayfam

Full Versiyon: ASP ile Veri Tabanı Uygulaması
Şu anda tam olmayan bir veriyonu görüntülüyorsunuz. Tam versiyonu görmek için, buraya tıklayın
ASP ile veri kayıt ve listeleme silme işlemleri…
Wwwroot klasörüne “veri” adında bir klasör açın..
Access ile “data.mdb” adında bir veri tabanı oluşturun..
"wwwroot\veri" içine kaydedin..
Sonra “adres” adında bir tablo oluşturun..
kno ->otomatik sayı
adi -> metin
soyadi -> metin
tel -> metin
alanlarından oluşsun..
‘----------------------------------------------------------
//Bu sayfa{Kayit.asp} olarak kaydedilecek…\\
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO 8859-8">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>kayitlar</title>
</head>
<body>
<%
sql="select * from adres"
pash=server.MapPath("veri/data.mdb")
bcumle="Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
set veriyolu = server.CreateObject("ADODB.Connection")
veriyolu.open (bcumle)
Set kay = veriyolu.Execute(sql)

%>
<% i=1 %>
<p><a href="kayit_yeni.asp">Yeni Kayıt</a></p>
<table border=1>
<tr>
<th>SıraNo</th>
<th>Ad</th>
<th colspan=2>Eylemler</th>
</tr>
<% Do While Not kay.eof %>
<tr><td><%= i %></td>
<td><%= kay("adi") %></td>
<td><a href="kayit_duzenle.asp?id=<%= kay("kno") %>">düzenle</a></td>
<td><a href="kayit_sil.asp?id=<%= kay("kno") %>">sil</a></td></tr>
<% kay.movenext %>
<% i = i + 1 %>
<% Loop %>
</table>
<%
kay.Close
Set kay = Nothing
veriyolu.Close
%>
</body>
</html>



‘----------------------------------------------------------
//Bu sayfa{Kayit_duzenle.asp} olarak kaydedilecek…\\
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Kayıt D&uuml;zenleme</title>
</head>

<body>
<%
id = Request.Querystring("id")
If Not Isnumeric(id) Or Len(id)=0 Then
mesaj "Yanlis Sorgu Cümlesi"
End If
Dim Veriyolu, Kset
pash=server.MapPath(“veri/data.mdb")
bcumle="Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
set veriyolu = server.CreateObject("ADODB.Connection")
veriyolu.open (bcumle)
Set Kset = Veriyolu.Execute("SELECT * FROM adres where kno ="& id)
If kset.eof Then
mesaj "Olmayan Kayit Istendi"
End If
%>
<a href="kayit.asp">Kayit</a>
<form method=post action="kayit_guncelle.asp">
<table border=1>
<tr>
<td>Ad</td>
<td><input type="text" name="adi" value="<%= kset("adi") %>"></td>
</tr>
<tr>
<td>Soyadı</td>
<td><input type="text" name="soyadi" value="<%= kset("soyadi") %>"></td>
</tr>
<tr>
<td>Tel</td>
<td><input type="text" name="tel" value="<%= kset("tel") %>"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="güncelle"></td></tr>
</table>
<input type="hidden" name="id" value="<%= kset("kno") %>">
</form>
<%
kset.Close
Set kset = Nothing
veriyolu.Close
Set veriyolu = Nothing
%>
<% Sub mesaj(msg) %>
<p><%= msg %></p>
<% response.end %>
<% End Sub %>
</body>
</html>

‘----------------------------------------------------------
//Bu sayfa{Kayit_guncelle.asp} olarak kaydedilecek…\\
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Kayıt Güncelleme Sayfası</title>
</head>
<body>

<%
adi = Request.Form("adi")
kno = Request.Form("id")
tel = Request.Form("tel")
soyadi = Request.Form("soyadi")

Dim Veriyolu, Kset
pash=server.MapPath("veri/data.mdb")
bcumle="Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
set veriyolu = server.CreateObject("ADODB.Connection")
veriyolu.open (bcumle)
Set Kset = server.CreateObject("ADODB.Recordset")
Kset.Open "SELECT * FROM adres where kno ="&kno,veriyolu,1,3
kset("adi") = adi
kset("soyadi") = soyadi
kset("tel") = tel

kset.update
kset.Close
Set kset = Nothing
veriyolu.Close
Set bag = Nothing
Response.Write "<p>Kayit Yapildi.. "
Response.Write "<p><a href=""kayit.asp"">Kayıt</a>"
%>
</body>
</html>

‘----------------------------------------------------------
//Bu sayfa{Kayit_sil.asp} olarak kaydedilecek…\\

<%if kont<> Request.querystring("id") then%>
<Html><body><form action="kayit_sil.asp" method="get"><input type="hidden" name="kont" value="<%=Request.querystring("id")%>">
<input name="silme" type="submit" value="Onayla">
</form></body></Html>
<%else%>
<html>
<body>
<%
response.buffer = True
id = Request.querystring("kont")
pash = Server.MapPath("veri/data.mdb")
'Bcumle = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Veri_yolu
bcumle = "Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
Set Veriyolu = Server.Createobject("ADODB.Connection")
veriyolu.Open (Bcumle)
sql = "DELETE FROM adres WHERE kno=" & id
Set kset = veriyolu.execute(sql)
Set kset = Nothing
veriyolu.Close
Set veriyolu = Nothing
Response.Redirect "kayit.asp"
%>

</body>
</html>
<% end if%>


‘----------------------------------------------------------
//Bu sayfa{Kayit_yeni.asp} olarak kaydedilecek…\\

<HTML>
<%
response.buffer=true
Dim Veriyolu, Kset
pash=server.MapPath("veri/data.mdb")

bcumle="Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
set veriyolu = server.CreateObject("ADODB.Connection")
veriyolu.open (bcumle)
Set Kset = server.CreateObject("ADODB.Recordset")
Kset.Open "SELECT * FROM adres",veriyolu,1,3
kset.addnew
kset.update
id = kset("kno")
kset.Close
Set kset = Nothing
veriyolu.Close
Set veriyolu = Nothing
Response.Redirect "kayit_duzenle.asp?id=" & id
%>
</HTML>

DrComp Yazılan:
ASP ile veri kayıt ve listeleme silme işlemleri…
Wwwroot klasörüne “veri” adında bir klasör açın..
Access ile “data.mdb” adında bir veri tabanı oluşturun..
"wwwroot\veri" içine kaydedin..
Sonra “adres” adında bir tablo oluşturun..
kno ->otomatik sayı
adi -> metin
soyadi -> metin
tel -> metin
alanlarından oluşsun..
‘----------------------------------------------------------
//Bu sayfa{Kayit.asp} olarak kaydedilecek…\\
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO 8859-8">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>kayitlar</title>
</head>
<body>
<%
sql="select * from adres"
pash=server.MapPath("veri/data.mdb")
bcumle="Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
set veriyolu = server.CreateObject("ADODB.Connection")
veriyolu.open (bcumle)
Set kay = veriyolu.Execute(sql)

%>
<% i=1 %>
<p><a href="kayit_yeni.asp">Yeni Kayıt</a></p>
<table border=1>
<tr>
<th>SıraNo</th>
<th>Ad</th>
<th colspan=2>Eylemler</th>
</tr>
<% Do While Not kay.eof %>
<tr><td><%= i %></td>
<td><%= kay("adi") %></td>
<td><a href="kayit_duzenle.asp?id=<%= kay("kno") %>">düzenle</a></td>
<td><a href="kayit_sil.asp?id=<%= kay("kno") %>">sil</a></td></tr>
<% kay.movenext %>
<% i = i + 1 %>
<% Loop %>
</table>
<%
kay.Close
Set kay = Nothing
veriyolu.Close
%>
</body>
</html>



‘----------------------------------------------------------
//Bu sayfa{Kayit_duzenle.asp} olarak kaydedilecek…\\
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Kayıt D&uuml;zenleme</title>
</head>

<body>
<%
id = Request.Querystring("id")
If Not Isnumeric(id) Or Len(id)=0 Then
mesaj "Yanlis Sorgu Cümlesi"
End If
Dim Veriyolu, Kset
pash=server.MapPath(“veri/data.mdb")
bcumle="Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
set veriyolu = server.CreateObject("ADODB.Connection")
veriyolu.open (bcumle)
Set Kset = Veriyolu.Execute("SELECT * FROM adres where kno ="& id)
If kset.eof Then
mesaj "Olmayan Kayit Istendi"
End If
%>
<a href="kayit.asp">Kayit</a>
<form method=post action="kayit_guncelle.asp">
<table border=1>
<tr>
<td>Ad</td>
<td><input type="text" name="adi" value="<%= kset("adi") %>"></td>
</tr>
<tr>
<td>Soyadı</td>
<td><input type="text" name="soyadi" value="<%= kset("soyadi") %>"></td>
</tr>
<tr>
<td>Tel</td>
<td><input type="text" name="tel" value="<%= kset("tel") %>"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="güncelle"></td></tr>
</table>
<input type="hidden" name="id" value="<%= kset("kno") %>">
</form>
<%
kset.Close
Set kset = Nothing
veriyolu.Close
Set veriyolu = Nothing
%>
<% Sub mesaj(msg) %>
<p><%= msg %></p>
<% response.end %>
<% End Sub %>
</body>
</html>

‘----------------------------------------------------------
//Bu sayfa{Kayit_guncelle.asp} olarak kaydedilecek…\\
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Kayıt Güncelleme Sayfası</title>
</head>
<body>

<%
adi = Request.Form("adi")
kno = Request.Form("id")
tel = Request.Form("tel")
soyadi = Request.Form("soyadi")

Dim Veriyolu, Kset
pash=server.MapPath("veri/data.mdb")
bcumle="Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
set veriyolu = server.CreateObject("ADODB.Connection")
veriyolu.open (bcumle)
Set Kset = server.CreateObject("ADODB.Recordset")
Kset.Open "SELECT * FROM adres where kno ="&kno,veriyolu,1,3
kset("adi") = adi
kset("soyadi") = soyadi
kset("tel") = tel

kset.update
kset.Close
Set kset = Nothing
veriyolu.Close
Set bag = Nothing
Response.Write "<p>Kayit Yapildi.. "
Response.Write "<p><a href=""kayit.asp"">Kayıt</a>"
%>
</body>
</html>

‘----------------------------------------------------------
//Bu sayfa{Kayit_sil.asp} olarak kaydedilecek…\\

<%if kont<> Request.querystring("id") then%>
<Html><body><form action="kayit_sil.asp" method="get"><input type="hidden" name="kont" value="<%=Request.querystring("id")%>">
<input name="silme" type="submit" value="Onayla">
</form></body></Html>
<%else%>
<html>
<body>
<%
response.buffer = True
id = Request.querystring("kont")
pash = Server.MapPath("veri/data.mdb")
'Bcumle = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Veri_yolu
bcumle = "Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
Set Veriyolu = Server.Createobject("ADODB.Connection")
veriyolu.Open (Bcumle)
sql = "DELETE FROM adres WHERE kno=" & id
Set kset = veriyolu.execute(sql)
Set kset = Nothing
veriyolu.Close
Set veriyolu = Nothing
Response.Redirect "kayit.asp"
%>

</body>
</html>
<% end if%>


‘----------------------------------------------------------
//Bu sayfa{Kayit_yeni.asp} olarak kaydedilecek…\\

<HTML>
<%
response.buffer=true
Dim Veriyolu, Kset
pash=server.MapPath("veri/data.mdb")

bcumle="Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source=" & pash
set veriyolu = server.CreateObject("ADODB.Connection")
veriyolu.open (bcumle)
Set Kset = server.CreateObject("ADODB.Recordset")
Kset.Open "SELECT * FROM adres",veriyolu,1,3
kset.addnew
kset.update
id = kset("kno")
kset.Close
Set kset = Nothing
veriyolu.Close
Set veriyolu = Nothing
Response.Redirect "kayit_duzenle.asp?id=" & id
%>
</HTML>


/// Değerli Hocam,
Bizim İznik İlçe Milli Eğitim Müdürlüğü web sitemize hazır bir asp konuk
defteri ekledik. Güvenlik için çift veritabanı kullandık.Her sabah kontrol ettiğimiz mesaj yazılanı gösterilen veritabanı üzerine yazıp güncelleme yapıyoruz. Fakat kötü niyetli kişiler konuk defterinin alanlarına kodlar yazarak başka sitelere yönlendirme yapıyor.Gerçi ziyarteçiler görmüyor fakat ben güncelleme sırasında farkediyorum ve bu satırları veritabanından siliyorum.Acaba bu kodları yazmalarını engelleyecek kodları asp dosyalarına ekleyebilirmiyiz.Yardımlarınızı bekliyorum.

Hocam şunu yapabilirsiniz...Denemedim ama çalışır zannederim...
Veri tabanına kayıt yaptığınız kodların öncesinde

kontrol=inStr(kodun yazıldığı değişken,"kötü amaçlı kodlardan bir parça")

if kontrol = 0 then
veri tabanına kaydet
else
veri tabanına kaydetme
sayfaya geri dön
end if
Değerli Hocam,
Teşekkür ederim, cevap verdiğiniz için,
Size uyguladığım zaman haber vereceğim.
İşlerinizde kolaylıklar dilerim.
Şöyle bir çözüm daha garanti olur:
Öncelikle bu fonksiyonumuzu ekleriz kod satırına:
<%Function Kontrol(byVal KrKTeR)
If KrKTeR = "" Then Exit Function
     KrKTeR = Replace(KrKTeR, "<", "&lt;")
     KrKTeR = Replace(KrKTeR, ">", "&gt;")
     KrKTeR = Replace(KrKTeR, "[", "[")
     KrKTeR = Replace(KrKTeR, "]", "]")
     KrKTeR = Replace(KrKTeR, """", "", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "=", "=", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "'", "''", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "select", "select", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "join", "join", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "union", "union", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "where", "where", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "insert", "insert", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "delete", "delete", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "update", "update", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "like", "like", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "drop", "drop", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "create", "create", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "modify", "modify", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "rename", "rename", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "alter", "alter", 1, -1, 1)
     KrKTeR = Replace(KrKTeR, "cast", "cast", 1, -1, 1)
     Kontrol = KrKTeR
End Function%>

daha sonra kayıt edilecek değişkeni
veritabanına yazılacak değer = Kontrol(değişken)
ifadesiyle kullanırız, kesin çözüm! Çünkü sql injeksiyon anlamında kullanılabilecek tüm kodların işlevselliğini yitirmesini sağlıyoruz...
Referans URL

Fatal error: Call to a member function run_hooks() on a non-object in /home/bilisimf/public_html/inc/functions.php on line 146