"Inceledi"

3 Cevap

Ben "inceledi" sistemi uygulamak gerekir.

Bu nasıl yapılabilir, böylece presleme F5 kullanıcı başına fazla 1 için sayı izlendi artışla değil mi?

SO ayrıca sistemine sahiptir.

Çerezler, oturumlar, db? Genellikle nasıl yapılır?

3 Cevap

Burada teknolojileri bir arada gerekir. Her kullanıcı (sizin senaryoda iyi çalışır, ne olursa olsun, oturumları kullanarak çerezler), benzersiz tespit edilmesi gerekir. Oradan, (onların çerez ya da oturum veya ne olursa olsun saklanan) kullanıcının benzersiz anahtara sahip bir öğe için hit bir veritabanı korumak gerekir.

Kullanıcı sayfasına eriştiğinde, o kullanıcının benzersiz anahtar zaten sayfada bir isabet varsa veritabanı kontrol edin. Değilse, bunu ekleyin. Ne olursa olsun, bir kez yapılır, madde veritabanından yarattığı hit sayısını çekin. Tahdah.

Sadece veritabanında depolamak user_id, resource_id (sonunda timestamp) ve viewed değer kontrolü artırmak için önce SQL böyle olsun:

SELECT COUNT(*) FROM ... WHERE user_id = ? AND resource_id = ? (AND timestamp > NOW() - 7 DAYS or sth)

dönmez 1.

Bu duruma çok bağlıdır. Her kullanıcı bir kullanıcı kimliği ile oturum ise kullanıcıların oturum bekleniyor değil bir sıçrama sayfa yapıyorsun Örneğin, o zaman çok farklı olurdu

Ben ikinci kategoride olduğunu varsayıyorum, ve kullanıcıların sayfasına giriş olmadığını olacaktır. Bu durumda olsaydı, ben setcookie komutunu kullanarak bir çerez ayarı tavsiye ederim, bu böyle başarılı olabilir:

if (empty($_COOKIE['hasViewed'])) {
    //increment the total number of views in the
    //database or wherever we are storing it.
    $viewer->incrementViews();
}
//make sure they have a cookie for next time
setcookie("hasViewed", "1", time() + 60*60*24*30);

Bu örnekte, kullanıcı onlar 30 gün içinde sayfayı görmedim eğer görünümü tekrar artırmak için neden mümkün olacağını unutmayın.