Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

soru ekleme

Soru sormak için giriş yapmalısınız.

Giriş

Kayıt Ol

Lorem ipsum dolor sit amet, consectetur adipiscing elit.Morbi adipiscing gravdio, sit amet suscipit risus ultrices eu.Fusce viverra neque at purus laoreet consequa.Vivamus vulputate posuere nisl quis consequat.

Ajax Kullanarak Gerçek Zamanlı Form Doğrulaması

Ajax Kullanarak Gerçek Zamanlı Form Doğrulaması

Şimdiye kadar İnternette form verisi girdiyseniz, büyük olasılıkla, verilerin belirli bir ölçüt setini karşıladığını doğrulamak için sunucu tarafında işleme kullanıldığı durumlarla karşılaşmış olabilirsiniz. JavaScript, e-posta adresleri, telefon numaraları, tarihler veya kredi kartı numaraları gibi basit verilerin biçimini doğrulamak için istemci tarafında kullanılabilir. Bununla birlikte, istemci tarafında işleme, iş kurallarını uygulayamayacağı veya doğrulamayı gerçekleştirmek için sunucu tarafı veri kaynaklarına erişememesi nedeniyle sınırlıdır.

Aşağıdaki kullanım durumlarından bazılarını göz önünde bulundurun:

  • Bir çevrimiçi hesap oluştururken bir kullanıcı adına zaten kayıtlı olup olmadığını doğrulamanız gerekiyor
  • Özel iş mantığı gerektiren bir seri numarasını veya kupon kodunu doğrulamanız gerekir
  • Veriyi sunucudaki veya veritabanında bulunan gerçek zamanlı verilerle bağlantılı olarak doğrulamanız gerekir

Geleneksel web uygulamaları, form verisinin sunucuya gönderilmesini gerektirir. Bunun ardından bu verilerin arka uç işleme tabi tutulması ve nihayet postun sonuçlarını veren bir HTML sayfası yenilemesi izlemektedir. Bununla birlikte, bu strateji, özellikle tek bir form alanının geçersiz olduğu ve kullanıcının büyük miktarda form verisini tekrar girmesi gerektiği durumlarda, son kullanıcı için dikkati dağıtabilir. Dolayısıyla sorun şu şekilde olur:

Sorun: “HTML sayfasını yenilemeden sunucu tarafı mantığı gerektiren form verilerini doğrulama nasil yaparsınız?”

Eşzamansız JavaScript ve XML (Ajax) etkileşimleri kullanarak, kullanıcı verileri bir HTML formunda yazarken neredeyse gerçek zamanlı olarak veri doğrulanabilir. Bu durumda, form verisi, arka planda bir sunucu tarafı bileşen tarafından doğrulanıyorken HTML sayfasının olayları işleme devam etmesini sağlayan eşzamansız olarak doğrulanır. Form verileri sunucu tarafı mantığının gerektirdiği ile eşleşmezse, kullanıcı hemen bilir ve HTML sayfasını yenilemek zorunda kalmadan değiştirebilir.

Form verilerini doğrulamak için XMLHttpRequest Nesnesi ve Servlet’i kullanma

Bu çözüm basit bir stratejiyi izlemektedir:

  1. Birincisi, istemcideki bir Ajax doğrulaması, bir form alanındaki bir tuşa basma veya odaklamayı kaybeden bir form alanında olduğu gibi bir HTML JavaScript olayıyla başlatılır. Bir JavaScript işlevi daha sonra bir XMLHttpRequestnesne oluşturur ve yapılandırır; bu nesne, çağrılacak URL’yi, doğrulamak için form verilerini (URL parametreleri olarak gönderilebilir) ve bir geri arama işlevini içerir. Bu örnekte, XMLHttpRequestnesne çağıran URL bir servlet ile eşleştirilir. XMLHttpRequestHTML sayfasının gönderilmesinden sonra , HTML sayfası olayları işleme devam eder.
  2. Sunucu tarafında, servlet isteği alır ve Java Servlet API’sini kullanarak doğrulamak üzere form parametrelerini ayıklar. Servlet daha sonra, form verisini doğrulamak için gerekli tüm iş mantığını uygular ve nihayet form XMLHttpRequestverilerinin geçerli olup olmadığını gösteren bir XML belgesini nesneye döndürür .
  3. Yanıt XMLHttpRequestalındığında , nesne önceden yapılandırılmış geri arama işlevini çağırır. Bu işlev, sunucudan döndürülen XML belgesini temel alan HTML sayfasını güncelleştirir. Güncellenen sayfanın bölümleri derhal yeniden oluşturulur ve kullanıcı form verisinin geçerli olup olmadığını görebilir

