• 22-10-2008, 16:41:56
    #1
    Misafir
    giriş yapınca üyenin tablodaki online durumunu 1 yapıyorum, çıkış yap dediğindede durumunu 0 yapıyorum.. ama cookie süresi
    setcookie ("kullaniciadi", "$kullaniciadi", time() + 3600);
    bittiğinde tablodaki online durumu nasıl 0 yaptırabilirim ?
  • 22-10-2008, 16:45:50
    #2
    Tabloda yeni bir alan açabilirsin giriş tarihi diye. Sonra bir cron ile giriş tarihi eskimi diye kontrol ettirirsin. Eğer giriş tarihi eski ise 0 yapabilirsin.
  • 22-10-2008, 17:25:16
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    CREATE TABLE `onlineuyeler` ( 
      `id` int(11) NOT NULL auto_increment, 
      `oturumsuresi` varchar(50) NOT NULL, 
      `tip` text NOT NULL, 
      `uye` text NOT NULL, 
      `ip` text NOT NULL, 
     PRIMARY KEY  (`id`) 
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=46 ; 
     
     
     <? 
    require ("bagla.php"); 
    require ("tani5.php"); 
     $uye = $_SESSION["user"]; 
     $tip = 1; 
     $ip = $_SERVER["REMOTE_ADDR"]; 
     
    if(empty($uye)){ 
     $uye = $ip; 
     $tip = 0; 
    } 
     $oturumsuresi = time()+60*1; 
     $uyevarmi = mysql_query("SELECT * FROM onlineuyeler WHERE uye='$uye'"); 
    if(mysql_num_rows($uyevarmi)>0){ 
     mysql_query("UPDATE onlineuyeler SET oturumsuresi='$oturumsuresi' where uye='$uye'"); 
    }else{ 
     mysql_query("INSERT INTO onlineuyeler  (oturumsuresi,tip,uye,ip) values ('$oturumsuresi','$tip','$uye','$ip')"); 
    } 
     $suan = time(); 
     mysql_query("DELETE FROM onlineuyeler WHERE zaman<='$suan'"); 
     $sorgu = mysql_query("SELECT * from onlineuyeler WHERE oturumsuresi > ".time()." ORDER BY id ASC");   
     
    While($yaz=mysql_fetch_object($sorgu)){ 
    if($tip==0){ 
    echo "online kimse yok"; 
    } 
    else 
    { 
    echo $yaz->uye."<br>"; 
     
    } 
    } 
     ?>
    Kaynak : online üye göster de mysql hatasi - Ceviz Forum
  • 22-10-2008, 18:39:43
    #4
    Cookie otomatik silinmesini tespit edemezsin.
    Online kullanıcı sayısını bulmak için tabloda yeni alan açman şart. Yok ben mysql olmadan yapacam dersen oda var. Veritabansız online kişi sayısı diye araştır googlede bulursun...
  • 22-10-2008, 21:28:03
    #5
    Tablo açmayacaksınız üye tablosuna alan açacaksınız, mesela bu alanın adı giris_tarihi yapalım. Üye siteye giriş yaptığında giris_tarihine o anki zamanı kaydedersiniz. Sonra sayfalarda gezerkende o anki tarihi giris_tarihi alanına tekrar yazarsınız.
    Son olarak da bir cron ile kontrol ettirerek mesela 10dk harekette bulunmayan kullanıcıların online durumunu 0 yaparsan bu sorunu halletmiş olursun.