• 27-07-2009, 16:05:26
    #1
    Arkadaşlar Şimdilik Yapmadığım Ama Aklımda Olan Online Üyeleri Bir Sayfada Göstermek. Bunu İçin Şimdilik uyeler tablosunda online diye bir kolon oluşturdum. ve onu varsayılan değeri 0 giriş yapınca ora 1 oluyor ama çıkış yapınca bir türlü 0 yaptıramadım yani girişte problem yok çıkışta var. cikis.php dosyasının kodları ;

    <div id="menuyazisi" class="menu"><head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head><?php
    
    	ob_start();
    	session_start();
    	$sql=mysql_fetch_array(mysql_query("SELECT * FROM uyeler WHERE ka='$_SESSION[ka]'"));
    $id=$sql['id'];	
    	include("config.php");
    	if ( $_SESSION['ka'] == '' ) {header("Location: index.php"); }
    	elseif($_SESSION['ban']==1){	header("Location: ban.php");
    	}else{
    mysql_query("UPDATE uyeler SET online='0' WHERE id='$id'");
    	session_destroy();
    		header("Location: index.php");}
    	$url = $_SERVER['HTTP_REFERER'];
    echo "Başarıyla Cıkış Yaptınız... Bir Onceki Sayfaya Yonlendiriliyorsunuz Lutfen Bekleyin !<br><br><img src='images/await.gif'>";
    echo '<meta http-equiv="refresh" content="5;URL=' . $url . '">'; 
    	
    ?></div>
  • 27-07-2009, 17:09:51
    #2
    Üyeliği durduruldu
    Kodlar biraz garip olmuş
    mysql_query("UPDATE uyeler SET online='0' WHERE id='$id'");
    kısmında WHERE id = '$id' de sorun olabilir. $id yi nerden alıyor mesela anlamadım. Gerçi üstteki $sql[id] yi nerden alıyor onuda pek anlamadım.

    Ama şöyle bir durum da var. Kullanıcı çıkış butonuna basmadaan direk tarayıcıyı kapatırsa, bu kodu çalıştırsanız bile online sütunu 1 olarak kalacaktır ve online görünmeye devam edecektir. Daha farklı bir yöntem kullanın bence, phpclasses.org dan üyelikle ilgili classları inceleyebilirsiniz.
  • 27-07-2009, 17:59:53
    #3
    Vinsanity adlı üyeden alıntı: mesajı görüntüle
    Kodlar biraz garip olmuş
    mysql_query("UPDATE uyeler SET online='0' WHERE id='$id'");
    kısmında WHERE id = '$id' de sorun olabilir. $id yi nerden alıyor mesela anlamadım. Gerçi üstteki $sql[id] yi nerden alıyor onuda pek anlamadım.
    Ama şöyle bir durum da var. Kullanıcı çıkış butonuna basmadaan direk tarayıcıyı kapatırsa, bu kodu çalıştırsanız bile online sütunu 1 olarak kalacaktır ve online görünmeye devam edecektir. Daha farklı bir yöntem kullanın bence, phpclasses.org dan üyelikle ilgili classları inceleyebilirsiniz.
    başka yöntem aklıma gelmiyor ve merak ettiklerine gelince fetch_arrayın oldyğu sorguda WHERE ka='$_SESSİON[ka]' yani $_SESSİON[ka] da kullanıcı adı var giris.php ye yönlenince tanımlıyordum. ordan da kim giriş yaptıktıysa kullanıcı adı giriyor sonra kullanici adindan idsini alıyorum ve o id ile altta session yok edilmeden online kolonuna 0 ı yazdırmaya çalışıyordum ama olmadı.
    eğer bu asla olmuyacaksa başka yöntemler varsa söylerseniz sevinirim...
  • 27-07-2009, 18:11:37
    #4
    Üyeliği durduruldu
    böyle olmaz

    mysql_query("UPDATE uyeler SET online='0' WHERE id='$id'");
    session_destroy();

    ek online tablosu açıcaksınız bunun için. (zaman,ip,tarih,uyeid) gibi
    hiç uğraşma yukarıdaki gibi uyeler tablosunda güncelleme vs..
  • 27-07-2009, 18:15:12
    #5
    sweatcell adlı üyeden alıntı: mesajı görüntüle
    böyle olmaz
    mysql_query("UPDATE uyeler SET online='0' WHERE id='$id'");
    session_destroy();
    ek online tablosu açıcaksınız bunun için. (zaman,ip,tarih,uyeid) gibi
    hiç uğraşma yukarıdaki gibi uyeler tablosunda güncelleme vs..

    dediğinizi tam anlayamadım sanırım kusura bakmayın. böyle mi demek istediniz;

    online adında tablo açacam sonra zaman ip tarih ve uyeid adında 4 kolon sonra üstteki işlemleri mi yapacam ?
  • 27-07-2009, 18:23:00
    #6
    Üyeliği durduruldu
    Ben üyelik sistemi yazarken eğer online kullanıcıları görmek istiyorsam şöyle birşey yapıyorum.
    Üyelerin bulunduğu tabloya son işlem zamanını içeren bir sütun açıyorum. Her üye işleminde (sayfa değiştirme, yenileme, vs) bu sütunu güncelliyorum. Güncellerken o anki zamanı time(); fonksiyonu ile yazdırıyorum.
    Online üyeleri listelerken bu tabloya göre son 5dk içinde işlem yapmış üyeleri;
    SELECT * FROM uyele WHERE son_islem = '$bes' sorgusu ile listeliyorum. Burdaki
    $bes = time() - 60*5; oluyor 5 dk öncesini alabilmek için.
    Bu sayede adam tarayıcıyı kapatıp çıkmış olsa bile en fazla 5 dk sonra online listesinden düşüyor.
  • 27-07-2009, 18:29:24
    #7
    galiba bunu yapamicam buda kalsın bari yinede sağolun arkadaşlar teşekkürler
  • 27-07-2009, 19:54:42
    #8
    Vinsanity in dediği tarzda yapabilirsin zor değil.