Son haber olarak işaretleniyor ...

5 Cevap php

Ben genellikle gitmek bazı web siteleri veya forumlarda, ben henüz okudum havn't girişleri "yeni" olarak işaretlenir. PHP / MySQL - I (haber zaman zaman nakledilen ile) ben geliştirdik bir web sitesinde bu özelliği uygulamak istiyoruz. Bu genellikle nasıl yapılır? Bu son ziyaret tarih / zaman hatırlayarak bir cookie kullanarak gerektirir mi? Veya son görüntülenen ileti / url? Nasıl kullanıcıları tespit edebilir?

5 Cevap

Çerezler oturumu için, ya da kimlik doğrulaması olmayanlar için ziyaretler arasındaki kullanıcı tanımlama sadece olası bir yoldur. Çok yaygın ve kullanışlı bir yol olsa. (PHP aynı zamanda yaygın olmasa da, artık sid veya başka bir parametre kullanabilirsiniz.)

Siz kullanıcı okudum ya hangi konuları / mesaj saklamak gerekir, ya da o / o değil sahip olduğu. Belirli subforums için 'tarihi' veya POSTID önce okumak her şeyi şeyler özetleyebilirim.

Bu, tüm forumlar, mesaj ve haber dışında yatıyordu bağlıdır, ve ne kadar dinamik. Ayrıca sadece kullanıcı önceden tanımlanmış (x saat) sonra daha uzakta ise son ziyaretinizden beri yeni mesajları kullanın, sonra kullanıcı sitenize şu anda ise son ziyaretten bu yana, yeni mesajlarını göster yeni mesajları göstermek isteyebilirsiniz / (hesaplanan y saat, hafta sonu, z saat eğer yönetici) zamanı.

Düzenleme: ziyaret bağlantılar için CSS, bir iplik haber için yeni yorumlar, yeni mesajlar ile size yardımcı İlk okunmamış mesaja veya doğrudan gitmek olmaz iş / okul ve evde sitesine erişim.

Bir yan not: bunu yaparken aslında çoğaltma tarayıcı işlevi olacaktır: (sürece sabit adresler kullanmak gibi) tarayıcı bağlantılar ziyaret bağlantıları farklı bir tarz verecektir. Net tarih, ama sonra yine bir cookie sadece tabanlı çözüm çerez allso açık silinirse eğer Tabii ki, bu bir "Özel veriyi sil" fonksiyonu wich varsayılan olarak her iki siler sahip birçok tarayıcı ile (sıfırlar, genellikle de sıfırlamak olacaktır aynı zaman) ...

This site url (sorular için) sabit ve normal link rengi gibi aynı ziyaret renk ayarlamak doent, bu yüzden size link rengi tarafından ziyaret ettik soruları görebilirsiniz.

EDIT: Ayrıca CSS için kullanabileceğiniz add an icon to visited links.

Cookie bu tür bir şey yapmak için tek güvenilir yolu ile ilgilidir.

Bir kullanıcı ne zaman son ziyaret saklamak için bir çerez kullanımı, aynı zamanda çerez yoksa makul bir varsayılan 1 hafta söylemek olurdu.

Sonra bu tarihten daha yeni şeyler karşısında yeni göstermektedir.

Ya bir çerez gerçek son ziyaret tarihini saklamak, ya da sadece bir tanımlama o kişi için benzersiz bir kimliği saklamak ve son veritabanında ne okumak izleyebilirsiniz. Eğer ikincisi yaparsanız, onları farklı tarayıcılarda aynı kimliğe sahip giriş ve hala doğru bir sayım almak için izin verebilirsiniz.

Ben bunu bu şekilde yapmak:

  • Kullanıcı adı yoktur ve giriş değilse, o zaman yeni öğeler görünmüyor.
  • Kullanıcı oturum ve onlar tüm öğeleri gösterilmiştir varsa o ben kullanıcı dosya üzerinde geçerli tarih / saati depolamak ve yeni ne öğeleri dışarı çalışmak için bu değeri kullanın.
  • Kullanıcı tarih / saat son on dakika içinde ise ben kullanıcı tarih / saati güncelleme yok.

İşte benim kod ...

function drawPage
    if (isLoggedIn) 
        get dbUser from database
        lastUserDateTime = dbUser.LastCommentTime
    else 
        lastUserDateTime = yesterdaye
    end if

    for each post
        get date of post 
        if post->date < lastUserDateTime mark it as new
        draw the post
    loop

    if (isLoggedIn) 
        if (lastUserDateTime + 10 mins) < now 
            dbUser.LastCommentTime = now
            update dbUser in database
        end if
    end if
end function