reCAPTCHA ve Classic ASP Entegrasyonu (Doğrulama)
Classic ASP ile yazılmış web sitelerinize reCAPTCHA ve Classic ASP Entegrasyonu nasıl yapacaksınız? En hızlısından çözüme gidiyoruz. Mevcut sistmeinize entegre edecekseniz yapınızda ki değişiklikleri uyarlamanız gerekecek fakat endişe edecek birşey yok, çünkü her ne kadar “klasik asp öldü” deselerde, doğru kod yapısı ile herşeyi entegre edebilir, kullanabilirisiz.
Özenli bir kod yazıyorsanız, performans endişeniz de olmaz. Hadi o zaman entegrasyona başlayalım.
Bu yazı en basit kullanım şekliyle anlatılmıştır. Daha profesyonel bir şekilde geliştirmek için basit mantığı anlamanıza yardımcı olması için yazılmıştır.
Önce reCAPTCHA için kayıt olmanız ve kullanacağınız web sitesini tanıtmanız gerekiyor. Bunun için https://www.google.com/recaptcha/ adresini ziyaret ediyoruz.
Bu noktada bilmeniz gereken 2 önemli anahtar var.
- Site-Key: Bu herkes tarafından görülebilen bir koddur. Paylaşmanızda sakınca yoktur. Zaten kaynak kodunuzdan erişilebilir oluyor.
- Secret-Key: Bu ise verifikasyon yaparken kullanacağınız gizli bir anahtardır. Sadece yazılımda gömülü olmalıdır. Aşağıda fonksiyonun üstünde belirttiğim alana yazıp, gömülü bırakacaksınız.
Bu iki veriyi, yukarıda belirttiğim adresten kayıt işlemlerinizi tamamladıktan sonra ulaşabileceksiniz. Devam etmeden önce bu bilgileri almanız süreci kolaylaştırır.
Önce formumuza ve html kodlarımıza eklememiz gereken bazı veriler var.
reCAPTCHA ve Classic ASP Entegrasyonu
Önce <head> ve </head> arasına
1
<script src="https://www.google.com/recaptcha/api.js"></script>
scriptini ekliyoruz. Bu ilgili div içine reCaptcha sistemini çağıracak böylece reCAPTCHA ve Classic ASP Entegrasyonu için ilk adımları atmış olacaksınız.
Daha sonra <form> ve </form> arasında uygun bir yere
1
<div class="g-recaptcha" data-sitekey="API-SITE-KEY"></div>
div elementini ekliyoruz. Bu element, eklediğimiz script tarafından doldurulacak. Eğer SITE-KEY kısmında hata alırsanız burada gösterilecek.
Doğrulama Fonksiyonu
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
<%
ChaptaSecret = "API-SEVRET-KEY"
Function recaptchaVerify(TheCode)
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
If Len(ChaptaSecret) < 10 Then
Response.Write "recaptchaVerify() Hatalı Secret Key"
recaptchaVerify = False
Exit Function
End If
If Len(TheCode) < 50 Then
Response.Write "recaptchaVerify() Doğrulanacak Kod İletilmedi"
recaptchaVerify = False
Exit Function
End If
dataParam = "remoteip="& Request.ServerVariables("REMOTE_ADDR") &"&secret="& ChaptaSecret &"&response="& TheCode
Set httpGoogle = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0")
httpGoogle.open "GET", "https://www.google.com/recaptcha/api/siteverify?"& dataParam &"", false
httpGoogle.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
httpGoogle.setRequestHeader "Content-Length", Len(dataParam)
httpGoogle.setRequestHeader "Content-type", "text/json; charset=utf-8"
httpGoogle.send
strStatus = httpGoogle.Status
strRetval = httpGoogle.responseText
Set httpGoogle = nothing
Set recaptchaJson = JSON.parse(join(array( strRetval )))
If Err <> 0 Then
Response.Write "recaptchaVerify() Google ile İletişim Kurulamadı "
recaptchaVerify = False
Exit Function
End If
If recaptchaJson.success = True Then
recaptchaVerify = True
Else
Response.Write "recaptchaVerify() Doğrulanamadı !"
recaptchaVerify = False
Exit Function
End If
End If
End Function
%>
Fonksiyonun Kullanımı
1
2
3
4
5
6
<%
If recaptchaVerify( Request.Form("g-recaptcha-response") ) = False Then
Response.Write "Güvenlik Kodu Hatalı. Please Validate You Are Human <a href='#'>Geri Dön / Go Back</a>"
Response.End
End If
%>
Kullanmanız gereken bir kütüphane daha var o da ASP2Json kütüphanesi. İlgili kütüphaneye buraya tıklayıp ulaşabilirsiniz. Google’a gönderdiğiniz kodu verify etmek için dönen cevap json formatında olduğu için, ilgili cevaptan verileri okumanız gerekiyor. Eğer bu kütüphaneyi eklemezseniz yazılım size hata döndürecektir. Kodu kendi yapınıza göre geliştirebilirsiniz.
Eğer bir de jQuery ile ön validasyon yapacağım diyorsanız yukarıda eklediğimiz div içerisinde bir parametre daha olmalı
1
<div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="BURAYA SITE-KEY GELECEK"></div></pre>
ve tabii bir de javascript kodumuz var;
1
2
3
4
function recaptchaCallback() {
// Ön doğrulama tamamlandığında yapılacak işlemler
$("#GonderButonu").prop("disabled", false);
};
Örnek olarak bir fonksiyon verdim, bu fonksiyon ile captcha ön doğrulama yapıldığında tetikleniyor, bir #GonderButonu ID sine sahip butonum var, disabled pozisyondayken bunu tekrar kullanılabilir hale getiriyorum. Ve submit işlemine izin veriyorum. Varyasyonları istediğiniz gibi geliştirebilirsiniz.