Aşağıdaki resimler istemciye HTML sayfasındaki doğrudan geribildirimi göstermektedir.

Şekil 1: Geçerli bir Kullanıcı Kimliği Tepkisi

 

Müşteri, kimlik girilirken kullanıcı kimliğinin geçerli olduğunu görecektir.

Şekil 2: Geçersiz Kullanıcı Kimliği Tepkisi

 

Sonuç: Geçersiz bir kullanıcı kimliği girildiğinde, kullanıcı hemen bilecek. Geçersiz kimliklerin bulunduğu durumlarda “Hesap Oluştur” düğmesinin de devre dışı bırakıldığına dikkat edin.

Basit Onaylama Örneği

Bu noktada, bir form gönderilmeden önce dinamik olarak form alanı verilerini denetlemek için Ajax’ı kullanan bir örnek uygulama inceleyelim. İşte, etkileşimi gerçekleştirmek için gereken istemci ve sunucu kodu.

  • Index.jsp – Bu istemci tarafı HTML sayfası, önemli olaylara yanıt olarak Ajax isteklerini sunucuya gönderen basit bir form içeriyor. Bu Ajax istekleri, bir doğrulama servletini kullanarak form içeriğini doğrulayacaktır.
  • Şekil 3: Ajax Doğrulaması için Sıra Diyagramı


    İstemci Tarafında İstekler

    Index.jsp sayfasındaki bu HTML giriş formu, gerçek zamanlı doğrulama gerçekleştiren kullanıcı girdisini kabul eder.

     
    Biz dahil ettik unutmayın 'autocomplete="off"'özelliği. Autocompletion, aynı kimliğe sahip önceki metin form alanlarına girdiklerinizi “hatırlayan” bir tarayıcı özelliğidir. Tarayıcı, form alanına metin girdiğiniz her sefer bir açılır menüde önceki girişleri görüntüleyerek girişinizi otomatik tamamlamaya çalışır. Bu genellikle yararlı bir özelliktir. Bununla birlikte, gerçek zamanlı form doğrulamasında, tarayıcının otomatik tamamlama kullanmasını önlemek istiyoruz, bu nedenle bu özelliğin kapatılmasını talep ediyoruz.

    Bu form, validateUserId()her tuşa basıldığında JavaScript işlevini çağırır . (Daha kapsamlı bir örnek, gecikme ve sunucu yükü bir sorun haline gelebileceği için sadece “onkeyup” dışında başka etkinliklere temel doğrulamayı seçebilir. Böyle bir örnek ayrıca hangi tuşların basıldığını inceleyebilir ve “Kontrol”, ” “Meta” veya ok tuşları.) Ajax etkileşimini yöneten validateUserId()işlev veAJAXInteractionnesne aşağıda gösterilmektedir.

     
    Burada validateUserId()işlev , URL’yi ve “validateCallback” geri arama işleviyle AJAXInteractionyeni AJAXInteraction(url, validateCallback)çağırarak bir nesne oluşturur. Bu örnekte, URL yalnızca kullanıcı kimliği bir URL parametresi olarak içerir. Sunucuda doğrulamak için URL parametreleri olarak daha fazla form değeri eklemeyi seçebilirsiniz. Eşzamansız Ajax isteği çağrıldığında başlatılır ajax.doGet(). Bu örnek, “validate” URL’sine eşzamansız bir istek göndermek için HTTP GET yöntemini kullanmaktadır. “Kullanıcı kimliği” metin alanının değeri, “kimlik” adı olan bir kaçış URL parametresi olarak gönderilir. Sunucuda, “validate”, URL’ye eşlenen realtive bir URL’dir ValidateServlet.

    Sunucu Tarafında İşlem

    İstek sunucuya ValidationServlet doGet()ulaştığında , yöntem doğrulama isteklerini gerçekleştirir. İlk olarak, gönderilen kimlik, aşağıda gösterildiği gibi basit bir java.util.HashMaphesapta bulunan kullanıcı kimlikleri listesine karşı kontrol edilir . Daha kapsamlı bir örnek, bir veritabanı veya diğer adlandırma kayıt defterine karşı kontrol edebilir.

     
    Bir doğrulama isteğinde geçersiz bir kullanıcı kimliği, kullanıcıya döndürülen bir hata iletisine neden olabilir. Bu örnekte, istemci XMLHttpRequestnesnesinin bu örnekteki XML’i bekleyeceğinden , Content-Type öğesinin text / xml olarak ayarlanması gerektiğini unutmayın. Buna ek olarak, bazı tarayıcı istemcilerinin önbelleğe alınmış yanıtları kullanmasını önlemek için Cache-Control üstbilgisi no-cache’e ayarlanmalıdır (HTTP 1.0 istemcileri için üstbilgi adı Pragma’dır).

    Geri Arama Fonksiyonu

    Sunucudan bir yanıt aldıktan sonra, istemci tarafı XMLHttpRequestnesnesi (nesneye sarılır AJAXInteraction) Ajax çağrısınınsonucunu denetler. Eğer XMLHttpRequest readyStatebaşarılı bir Ajax etkileşimi anlamına 4, ve HTTP yanıt kodu başarılı bir HTTP çağrısı gösteren 200 olduğunu, daha sonra validateCallback()geri çağırma işlevi çağrılır.

    Sunucudan alınan XML belgesi processRequest(), aşağıda gösterilen işleve bir argüman olarak iletilir .

     
    <valid>Içeren unsur, ya “doğru” ya da “yanlış”, kontrol edilir ve HTML belgesi ve stilleri hemen sonuçlarına göre değiştirilir. CSS stilleri, JavaScript kodundan dışa aktarılır ve sayfanın üst kısmında tanımlanır:

     
    Müşteri bir <valid>false</valid>ileti alırsa <div id="userIdMessage">öğenin içeriğini bir hata iletisi ile günceller ve öğenin içeriği ve stili aşağıdaki ifadeleri kullanarak ayarlanır:

     
    Çağrı başarılı olursa, userIdMessageşu ifadeyi kullanarak çağrılır:

     
    Ve elemanın içeriği ve tarzı aşağıdaki gibi ayarlanır:

     
    HTML belgesi otomatik olarak yeniden oluşturulacak ve uygun mesaj görüntülenecektir.

     
    <div id="userIdMessage">Yukarıdaki HTML snippet’i, gerçek zamanlı doğrulama sonuçlarını göstermek için form alanının yakınında görünen öğeyi gösterir .

    Onaylanmış Kullanıcı Kimliğini Gönderme

    Son olarak, kullanıcı “Hesap Oluştur” düğmesini tıklattığında, form HTTP POST yöntemini kullanarak “validate” URL’sine gönderilir.ValidateServlet doPost()Sunucuda yöntem daha sonra isteğini işler.

     
    Burada, doPost()yöntem kullanıcı ID parametresini isteğinden ayıklar ve kayıtlı kullanıcı kimlikleri listesine ekler. Sonuç olarak, bu kullanıcı kimliğini girme girişimi sonraki isteklerde bir hatayla sonuçlanır. Müşteri daha sonra, id’in eklenip eklenemeyeceğine bağlı olarak basit bir başarı veya hata sayfasına yönlendirilecektir.

    Ajax işlevselliği bir kullanıcı kimliğinin geçerli olduğunu bildirmiş olsa da, kod kullanıcı kimliğinin listeye eklenmediğini yine de denetler. Bu, bir üçüncü tarafın istemcinin doğrulama isteği ile form gönderimi arasında bu kimliği kaydetmesi ihtimaline karşı bir güvenlik önlemidir. Form verileri, sunucu tarafında işlemeden önce daima yeniden doğrulanmalıdır. Form verilerini yenilemek başarısız olursa, sunucuda güvenlik açıkları veya tutarsız duruma neden olabilir.

Hakkında Hilal Saim

Namık Kemal Üniversitesi/Bilgisayar Mühendisliği

Beni Takip Et

Leave a reply

CAPTCHA
Refresh

*