kayıtlı olmayan kullanıcılar için alışveriş sepeti

6 Cevap php

I am içinde the process of makiçindeg a website that içindevolves a shoppiçindeg cart. There vardır two majveya requirements:

  1. Kullanıcı deneyimi adamlar giriş / doğrulama tüm iş akışında çok son adım olmak istiyveyaum. Kullanıcı tüm alışveriş yapmak içiçinde alır ve kontrol dışarı vea yalnızca giriş istenir.

  2. Kullanıcı (tescilli veya değil) çıkış yapmazsa alışveriş sepeti (hatta tarayıcı Kapatırken) sona olmamalıdır.

Yukarıdaki bağlamda, ben Arabanın durumunu kveyaumak açısından şu sveyau var:

Ben tabanlı dosya veya veritabanı oturumları ile gitmeli? Bu kayıtsız kullanıcılar içiçinde olacağını unutmayın. Benim endişe ben veritabanındaki kayıtların çok sahip bitireceğiz olmasıdır.

Başka bir seçenek şifreli çerez sepeti içeriğiçindei koymak gibi görünüyveya, ama sonra çerez dosya üzeriçindede bir boyut sınırlaması var.

Bu durumda ne yapardınız? Ben gerçekten cevapları seviçindeiriz.

6 Cevap

  1. Tracking a user. Use a GUID encoded into a cookie with an nYear expiry.

  2. Bir Alışveriş Çantası saklama. Eğer ağırlıklı olarak olası büyüklüğü nedeniyle çerez çanta saklamak istemiyorum. Bu ortam için persiting ve ortama onu alma seçeneği bırakır. Bu zaman içinde geri gidiyor gibi olurdu bir veritabanı dışında bir şey kullanarak, veri tabanları, veri saklamak ve almak excel.

  3. Managing you Shopping Bag. Now, the question of your schema, firstly, if your going to be running queries against the shopping bags in the database (i.e. how many shopping bags contain item x) you probably want a traditional relational schema. However this has overheads in terms of inserting. updating, selecting (and joining) and deleting bag data (at some point you'll have bags that will never be used again but are taking up precious disk space). With a busy site, this is a fair few Traranactions Per Second, but any database should be able to cope. If you don't need to query the shopping bags in the database, then you can store it as XML. Just serialize the bag and dump it into a table, with the PK as the GUID as stored in the users cookie. This would be a lot faster than a traditional schema, plus you could always tear apart the XML in the future if a requirment did come up for a relational schema.

Bu, (Xml Çanta) ne olduğunu, ve biz bir milyon + müşteri tabanı var.

Ben dosya yönetilen oturumda veritabanı yönetilen oturumları ile devam ediyorum. Eğer sonunda (12 ay oldu ise, alışveriş muhtemelen sepeti başlangıçta öğeler için geri dönmeyecek) eski oturumları öldürmek böylece bir oturum damgası olduğundan emin olun.

Yerine dosyaların bir veritabanı ile bunu daha kolay sonunda çok eski bilgileri sona yapacaktır.

Veritabanı oturumu sadece hiç sürece çerez gibi kullanıcının bilgisayarına bağlı bulunuyor geçerli olacağını unutmayın. Kullanıcı farklı bir tarayıcıdan geri saklamak için gelirse, onların oturumu bulamazsınız. Iki kişi aynı bilgisayarı paylaşıyorsanız, bunlar will birbirlerinin oturumu bulabilirsiniz. Umarım hiçbir potansiyel utandırıcı ürün sepeti olacak ...

Eğer veritabanında bir alışveriş sepeti ilişkilendirmek hangi ile, kurabiye AnonymousSessionID içinde saklayın.

Sonra bir süre (örneğin, bir gün sonra) anonim oturumları silmek için bir zamanlayıcı görevi olacak. Bu terk seans temiz veritabanı tutacak.

Bir kullanıcı kaydederse, kalıcı kendi hesabı ile alışveriş sepeti reassociate. Kullanıcıların bir emir yaparsa, onların alışveriş kartınızı boşaltacaktır.

Bu özellikleri ile bir veritabanı oturum temelli devlet ile giderdim. Ama oturum durumu seçtiğiniz web sunucusu nasıl işleneceğini bazı ağır okuma yapmak gerekir. Eğer doğru kişiye durumunu canlandırmak için güçlü olmak istiyorum beri.

Ben yönetmek için bazı beklentileri olduğunu düşünüyorum, ya da belki gereksinimlerine net değildi.

  1. The user experience guys want login/authentication to be the very last step in the entire work flow. The user gets to do all the shopping and is asked to login only at the time of checking out.
  2. The shopping cart shouldn't expire(not even on browser close) unless the user (registered or not) does check-out.

Özellikle, anonim, giriş-değil kullanıcının Sepeti kaydediliyor? Bu delilik. Bu bir beklenti değil emin olun ve tasarım belgeleri bunu açıklamak.

Eğer ASP.NET kullanıyorsanız burada yapmak (yaklaşık) kulüpler ne:

  • kullanmak Profile (onlar sipariş tamamlamak dont onları e-posta), kullanıcıların en kısa sürede e-posta yakalamak için. Eğer kullanıcı aslında gerçekten kayıtlı olsa bile aspnet veritabanına kalıcı anonim profil özellikleri etkinleştirebilirsiniz.
  • oturum içine bir sırayı gösteren bir XML çanta sopa. Bu normal bir kimlik numarası ile veritabanında kalıcıdır.
  • ASP.NET 'te arabasının kimliğini saklamak Profile. oturumu sadece profilinde kimliğinden yeniden yükleyebilirsiniz sona bu şekilde. Bu kullanıcı bir çerez sepeti kimliği görür ve asla kolayca üyelik / profil veritabanı ve siparişleriniz için kullandığınız deposunun arasındaki kayıtları bağlayabilirsiniz ki yararı vardır

(Thats performans sorunları soran düşünüyorum. Profili XML düzeni saklamak dont deneyin. Ama teoride i düşünebilirsem)