2011-05-11 15 views
6

Şu anda sadece bir kullanıcı hesabı oluşturmadan sitenin tüm akışını ziyaret etmesine izin verecek, ancak kullanıcı kayıtlarını kabul edecek bir Symfony2 uygulaması geliştirmeye çalışıyorum. . giriş yaptıktan Tasarım fikirleri şuna benzer (öneriler/iyileştirmeler hoşgeldin): bir kullanıcı günlükleri kendi hesabına, veri, normal "anonim" bir kullanıcı üzerinde veri depolama

  • gibi kullanıcı/ilgili kuruluşlara kalıcı olacak

    1. zaman anonim bir kullanıcı siteyi ilk kez vurur, onlar için kayıtlı bir "anonim kullanıcı varlığı" oluşturulur, ancakgibi bir şeyle Kişiselleştirilmiş bir kullanıcı adı yerine tanımlayıcı olarak. Sitede gerçekleştirmek herhangi bir aktivite anonim bir kullanıcı ise ileride kullanılmak
    2. için kendi veri koruyarak anonim bir kullanıcı kayıt seçtiğinde
    3. , onların anonim kullanıcı varlık kayıtlı bir kullanıcı varlık yükseltilir bu anonim kullanıcı varlığa kalıcıdır kayıt olmadan siteden ayrılır, anonim kullanıcı varlığı bir süre sonra temizlenmelidir ölü veri birikmesini önlemek için

    Bunun için en iyi yolu nedir? Özellikle, her denetleyiciye kod yerleştirmeksizin anonim bir kullanıcı için bir Kullanıcı varlığını oluşturmak/değiştirmek için "en iyi uygulama" olarak nitelendirilen şey nedir?

  • cevap

    0

    Yapmam gereken buna benzer bir şey var. Ne yaptım anonim kullanıcılar ip adresi ($ _SERVER ['REMOTE_ADDR']) kullanarak toplandı. Daha sonra izleme amaçlı ip adresini kullandım. Daha sonra, geçmiş kullanımlarını yeni oluşturulmuş hesaplarına eklemek için kayıt olduklarında kullanabilirsiniz.

    Ardından, bir süredir etkin olmayan herhangi bir IP adresini bırakmak için basit bir sorgu çalıştırabilirsiniz (çoğu kullanıcı her zaman sık sık değişecek şekilde dymanic ip adreslerine sahiptir).

    +0

    Harika bir fikir, teşekkürler! – Problematic

    +0

    Bunu düşününce, bazı delikler var: @emilecantin gibi NAT sorunları, aynı zamanda IP'leri kısa bir süre içinde hızlıca değiştirebilen mobil kullanıcılar ile ilgili sorunlar (örneğin, wifi etkin noktalarında gezinme). – Problematic

    +2

    Bu yaklaşımı kesinlikle kullanmam. Tek bir IP adresinde aktif olan birçok farklı kullanıcı oturumu örneği vardır (örneğin, web sitenize, bilgisayarlardan, yüzlerce bilgisayar arasındaki paylaşımdan veya IP adreslerinden çok daha fazlası). Bir çerezde benzersiz bir kimlik kullanmanız gerekir. –

    4

    Bunun için IP adresini kullanmamanızı tavsiye ederim, çünkü bir NAT'ın arkasındaki kullanıcılar için sorunlara neden olabilir. Özel bir tanımlama bilgisi veya izleme amaçlı bir tanımlayıcı olarak sessionId (PHPSESSID) çerezini kullanmak daha iyi bir fikir olabilir. Google bu stratejiyi kendi reklamları için kullanır. Devlerin omuzlarında durun!

    +0

    Bu, StackOverflow'un çözümüne benzer (Anladığım kadarıyla, soru sormak için kayıt yaptırmanıza gerek yok)? – Problematic

    +1

    Hayır, StackOverflow bir tür OpenId kullanıyor görünüyor. Kullanıcıların birden fazla sitede tek bir kimliğe sahip olmalarını sağlar. Google’ın kimlik doğrulaması OpenId’i uygular. Ancak Facebook'tan pek emin değilim. – emilecantin

    +0

    Kayıtlı kullanıcılar için işlevselliği anlıyorum, ancak kayıt dışı kullanıcılar siteye de katılabilir ve soruları kullanıcı bazında izlenir (bazı profiller "kayıtsız kullanıcı" dır). Çözümünüzün bunu nasıl yaptığına benzediğini düşünüyorum. – Problematic

    İlgili konular