Asp.Net’de Ajax kullanılarak CAPTCHA

CAPTCHA NEDİR?
Açılımı : Completely Automated Public Turing test to tell Computers and Humans Apart
Görüldüğü gibi bunu türkçeye çevirmek bile zor
Zaten çevirsek bile birçok insanın kafasını karıştıracağı kesin
açıklaması biraz zor ama forumlarda vs lerde üye olurken size yukarıdaki resmi girin gibisinden şeyler isterler. İşin aslı biz buna güvenlik kodu (captcha) diyoruz. Bunun amacı ise son derece basittir. Siteye herhangi bir bot gelip sınırsız sayıda ilgili formu submit edebilir. Bu gibi durumlara engellemek için captcha kullanırız.
Bu işi güzel bir örnekle açıklayalım : Bir site yaptığınızı varsayalım. Siteniz üyelik kabul etsin. Eğer siz üyelik formuna captcha koymaz iseniz. Bir bot gelip üyelik formunu binlerce kez doldurup o sayıda kullanıcı ekleyebilir. (Aslında çok hoş olurdu öle binlerce üye ama maksat sizin veritabanınızı şişirmek)
.
Şimdi size güzel bir captcha kodunu anlatmaya çalışacağım…
sayfamıza eklememiz gereken ilk şey, captha yapacak olan sayfamızı ilgili sayfada referans göstermek;
<%@ Reference Page="~/SecureImg.aspx" %>
Bundan sonra yapacağımız ise captcha resmini oluşturacağımız img tagini ve sayfa üzerinde javascript koduyla yenisini üretecek butonu oluşturmak;
<asp:Image ID="imgKod" runat="server" /> <input type="button" onclick="Kod()" value="Yenile" />
Bundan sonraki işlemimiz ise javascript kodumuzu yazmak olacak. Burada dikkat etmemiz husus ise, bu oluşturacağımız javascript kodunu sayfamızın sonuna koymamız gerektiğidir. Yoksa sayfa ilk açıldığında capthca resmi gözükmeyecektir.
<script type="text/javascript" language="javascript">
function Kod ()
{
var i = document.getElementById ('imgKod');
i.src = '<%=ResolveUrl("~/SecureImg.aspx")%>?r=' + Math.random ();
}
if (document.getElementById ('imgKod') != null)
{
Kod ();
}
</script>
İşte bu kadar
İnşallah işinize yarayan bir yazı olmuştur.
İlgili örnek projeyi indirmek için tıklayın.
21 yorum bulunmaktadır - “Asp.Net’de Ajax kullanılarak CAPTCHA”
Yorum Yapın
Etiketler
Son Yazılar
- Cep telefonu kullanıcılarını mobil siteye nasıl yönlendirilir?
- require vs require_once
- IFrame ‘in yüksekliğini içeriğe göre ayarlamak
- Bmp uzantılı resim dosyasını jpg veya png olarak kaydetmek
- Php Resim Boyutlandırmasında Memory Limit sorunu
Son Yorumlar
- Php’ de Ajax yardımıyla dosya yükleme (File Upload) için chat
- Asp.Net’de Ajax kullanılarak CAPTCHA için Enes Pekkaya
- Asp.Net’de Ajax kullanılarak CAPTCHA için Cenk
- JQuery Form Kontrol için Sedat Kumcu
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için Enes Pekkaya
Haftanın Özlü Sözü
Bağlantılar
- Hayata Tat Kat
- Innova Bilişim Çözümleri
- Onur Değerli
- Pleksus Bilişim Teknolojileri
- Sinan Gül
- Taner Günal
- Toppik – Minoxil
Arşivler
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009


