• 29-04-2008, 14:05:12
    #1
    Php üyelik ve mesajlaşma scripti yapıyorum herşey çok güzel gidiyor şimdiye kadar mesajlaşmaları üyelikleri bitirdim online üyeler kısmına geldiğimde her login olan kişiye verdiğim online 1'i ekliyor ve direk logout yaptığında ise verdiği 1 değerini 0 yapıyor buraya kadarda güzel. Ama kullanıcı direk logout yapmadan sayfayı kapattığında halen online gözüküyor Buna bir mantık yürütemedim verdiğimiz veride zamanlama yapsak online 1 değerini 5 dakika sonra geri alsa gibi bir ihtimal varmı ? Yada sizin fikirleriniz neler.
  • 29-04-2008, 14:06:39
    #2
    session mu kullanıyorsun, yoksa cookie mi ?
  • 29-04-2008, 14:10:01
    #3
    1. cron ile yapabilirsin
    2. kullanıcı login işleminde ve sayfa yenilemelerinde online zamanını time() cinsinden yapıp, herhangi bir kullanıcı çıkış işlemi yapıldığı zaman da time() değeri 5 dakikalık zamandan küçük olanları sildirirsin.
  • 29-04-2008, 14:14:54
    #4
    cron hakkında fazla bir bilgim yok seemsiyah session kullanıyorum.
    tek problem direk kapattığında logout olabilmesi ama online tablosunda kalması
  • 29-04-2008, 14:17:43
    #5
    Üyeliği durduruldu
    online user tablon nasıl bilmiyorum
    ama şöyle bir sistem işini görebilir...

    <?
    $zaman = time(); //şimdiki zaman
    $t_zamani  = $zaman - 600; // 10dkadan fazla güncellenmediyse sil
    $g_zamani = $zaman - 60; // dakikada 1 güncelle
    $ip = $_SERVER['REMOTE_ADDR'];
    $kq = mysql_query("SELECT ip FROM kullanici_online WHERE ip = '".$ip."' LIMIT 1") or die(mysql_error());
    $ks = mysql_num_rows($kq);
    if($ks < 1) {
        mysql_query("INSERT INTO kullanici_online (zaman, ip) VALUES (".$zaman.", '".$ip."')") or die(mysql_error());	
    } else {
        $kr = mysql_fetch_assoc($kq);
        if($kr['zaman'] < $g_zamani) {
            mysql_query("UPDATE kullanici_online SET zaman = ".$zaman." WHERE ip = '".$ip."' LIMIT 1") or die(mysql_error());
        }
    
    }
    mysql_query("DELETE FROM kullanici_online WHERE zaman < ".$t_zamani) or die(mysql_error());
    
    ?>
  • 29-04-2008, 14:32:39
    #6
    Teşekkür ederim alp3r3r +rep veremiyorum borcum olsun. Mantığı kavradım benim online tablom yok sadece login olduğunda. Login olunan kullanıcı adının tablosundaki online 'sine 1 veriyor logout olduğunda ise O verdiği 1 değerini 0 yapıyor bu şekilde basit birşey yaptım online üyeleri göstermek için ise direk veritabanında online=1 'leri çekiyorum ama dolayısıyla direk pencereyi kapattığında login olan ve pencereyi direk kapatan kişinin online=1'i logout yapmadığı için bu şekilde kalıyor ve halen online gözüküyor Benim istediğim bir kod yapıp Örneğin 2 dakika içinde bütün Online=1'leri Online=0 Yapması :S
  • 29-04-2008, 14:45:10
    #7
    Üyeliği durduruldu
    online = 1 yazdığın kullanıcı tablosunda son giriş ve ip alanları mevcutsa aynı işlemi kolayca uyarlayabilirsin..