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.
Ö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.
Bu iki veriyi, yukarıda belirttiğim adresten kayıt işlemlerinizi tamamladıktan sonra ulaşabileceksiniz. Devam etmeden önce bu bilgileri almanızda fayda var.
Önce formumuza ve html kodlarımıza eklememiz gereken bazı veriler var.
Önce <head> ve </head> arasına
<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
<div class="g-recaptcha" data-sitekey="BURAYA SITE-KEY GELECEK"></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
<% ' ################################### ' Google ReCaptcha Verfiy by badursun ' badursun@gmail.com ' ################################### ChaptaSecret = "SECRET-KEY-BURAYA-GELECEK" 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 %>
Kullanım Fonksiyonu
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ı
<div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="BURAYA SITE-KEY GELECEK"></div>
ve tabii bir de javascript kodumuz var;
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.