Formlar neden veriyi kaybeder
Kullanıcılar birçok nedenle başvuru formlarını terk eder: bir tarayıcı sekmesi yanlışlıkla kapanabilir, ağ sorunu gönderimi kesebilir veya bir doğrulama hatası zaten doldurulmuş alanları silebilir. Bunu yaşandığında maliyet sadece sinirlilikle sınırlı kalmaz. Her kayıp giriş, kaçırılan bir sorgu demektir ve tekrar denemeler genellikle tamamen bırakılmaya yol açar. Girdiyi koruyan bir form, kullanıcının zamanına saygı gösterir ve işlem hattınızı korur.
Oluşturmadan önce karar kriterleri
Kalıcılık stratejinizi üç faktöre göre seçin: form uzunluğu, veri hassasiyeti ve gönderimin kritikliği. Kısa bir bülten kaydı, çok sayfalık bir iş başvurusundan daha az korumaya ihtiyaç duyar. Form kişisel tanımlayıcılar, finansal detaylar veya belgeler toplayorsa, yalnızca istemci tarafı depolama yeterli değildir; dinleme sırasında ve aktarım sırasında şifreleme ile sunucu tarafı taslaklara ihtiyacınız vardır. Düşük riskli sorgular için tarayıcı tabanlı otomatik kayıt yeterli olabilir. Önce riski haritalayın, ardından teknik yaklaşımı seçin.
Uygulama adımları
İlerletişimli geliştirme ile başlayın. JavaScript olmadan çalışan düz bir HTML formu oluşturun, ardından üzerine iyileştirmeler katın. Tarayıcıların daha önce girilen değerleri önerebilmesi için her girdi üzerinde autocomplete özniteliğini kullanın. Temel istemci tarafı doğrulama için required ve pattern özniteliklerini ekleyin, ancak bunları tek koruma olarak asla kullanmayın.
Sonra, yerel taslak kaydını uygulayın. Kullanıcı bir alana yazdığında, değeri sabit bir form tanımlayıcısı ile anahtarlandırılmış tarayıcı localStorage veya IndexedDB'ye yazın. Sayfa yüklendiğinde, kaydedilmiş bir taslak olup olmadığını kontrol edin ve alanları otomatik olarak yeniden doldurun. Taslağı yalnızca başarılı bir sunucu gönderiminin ardından veya kullanıcı formu açıkça sıfırladığında temizleyin. Bu, yanlış yenilemeler ve kapanan sekmelere karşı koruma sağlar.
Daha uzun formlar için, düzenli aralıklarla veya alan odak kaybolduğunda (blur) taslakları sunucuya kaydedin. Yalnızca değişen alanları hafif bir istekle gönderin ve yükü anonim bir oturum belirteci veya kimliği doğrulanmış kullanıcı hesabıyla ilişkilendirin. Kullanıcı döndüğünde, taslağı getirin ve mevcut form değerleriyle birleştirin. Bu yaklaşım cihaz değişikliklerine ve tarayıcı temizlemelerine karşı dayanıklıdır, ancak gizlilik hususları getirir.
Doğrulamayı dikkatli bir şekilde ele alın. Hataları genel bir sayfa üstü mesajı yerine ilgili alanın yanında gösterin. Bir hata oluştuğunda girilen diğer tüm değerleri koruyun. Başarısız gönderimde formu temizlemeyin; kullanıcıyı verileriyle birlikte aynı sayfaya geri döndürün ve neyin düzeltilmesi gerektiğini tam olarak vurgulayın.
Gönderme düğmesi için açık bir durum ekleyin. Çoğaltma gönderilerini önlemek için gönderim sırasında düğmeyi devre dışı bırakın, ancak istek başarısız olursa kullanıcının verileri yeniden girmeden tekrar deneyebilmesi için yeniden etkinleştirin. Alındığını onaylayan ve sonraki adımları açıklayan bir başarı mesajı sağlayın.
Yaygın hatalar ve nasıl önleneceği
Yaygın bir hata, hassas verileri localStorage'de düz metin olarak saklamaktır. Sayfada çalışan herhangi bir betik bunu okuyabilir, bu da kişisel veya finansal bilgiler için tehlikelidir. Hipotetik olarak, bir iş başvuru formu bir ulusal kimlik numarasını localStorage'ye kaydediyorsa ve bir üçüncü taraf bileşeni tehlikeye atılırsa, bu tanımlayıcı ortaya çıkabilir. Hassas alanları istemci tarafında saklamaktan kaçının; erişim kontrolü ile sunucu tarafı taslaklarda tutun.
Başka bir hata sessiz taslak üzerine yazmalarıdır. Kullanıcı aynı formu iki sekmede açıp birinde kaydederse, diğer sekme yenilendiğinde eski verileri yükleyebilir ve yeni girişleri üzerine yazabilir. Çakışmaları tespit etmek ve daha yeni bir taslağı değiştirmeden önce kullanıcıyı uyarmak için son değişiklik zaman damgası veya sürüm bayrağı kullanın.
Çıkış yaparken localStorage'nin temizlenmesi de sorunludur. Oturum açmış bir kullanıcı bir taslak kaydeder ve ardından çıkış yaparsa, taslak yalnızca oturuma bağlıysa kaybolabilir. Anonim taslakları kimliği doğrulanmış oturumlardan ayırın veya kullanıcıya çıkış yapmadan önce taslağı kaydetmesini veya silmesini söyleyin.
Son olarak, tarayıcı otomatik tamamlama ile form kalıcılığını karıştırmayın. Otomatik tamamlama, dönen kullanıcıların bilinen değerleri doldurmasına yardımcı olur, ancak çöküş sonrası kısmen tamamlanmış bir formu yeniden oluşturmaz. Bunu birbirinin yerine geçmez, tamamlayıcı olarak değerlendirin.
Veri işleme güvenlik önlemleri
Kaydedilmemiş taslakları kişisel veri olarak değerlendirin. Sunucudaki taslakların kalma süresini sınırlayın ve belirli bir bekleme penceresinden sonra otomatik olarak temizleyin. Dosya yükleme içeren taslaklar, nihai gönderime kadar dosyalarının kendisi yerine referansları saklamalıdır. Tüm taslak istekleri için HTTPS kullanın ve gönderilen başvurular için kullandığınız aynı kimlik doğrulama ve yetkilendirme kurallarını uygulayın.
Taslak tanımlayıcılarını izlemek için çerezler kullanıyorsanız, HttpOnly ve SameSite özniteliklerini ayarlayın. Taslak içeriğini açık bir yasal dayanak ve kullanıcı onayı yoksa analiz platformlarına kaydetmeyin. Toplanan verilerin, nerede saklandığı ve ne zaman silindiği hakkında bir kayıt tutun.
Ön-yayın kontrol listesi
- [ ] Form, temel gönderim için JavaScript olmadan çalışıyor
- [ ] Her girdinin uygun bir autocomplete özniteliği var
- [ ] Taslaklar girdi sırasında localStorage veya IndexedDB'ye kaydediliyor
- [ ] Yanlışlıkla kapatma sonrası sayfa yüklendiğinde taslaklar geri yükleniyor
- [ ] Çok adımlı veya uzun formlar için sunucu taslak uç noktası mevcut
- [ ] Doğrulama hataları girilen tüm değerleri koruyor
- [ ] Gönderme düğmesi istek sırasında devre dışı bırakılıyor ve hata durumunda yeniden etkinleştiriliyor
- [ ] Hassas alanlar düz metin olarak istemci tarafında saklanmıyor
- [ ] Taslak bekleme ve silme takvimi tanımlanmış
- [ ] Tüm taslak trafiği HTTPS kullanıyor
Bu güvenlik önlemleri olmadan bir formu yayınlamak gerçek sorguları kaybetme riski taşır. İyi korunmuş bir form, kullanıcı girdisini güvende tutur, terk etme oranını azaltır ve her ziyaretin tamamlanmış bir gönderimle bitmesi olasılığını artırır.