mehmetduran.com - Paylaşmak Güzeldir...
Asp.net MVC Captcha Uygulamam
Bu yazımda MVC Captcha uygulamamı sizlere tanıtacağım. Asp.net MVC 1.0 ve 2.0 sürümleri ile çalışan bir Captcha uygulaması geliştirdim. Şimdilik MVC ile hazırlanmış bu uygulamayı fırsat bulduğumda tüm Asp.net uygulamalarında kullanılan esnek bir kontrol haline getirmeyi düşünüyorum. Bu uygulamayı hazırlamaya uzun bir süre önce karar vermiş ve başlamıştım ancak yoğunluk nedeniyle üzerinde duramamıştım. Tasarım ve esneklik olarak çok çok iyi olmasa da şimdilik amacına hizmet edebilecek bir uygulama olduğunu düşünüyorum. Zamanla da geliştirip daha esnek daha güzel bir kontrol haline getirmeyi düşünüyorum. Dll olarak paylaştım ve tüm MVC projelerine bu Dll'i ekleyip sorunsuzca kontrolü kullanabilmekteyiz. Şimdi bu uygulamayı nasıl kullanacağımıza bakalım.

Öncelikle bu uygulamayı Dll olarak hazırladım ve kodlarını bir süre paylaşmayı düşünmüyorum. Tam olarak istediğim bir kontrol haline getirdikten sonra proje olarak paylaşmayı düşünüyorum. Uygulamayı kullanmak için hazırladığım Dll kütüphanelerini buradan indirerek projeye eklemeliyiz (MVC 1.0 ve 2.0 sürümleri için farklı Dll'ler mevcut). Dll dosyasını projeye ekledikten sonra Captcha kontrolünü kullanabilmek için yapmamız gerekenleri ise aşağıdaki kod bölümünde görebilirsiniz. (Örnek olarak hazırladığım sayfanın kodlarıdır)

// Html Bölümü - View
 
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="MDCaptcha" %>
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
      <%= Html.ValidationSummary() %>
      <% Html.BeginForm("MDCaptcha", "Uygulamalar", FormMethod.Post); %>
        <%= Html.TextBox("Ad") %>
        <%= Html.TextBox("SoyAd") %>
        <%= Html.Captcha() %>
        <input type="submit" value="Gönder"> <%= ViewData["sonuc"] %>
      <% Html.EndForm(); %>
</body>
</html>
 
 
 
// Controller Bölümü
 
public ActionResult MDCaptcha()
{
  return View();
}
 
[AcceptVerbs(HttpVerbs.Post)]
[MDCaptcha.CaptchaKontrol]
public ActionResult MDCaptcha(string Ad, string SoyAd)
{
  if (string.IsNullOrEmpty(Ad)) ModelState.AddModelError("Ad", "Ad Gerekli");
  if (string.IsNullOrEmpty(SoyAd)) ModelState.AddModelError("Soyad", "SoyAd Gerekli");
 
  if (ModelState.IsValidField("Captcha"))
  {
    // eğer Captcha değeri doğru ise çalışacak kodlar burada tanımlanacak
    if (ModelState.IsValid)
    {
      ViewData["sonuc"] = "İşlem Tamam";
    }
    else
    {
      ViewData["sonuc"] = "Veriler Eksik!";
    }
  }
  return View();
}

Kodlarda görüldüğü gibi ilk olarak; kullanacağımız sayfaya (View, usercontrol, vb.) eklediğimiz Dll'i referans olarak ekliyoruz. Daha sonra kontrolü oluşturan ve Dll içinden gelen MVC metodumuzu (Html.Captcha()) çağırarak kontrolün oluşmasını sağlıyoruz. Bu şekilde kontrolümüz oluşmuş durumda. Kodlama bölümünde ise bu kontrolden girilen değere göre işlemleri yaptıracağız veya iptal edeceğiz. Bunun için de öncelikle kullanıcılardan alınan verileri işleyecek olan Action'a Dll içinden gelen CaptchaKontrol özelliğini veriyoruz. Daha sonra ise Action içinde Captcha değerinin doğru girilme durumunda çalışacak olan kodları belirtiyoruz.

Asp.net MVC Captcha UygulamamBu şekilde hazırladığım Captcha kontrolünü kullanıcılardan veri alınan sayfalarda kullanabiliyoruz. Böylece spam olaylarının ve robot tarzı yazılımsal saldırıların önüne geçebiliriz.

Hazırladığım uygulama ilk aşamada çok esnek ve tasarımsal olarak hoş olmamış olabilir ancak Captcha uygulaması olarak görevini yerine getirmekte. Şu anda kontrolde 4 karakter oluşmakta ve kullanıcıların bu karakterleri doğrulamaları gerekmekte. Zamanla bu değerleri ve tasarımı dinamik olarak oluşturacak bir yapıya getirerek daha esnek bir kontrol yapacağımı düşünüyorum. Umarım kullanacaklar memnun kalır.

Uygulamayı çalışır halde buradan görebilirsiniz.
Gerekli Dll dosyasını da buradan indirebilirsiniz. (MVC 1.0 ve 2.0 sürümleri için farklı Dll'ler mevcut. MVC 1.0 sürümü ile hazırlanan Dll tüm MVC projelerde sorunsuzca çalışmaktadır.)

İyi Çalışmalar.
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Microsoft Ajax ile Script Kodlama Yapmak (Webmethod ve pageLoad) jQuery Ajax ile UserControl'leri Etkin Kullanma Engelleri Aşarak Geliyoruz... Staj Hareketliliği Bloğumda Kullandığım SiteMap Sınıfı
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Emre Tuna 26 Ocak Salı 2010 18:44 #1
Eyvallah Mehmet Kardeşim.
emre 02 Haziran Çarşamba 2010 18:12 #2
burada (ModelState.IsValidField("Captcha") dedigimiz zaman View tarafında Captcha isimli kontrol olması gerekmiyor mu?kontrolü nerede yapıyoruz acaba?
Mehmet Duran 02 Haziran Çarşamba 2010 23:43 #3
Merhaba. Burada söylediğin gibi kontrol var ama bu kontrol arka planda (Dll tarafında) üretilip sayfaya ekleniyor. Yapı olarak biraz amatör olmuş. Yoğunluktan dolayı ilgilenemedim ama fırsat bulunca bu uygulmayı sorunsuz ve en kullanılır hale getireceğim.
Haluk 20 Temmuz Salı 2010 16:28 #4
Merhaba,ellerinize sağlık. Çok güzel olmuş. Yalnız bir sıkıntı var. Resmin source yok? src = "" yani resim gözükmüyor...
Mehmet Duran 20 Temmuz Salı 2010 16:38 #5
Merhaba. Kod bölümünde helper metodu ile html img tagını oluşturuyorum. Bu yüzden kod bölümünde src direk olarak gözükmüyor ama çalışan sayfanın kaynağına bakarsan img tagını ve src'si olduğunu göreceksin.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Ne edersen kendine, edersin kendi kendine.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009