ASP.NET Doğrulama Kodu, artık neredeyse tüm bilinen web sayfalarında botlardan korunmak için Captcha(Güvenlik kodu) kullanılmaktadır. Biz de bu makalemizde basit ama her projenizde kullanabileceğiniz bir captcha hazırlama nasıl yapılır onu göstermeye çalışacağız.
ASP.NET doğrulama kodu yapısını oluşturabilmek için öncelikle Default.aspx ve Resim.aspx adında iki adet asp.net sayfası ekleyiniz projenize.
HTML Kodu(Default.aspx)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <table> <thead> <tr> <td colspan="2">Yeni Üyelik</td> </tr> </thead> <tbody> <tr> <td>Adı</td> <td><input id="TxtName" type="text" /></td> </tr> <tr> <td>Soyadı</td> <td><input id="txtSurName" name="txtSurName" type="text" value=" " /></td> </tr> <tr> <td>Email</td> <td><input id="txtEmail" name="txtEmail" type="email" value=" " /></td> </tr> <tr> <td>Şifre</td> <td> <input id="txtPassword" autocomplete="off" name="txtPassword" type="password" value="" /> </td> </tr> <tr> <td> Güvenlik Resmi<br /><img src="http://localhost:13008/Resim.aspx" alt="Güvenlik Resmi" /> </td> <td> <input id="txtSecurityCode" name="txtSecurityCode" type="text" value="" /> </td> </tr> <tr> <td colspan="2"> </td> </tr> </tbody> </table> |
C# Kodu(Default.aspx.cs)
1 2 3 4 5 6 7 8 | protected void BtnSave_OnClick(object sender, EventArgs e) { if (Session["gResim"].ToString() != txtSecurityCode.Value) { ClientScript.RegisterStartupScript(GetType(), "Alert", "alert('Güvenlik kodunuz doğrulanamadı!');", true); } ClientScript.RegisterStartupScript(GetType(), "Alert", "alert('Güvenlik kodu doğru girildi.');", true); } |
Yukarıdaki kodda yer alan metod adındanda anlaşıldığı gibi html kod kısmında yer alan ‘BtnSave’ id’li butonun tıklanma olayında eğer girilen güvenlik kodu ile resimdeki güvenlik kodu eşleşiyorsa if bloğu içerisindeki javascript alert kodu sayfa içerisine yerleştirilecek ve kullancııya bir uyarı verilecektir eşleşmeme durumundada if bloğu dışında yer alan javascript alert kodu sayfaya eklenecek ve kullancııya uyarı verilecektir.
C# Kodu(Resim.aspx.cs)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | protected void Page_Load(object sender, EventArgs e) { //100px genişliğinde 30px yüksekliğinde sanal resim oluşturuyor Bitmap bmp = new Bitmap(100, 30); //Çizimlerimi yapabilmek için grafik nesnesi oluşturuluyor Graphics g = Graphics.FromImage(bmp); //Resim arkaplanı Beige(bej) renge boyanıyor g.Clear(Color.Beige); //Rastgele metin metodundan 6 karakterli kelime oluştuluyor string metin = RastgeleKelime(); //Oluşturulan kelime daha sonra eşitlik kontrlü için session'a gönderiliyor Session["gResim"] = metin; //Comic Sans MS adında 14px boyutunda font oluşturuluyor Font font = new Font("Comic Sans MS", 14); //Oluşturulan kelime siyah renk olarak soldan 4px üstten 1px içerde olarak yazılıyor g.DrawString(metin, font, Brushes.Black, 4, 1); //Botlar için anlaşılması daha zor hale getirmek için- //3 tane çizgi oluşturuyor farklı renklerde Random rnd = new Random(); g.DrawLine(Pens.DarkSlateGray, rnd.Next(0, 100), rnd.Next(0, 30), rnd.Next(0, 100), rnd.Next(0, 30)); g.DrawLine(Pens.DarkRed, rnd.Next(0, 100), rnd.Next(0, 30), rnd.Next(0, 100), rnd.Next(0, 30)); g.DrawLine(Pens.DarkOrange, rnd.Next(0, 100), rnd.Next(0, 30), rnd.Next(0, 100), rnd.Next(0, 30)); //Son olarak sayfaya resonse ediliyor jpeg formatında bmp.Save(Response.OutputStream, ImageFormat.Jpeg); } public string RastgeleKelime() { string kelime = ""; var rnd = new Random(); for (int i = 0; i < 6; i++) { kelime += ((char) rnd.Next('A', 'Z')).ToString(); } return kelime; } |
Çıktı
Sonuç
Bu makalede basit bir şekilde kendi asp.net doğrulama kodu mekanizmamızı yani captcha sistemimizi nasıl geliştirebiliriz onu görmüş olduk.
📚 ASP.NET Doğrulama Kodu Benzeri Makaleler
- Asp.Net Core “… ‘Context’ only declares a parameterless constructor?” Hatası ve Çözümü
- ASP.NET Core’da Server.MapPath Alternatif Yöntemi
- Asp.Net’de Excel Kullanımında Çıkan “Retrieving the COM class factory for component with CLSID” Hatası ve Çözümü
📚 ASP.NET Doğrulama Kodu Benzeri Makaleler
✍ Lütfen olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.
🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.
👋 Bir sonraki makalede görüşmek dileğiyle.
Yaptığınız paylaşım için tşk ederiz hata ile karşılaşan arkadaşlar default.aspx.cs sayfasındaki session kodunu butonun clik kısmına şu şekilde yazarsanız çalışacaktır. load kısmını boş bırakın buton tetiklenince olay gerçekleşsin test yapıldı sorunsuz çalışıyor benim yaptığım şekilde
if (txtSecurityCode.Value == Session[“gResim”].ToString())
{
lblcaptcha.Text = “Kod Doğru ise yapılıcak işlemler”;
}
else
{
lblcaptcha.Text = “Güvenlik kodunu yanlış girdiniz”;
lblcaptcha.ForeColor = System.Drawing.Color.Red; // burası size kalmış silebilir veya kullanabilirsiniz
}
Aşağıdaki hatayı alıyorum.
Server Error in ‘/’ Application.
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS1061: ‘ASP.kesif_default_aspx’ does not contain a definition for ‘BtnSave_OnClick’ and no extension method ‘BtnSave_OnClick’ accepting a first argument of type ‘ASP.kesif_default_aspx’ could be found (are you missing a using directive or an assembly reference?)
Source Error:
Line 37:
Line 38:
Line 39:
Line 40:
Line 41:
kesif isimli bir klasör içerisine aldım.
Çalışır halini dosya olarak ekleme imkanınız olursa sevinirim.
Merhabalar, bu formu yaptım ama çalıştıramadım. resim.aspx dosyası yok. Bu dosya boş mu olacak acaba..
Çalışır halini dosya olarak paylaşabilir misiniz.
Merhaba,
Resim.aspx boş oluyor.