Selamlar, Asp.Net Web Forms ile basit bir e-ticaret sistemi geliştirdim. İlk versiyonda kullanıcıların sepetlerindeki ürünler Sql Server veritabanında bir tabloda saklanıyor. Ancak giriş yapmayan kullanıcılar için sepete olanağı sunmayınca acaba potansiyel satışları düşürüyor olabilir miyim diye merak ettim ve login olmamış kullanıcıların da sepetlerine ürün ekleyebilmeleri için yazılımı güncellemeye karar verdim. Sistemin nasıl çalışması gerektiği kafamda net ama sepetin nerede saklanması gerektiği konusunda kararsızım.
- Kullanıcı giriş yapmadıysa sistem sepete eklemeye izin verecek
- Kullanıcı giriş yapınca login olmadan önce sepetine eklemiş olduğu ürünler de veritabanında sepet tablosuna yazılarak kullanıcının sepeti veritabanına kullanıcısı ile ilişkilendirilerek kaydedilmiş olacak
- Kullanıcının sepetinde (login olduktan sonra da) aynı üründen eğer birden fazla varsa bu kayıtlar adet hanesinde miktar olarak görünecek, aynı ürün sepette birden fazla kez görünmeyecek. Kullanıcı giriş yaptıktan sonra giriş yapmadan önce sepetine eklemiş olduğu ürünler veritabanına yazılırken bu yüzden bir kullanıcının sepetinde birden fazla aynı ürün kaydı açmayacak (adet güncelleyecek)
- Sepeten sayfasından sonra kullanıcı siparişi tamamlamak isterse kayıt sayfasına yönlendirilecek, kvkk (kişisel verileri koruma kanunu) yürürlükteyken kullanıcıya tüm formları onaylatmadan sipariş oluşturmasına zaten izin verilmemeli
Aklıma login olmayan kullanıcının sepetindeki ürünleri saklamak için iki çözüm geliyor
1. Çerez (cookie) ekleyerek ürün ID'leri ve adetlerini eklemek
2. Session ile sepetindeki ürünleri eklemek
Session ID ile veritabanına da yazdırabiliriz belki ama zamanla gereksiz birikecek veriler (tamamlanmayan siparişler) olacağı için veritabanında gereksiz veri birikir diye bu seçeneği hiç düşünmüyorum. Sizce login olmayan kullanıcı için sepetindeki ürünleri nerede saklamak daha mantıklı?