Robotları Engellemek İçin Rastgele Sayı kullanarak C# ile Captcha Doğrulama Sistemi

Merhaba arkadaşlar, bugün sizlere bilgisayar programcılığı öğrencisi olarak karşılaştığımız bir final sorusunu ve nasıl çözdüğümü anlatmak istiyorum. Bu soru, hocamızın bize verdiği ve robotların otomatik erişimini engellemek için bir sistem oluşturmamızı istediği bir sorudur. Sizlerle, nasıl bir çözüm yöntemi geliştirdiğimi ve nasıl bir program kodladığımı paylaşacağım.

I. Sorunun Tanımı: Hocamız,Programlama Teknikleri dersimizin uygulama sınavımızda bize bir güvenlik katmanı oluşturmamız ve BOT girişleri engellememiz için bir 4 haneli rastgele sayı doğrulama sistemi tasarlamamızı istedi. Bu sistem, kullanıcıya rastgele4 haneli bir sayı göstererek, kullanıcının bu sayıyı doğru bir şekilde girmesini isteyecek, kullanıcının üç hakkı olacak. Doğru cevap veren kullanıcılar insan olarak kabul edilecek, yanlış cevaplar ise robotları tespit etmek için kullanılacaktır. Ayrıca, kullanıcılara 3 hakkı vererek doğru cevap vermelerini sağlamamız istendi. Eğer 3 denemede de yanlış cevap verilirse, kullanıcıların erişimi engellenecek.

“Caphta” isimli fonksiyon çalıştığında rasgele olarak 4 haneli bir sayı oluşturularak ana fonksiyona gönderilecektir. Oluşturulan bu sayı kullanıcıya ekranda gösterilecektir ve aynısı girilmesi istenecektir. Kullanıcıdan değer girmesi için “CvpAl” isimli bir fonksiyon oluşturulacaktır. Kullanıcıdan girilen cevap ile rastgele oluşturulan değer eşit olursa ekranda “Siz robot değilsiniz!” yazmalıdır. Kullanıcıya doğru cevap vermesi için 3 hak verilmelidir. Eğer 3 hakkında da yanlış değer girerse “Siz robotsunuz!” diyerek program kapatılmalıdır.

captcha numbers only

II. Programımız için Öncelikler: İlk olarak ana fonksiyon için kullanıcıdan cevap almak için “cevapal” isimli fonksiyon oluşturmalıyım. bu fonksiyon kullanıcıdan gelen cevabı kendisininki ile karşılaştıracak. kullanıcının 3 hakkı var. iki fonksiyon olacak. ilki rastgele 4 haneli sayı sayı için fonksiyon, diğeri de kullanıcıdan cevap almak için “cevapal” fonksiyonudur.

III.Captcha Doğrulama Sistemi — Kodlar:

using System;

class Program
{
static void Main()
{
int remainingAttempts = 3;
int generatedNumber = Caphta();

while (remainingAttempts > 0)
{
if (CevapAl(generatedNumber))
{
Console.WriteLine("Siz robot değilsiniz!");
return;
}

remainingAttempts--;
Console.WriteLine("Yanlış cevap! Kalan hakkınız: " + remainingAttempts);
}

Console.WriteLine("Siz robotsunuz!");
}

static int Caphta()
{
Random random = new Random();
int number = random.Next(1000, 10000);
Console.WriteLine("Lütfen aşağıdaki sayıyı doğrulayın: " + number);
return number;
}

static bool CevapAl(int generatedNumber)
{
Console.Write("Sayıyı giriniz: ");
int input = Convert.ToInt32(Console.ReadLine());
return input == generatedNumber;
}
}

IV. Kodların Çalışması: Programı çalıştırdığımızda, öncelikle “Caphta” fonksiyonu rastgele bir 4 haneli sayı üretir. Bu sayı kullanıcıya gösterilir ve kullanıcıdan aynı sayıyı girmesi istenir. Ardından, “CevapAl” fonksiyonu kullanıcıdan bir sayı alır ve girilen sayı oluşturulan rastgele sayıyla karşılaştırılır. Eğer doğru bir cevap verilirse, kullanıcıya “Siz robot değilsiniz!” mesajı gösterilir. Yanlış cevaplar için kullanıcıya 3 hakkı verilir ve her yanlış cevap sonrasında kalan hakkı kullanıcıya bildirilir. Eğer kullanıcı 3 hakkını da yanlış cevaplarla kullanırsa, “Siz robotsunuz!” mesajı kullanıcıya gösterilir ve program sonlanır.

V.Sonuçlar:

I.Kullanıcı doğru sayıyı girdiğinde CevapAl fonksiyonu kullanıcıya “Siz robot değilsiniz!” demekte ve programı sonlandırmaktadır. Kodlar başarılı ve doğru şekilde çalışmaktadır.
II.Kullanıcı sayıyı yanlış girdiğinde CevapAl fonksiyonu kullanıcıdan tekrar sayı girmesini istemekte ve “int remainingAttempts = 3” (3 hak veren integer) 1 azalmaktadır. Kullanıcı 3 kez yanlış yanıtı girip, remainingAttempts=0 olduğunda ise CevapAl fonksiyonu programı “Siz robotsunuz!” diyerek program kapatmaktadır. Kodlar başarılı ve doğru şekilde çalışmaktadır.

Eğer Makalemi beğendiyseniz bir alkış bırakın ve beni Medium ve Github da takip edin!!