Özel CAPTCHA hazırlayalım

Daha önceki makalemde Captcha kullanımı ile ilgili bir örnek yapmıştık ama bu örnek Nugetten indirdiğimiz Mvc5 Captcha kullanarak yaptığımız bir örnekti.Şimdiki örneği ise ASP.NET Webformsta kullandığım örneği MVCye uyarlayarak yapacağız. Makalede kullanmak  için MakaleDb veritabanı içinde YorumTBL tablosunu hazırlayalım.Önceki makaleme buradan ulaşabilirsiniz.

YotumTBL dosyasına ait Modelimiz şöyle olacak;

public partial class YorumTBL
{
    public int id { get; set; }
    public string YorumAd { get; set; }
    public string Yorum { get; set; }
    public string ModelKod { get; set; }//Bu model satırını kendimiz ekledik.Veri kaydetme esnasında kullanacağız.
}
Evet HomeController.cs dosyamızın içeriğini kodlayalım.
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
    [HttpPost]
    public ActionResult Index(string YorumAd, string Yorum, string ModelKod)
    {
        if (Session["ResimKodu"].ToString() == ModelKod)
        {
            MakaleDbEntities1 db = new MakaleDbEntities1();
            YorumTBL tbl = new YorumTBL();
            tbl.YorumAd = YorumAd;
            tbl.Yorum = Yorum;
            db.YorumTBL.Add(tbl);
            db.SaveChanges();
            ViewBag.mesaj = "Kayıt yapıldı";
            return View();
        }
        else
        {
            ViewBag.mesaj= "Kod yanlış.";   
        }
        return View();
    } 
    public ActionResult ResimDogrulama()
    {
        var rastgele = new Random((int)DateTime.Now.Ticks);
        string harfler = "ABCDEFGHIJKLMNOQPRSTUXVWYZ1234567890abcdefghijklmnoqprstuvwxyz";
        string karakter = "";
        string kod = "";
        for (int m = 0; m <= 4; m++)
        {
            karakter = harfler[rastgele.Next(0, harfler.Length - 1)].ToString();
            kod += karakter;
        }
        var ResDogru = kod;
        Session["ResimKodu"] = kod;
        FileContentResult resim = null;
        using (var tutucu = new MemoryStream())
        using (var arkaresim = new Bitmap(130, 50))
        using (var grafik = Graphics.FromImage((Image)arkaresim))
        {
            grafik.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
            grafik.SmoothingMode = SmoothingMode.AntiAlias;
            grafik.FillRectangle(Brushes.Aqua, new Rectangle(0, 0, arkaresim.Width, arkaresim.Height));
            grafik.DrawString(ResDogru, new Font("Times New Roman", 24, FontStyle.Italic), Brushes.MediumVioletRed , 5, 4);
            arkaresim.Save(tutucu, System.Drawing.Imaging.ImageFormat.Jpeg);
            resim = this.File(tutucu.GetBuffer(), "image/Jpeg");
        }
        return resim;
    }
Index.cshtml dosyamızı tasarlayalım.
@model yenicaptcha.Models.YorumTBL
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Yorum Kaydet</title>
    <script src="~/scripts/jquery-3.4.1.min.js"></script>
    <script>
        function ResimGetir() {
            $("#resd").attr('src', '/Home/ResimDogrulama?' + new Date().getTime());
        }
    </script>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <table>
            <tr>
                <td>Ad Soyad</td>
                <td>@Html.TextBoxFor(g => g.YorumAd)</td>
            </tr>
            <tr>
                <td>Yorum</td>
                <td>@Html.TextBoxFor(g => g.Yorum)</td>
            </tr>
            <tr>
                <td>Kod Giriniz</td>
                <td>@Html.TextBoxFor(g => g.ModelKod)</td>
            </tr>
            <tr>
                <td>
                    <input type="button" value="Yenile" onclick="return ResimGetir()" />
                </td>
                <td><img src="@Url.Action("ResimDogrulama")" id="resd" style="" /></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="Submit" value="Kaydet" /></td>
            </tr>
            <tr>
                <td colspan="2">@ViewBag.mesaj</td>
            </tr>
        </table>
    }
</body>
</html>
Projemizi çalıştıralım ve sonuç;
Kodu farklı girdik ve kod yanlış hatasını aldık.Kodu doğru girelim.