öncelikle paylaştığın için teşekkür ederim arkadaşım .
ben yapmaya çalışıorum bişeyler
fakaat bende CAPTCHA resim çıkmıyor bir türlü çok uğraştır bir sorun yok lakin kodlarımıda sürekli inceledim gözden geçirdim birde sen bak bakalım
.style1
{
width: 76px;
}
.style2
{
width: 78px;
}
.style3
{
width: 120px;
}
.style4
{
width: 400px;
}
.iletisim
{
color: #000;
text-decoration: none;
font-family: Arial;
font-size:12px;
}
Adı Soyadı
*
E-mail
*
Web
http://
*
Mesaj
*
function Kod()
{
var i = document.getElementById(‘imgKod’);
i.src = ‘?r=’ + Math.random();
}
if (document.getElementById(‘imgKod’) != null)
{
Kod();
}
Sorun javascriptinde. Image’ın src sinden “/Captcha/SecureImg.aspx” bunu çıkarttığın için hata oluşmuş. (Eğer sen “SecureImg.aspx” sayfasının yeri “Captcha” klaösürü değilse, ona göre yer belirtmen lazım)
Olması gereken javascript aşağıdadır.
function Kod ()
{
var i = document.getElementById (‘imgKod’);
i.src = ‘/Captcha/SecureImg.aspx?r=’ + Math.random ();
}
if (document.getElementById (‘imgKod’) != null)
{
Kod ();
}
function Kod()
{
var i = document.getElementById(‘imgKod’);
i.src = ‘?r=’ + Math.random();
}
if (document.getElementById(‘imgKod’) != null)
{
Kod();
}
kod bu şekilde bir değişiklik yapmadım ama bir türlü çalışmıyor yinede
kod tam yazdığım şekilde çıkmıyor o yüzden anlaşamıyoruz
i.src = ‘?r=’ + Math.random();
herhangi bir hata gözükmüyor
anlayamadım bir türlü
merhabalar
benim bi sorum olacaktı.
ben bi iletişim formu hazırladım isim, mail ve mesaj kısımları var
bu captcha kodunu kulladığımda istiyorumki güvenlik kodunu yanlış girerse kullaınıcı yollayacağı maili gelmesin.
ben denedim.mesala güvenlik kodunu yanlış girince uyarı veriyor ama bana atılan mailde ageliyor
bunu nasıl yapacağım.
Eğer captcha yı kontrol ettiğin yerde fonksiyonu return; edersen aşağıdaki işleri yapmadan (Mail gönderme) o fonksiyondan çıkacaktır. Böylece sana mail gelmeyecektir. Yada if ile kontrol ettikten sonra eğer captcha yanlı ise hatayı bastır else ilede mail göndermesini sağlayabilirsin. Seçim senin
Bende de resim görünmüyor
WEb sitesinin master page’ınde de form var server taraflı 1 form çalışabilie gibi bir uyarı geliyor. Onu silip çalıştırdığımda ise resimleri göremiyorum.
function Kod() {
var i = document.getElementById(‘imgKod’);
i.src = ‘~/SecureImg.aspx?r=’+ Math.random();
}
function Kod() {
var i = document.getElementById(‘imgKod’);
i.src = ‘SecureImg.aspx?r=’+ Math.random();
}
her ikisini denedim ama sonuç alamadım
bu dosya ana dizinde.
Merhaba,
SecureImg.aspx ana dizinde olduğundan emin iseniz image taginin idsinin “imgKod” olduğuna bakar mısınız? Eğer aynı değer değil ise güncellediğinizde captcha başarılı şekilde gözükmesi gerekmekte.
merhaba. benim sorunum sizin yazdığınız kodlar ile alakalı değil farklı javascript kodları da denedim fakat bir türlü sorunumu halledemedim. sizin örneğiniz üzerinden anlatmam gerekirse
document.getElementById(‘imgKod’) sürekli null geliyor.
“Microsoft JScript çalışma hatası: ‘null’, null veya bir nesne değil” hatasını alıyorum. neden kaynaklanıyor olabilir?
sayfam masterpage’e bağlı olduğu için contentplaceholder id’leri değiştiriyormuş. biraz geç de olsa farkettim. masterpage ile kullanacak arkadaş varsa
document.getElementByID(”).src vesaire olarak kullanırsa sorun olmayacaktır.
Kendi cevabınızı kendiniz bulmuşsunuz
framework 4.0 için bir çözüm yok mu acaba
Aslında captcha 4.0 içinde çalışmakta.
Merhaba master page ile kullandığımda ben de resmi göremedim. Arkadaşın biri belirtmiş. src ile kullanılırsa sorun olmayacaktır diye. acaba tam olarak nasıl kullanabiliriz onu ? teşekkürler çok güzel bir uygulama olmuş.
Semih hocam,
büyük ihtimalle sorun imgKod isimli .net bileşenimizin ismini masterpage kendisine özgü bir id vermekte. Örn : content1_imgKod
Siteni browserda açıp kaynağı görüntüle deyip ilgili image bileşeninin adını kontrol etmelisin. Aynı değil ise javascriptteki adını değiştirmen gerekmekte.
Hocam çok teşekkürler ya eline sağlık. Oldu şimdi. Master Page img kontrolüne
MainContent_imgKod olarak id veriyormuş. Javascript tarafında düzeltince sorun ortadan kalktı. Bloğunuzu bu günlerde takip ediyorum çok güzel ve yararlı içierikler var. Teşekkürler.
Kolay gelsin
Merhaba Enes,
Öncelikle böyle sade ve anlaşılır makale hazırladığın için teşekkür ederim.
Uygulama örneğini ajax ile geliştirmiş olduğum bir kayıt formuna entegre etmeye çalışıyorum ama benim kayıt işlemim .aspx sayfa üzerinde javascript içerisinde gerçekleşiyor. Durum böyle olsunca session’a erişemiyorum ve if döngüsünü gerçekleştiremiyorum.
Acaba bu sorunu nasıl aşabilirim bir fikrin var mı?
Teşekkürler
İyi çalışmalar
Cenk
Aslında captcha’nın mantığınıda ajax diyebiliriz. Sonuç itibariyle sayfanın sonuna eklenmiş olan javascript koduyla img taginin srcsine güvenlik kodunun gösterilmesini sağlıyoruz. Sessionda bu şekilde her seferinde değişmekte.
Session oluşmadığından emin misiniz? Eğer güvenlik kodu ekranda görünmüyorsa session oluşmaz. Bir başka durum ise siz aynı session id’yle bir değeri set ediyor olabilirsiniz.