"Yeni İçerik Avaliable!"

3 Cevap php

Onun "son görüldü" saklı zamana karşı kontrol - Ben kullanıcı bir web sitesi ayrıldığında bir sonraki ziyaretinizde o bir "yeni bir içerik var" mesajı (varsa) bulmak, böylece zaman saklamak istiyorsunuz bir cookie kurmaya çalışıyorum .

Ben saplanıp kaldım şeyler ikisidir: nasıl bir tanımlama o leaves sitesi gönderebilirim? O geri geldiğinde, o zaman, nasıl son yayınlanan içeriğin zaman karşılaştırıldığında, bu verileri kontrol edebilirim?

Bu şimdi ben kodu:

<!-- I send the cookie -->

    <?php

        // How long should something be considered new for? (In seconds.)
        // seconds * minutes * hours * days
        // Default is 72 hours (3 days).

        $stillnew = 60*60*24*3;

        setcookie('CookiePublishing', time()-$stillnew, time()+60*60*24*30, '/');

    ?>

<!--I check the cookie and print -->

    <?php

        $entrydate = last_comment_time();

        if ($_COOKIE['CookiePublishing'] < $entrydate) {
        echo '<p>New Comment!</p>';
        }

    ?>  

Gördüğünüz gibi, ben anlamaya hala var last_comment_time() adında bir işlevi hayal, ama benim asıl sorun hala çerez gönderildiğinde hangi anı olacak.

Herhangi bir giriş / alternatif çözüm için çok teşekkürler.

3 Cevap

Ben o leaves sitesi değil, dolu sayfada ne yorum ne zaman bu konularda sanmıyorum. Örneğin:

12:00 comment1
12:05 comment2
==loaded at 12:10, sees comments 1-2==
12:15 comment3
==leaves site at 12:20==
==arrives again at 1:10==

Bu durumda, o sayfa son gördüğümden beri, sadece 1-2 comments vardı, yeni yorumlar olduğunu haberdar edilmelidir.

Sen PHP'nin built-in session handling kullanarak ve $_SESSION kullanarak düşünebilirsiniz.

Neyse, iki değişken kullanarak bu sorunu çözmek gerekebilir: son erişim kez tek ve geçerli erişim bir süre için bir; sayfa yüklendiğinde, sistemin zaman geçerli bir set sonra, geçerli birine son erişim zamanını ayarlayın. Bu şekilde, son erişim değerine göre içeriğini belirleyebilirsiniz.

Örneğin:

<?php
    // set cookies
    session_start();
    $_SESSION['lastAccess'] = $_SESSION['currAccess'];
    $_SESSION['currAccess'] = time();
    // send the cookies in the HTTP headers
    session_write_close();
?>

...

<?php
    $last_stillnew = last_comment_time() - 60*60*24*3;
    if ($_SESSION['lastAccess'] < time()-$last_stillnew) {
    print "<p>New comment!</p>";
    }
?>

Sen javascript kullanmak zorunda.

Bunu yapmanın bir yolu, kullanıcının tarayıcı ping her beş dakika kadar sunucuya sahip olmaktır. Kullanıcı 6-7 dakika sunucu ping değilse, o gitti bu.

edit: biraz daha ayrıntı vermek için yapmanız gereken (yani bir tepki ya da bir şey üzerinde bekleyen zahmet etmeyin) sunucuya bir kör ajax isteği gönderilir. Isteği alan komut dosyası veritabanı veya nerede kullanıcının "son ping" alanını güncelleştirmek gerekir. Bu ziyaret son kez bulmak için, ping arasındaki "son ping" + zamanı.

Sadece bu durumda sadece Kullanıcı sayfayı zaman kayıt olabilir ve bir sonraki vakit o zamandan beri (FryGuy belirtildiği gibi) kullanıcı ziyaret yorumları görüntülemek gibi, yeni yorumlar listelemek istiyorsanız bu gerçekten gerekli değildir.

Ancak ping yöntemi kullanıcının son ziyaret beri süreyi bulma sorununu ele gelmez.

Kullanıcı javascript yoksa apaçık bir sorundur. Bu neden sorunları en aza indirmek için, PHP ile "son ping" kullanıcı sayfayı her zaman güncelleyebilirsiniz.