• 06-10-2008, 12:16:42
    #1
    Merhaba... yine berbat bir döküman ile karşınızdayım... biliyorum bu döküman içinde ortalama 4 gün uzaklaştırma alırımda.. yinede anlatayım..
    hepimiz sitemizde kaç kişi olduğunu merak ederiz ne gereği varsa artık... aklı selim adamın işi değil yani.. ama ben yinede kendimce bişeyler karalayayım size..
    öncelikle bi veritabanı lazım bize.. dolayısıyla phpmyadmin mysql yada benzeri terimleri bilmeyenler boşa okumasın.

    tablo adımız:
    online

    tablodaki alanlar:
    id (int) auto_increment verin.
    ip (varchar) 40 verin. (hostnamelerede hazırlıklı olalım..)
    sure (varchar) 20 verin gitsin..

    ONLINE
    -------------
    id | ip | sure

    tablomuz bu..

    şimdi başlayalım kodlamaya...




    online.php dosyası...
    <?
    
    // Gelen ip adresinin kaydı varsa güncelleyelim.. yoksa yeni giriş yapalım..
    $gelenip = $_SERVER['REMOTE_ADDR'];
    $sure = time();
    $kontrol = mysql_query("select * from online where ip='$gelenip'");
    if(mysql_num_rows($kontrol)>0) {
    mysql_query("update online set sure='$sure'"); } else {
    mysql_query("insert into online (id,ip,sure) values ('','$gelenip','$sure')");
    }
    // Veritabanımızı çok fazla doldurmamak için eskileri silelim..
    // burda ben 100 saniye hareketsiz kalanları siliyorum kendinize göre değiştirin.
    $silinen = 100;
    // süreleri bi listeleyelim...
    $sorgula = mysql_query("select sure from online");
    while($row=mysql_fetch_array($sorgula)) {
    $bak = $sure-$row['sure'];
    if($bak>$silinen) {
    mysql_query("delete from online where id='$row[id]'");
    }
    }
    // Aşağıdaki fonksiyon o anda online kaç kişi olduğunu gösterecek bize..
    function online_ver() {
    $sorgu = mysql_query("select count(*) as toplam from online");
    $bilgi =mysql_fetch_array($sorgu);
    return $bilgi['toplam'];
    }
    ?>
    bu online.php dosyamızı tüm sayfalarımıza include ediyoruz..
    eğer session ile çalışıyorsak,
    session_start(); dan hemen sonra
    include 'online.php';
    diyoruz... sitedeki tüm sayfalarda olması şart..

    kodlarımızı tamamladık.. tüm sayfalarımıza yerleştirdik...
    sayfamızın istediğimiz bir bölgesine;

    <? echo online_ver(); ?>
    yaptığımızda.. görüyoruzki sitemizde 100 saniye içerisinde hareket halinde olan kullanıcılar kaç taneymiş...

    bu makaleyi r10.net için yazdım. web botları, copy pasteciler ve diğer forumlarda görüntüleyen insanlar acizdir.

    hayırlı günler..
  • 06-10-2008, 22:23:15
    #2
    // burda ben 100 saniye hareketsiz kalanları siliyorum kendinize göre değiştirin.
    $silinen = 100;
    // süreleri bi listeleyelim...
    $sorgula = mysql_query("select sure from online");
    while($row=mysql_fetch_array($sorgula)) {
    $bak = $sure-$row['sure'];
    if($bak>$silinen) {
    mysql_query("delete from online where id='$row[id]'");
    }
    }
    Şu bölümün yerine şöyle yapsakta oluyor,
    mysql_query("delete from online where sure < ".($sure-100));
  • 07-10-2008, 19:41:56
    #3
    şimdi ukalalık zannedeceksin belki dostum ama... onu bende biliyorum esasında...
    fakat ben farkındaysan tüm kodları uzatarak yazıyorumki, php ye yeni başlayan arkadaşlar kodları tam anlamıyla anlasınlar. o basit bir sql kodu olabilir. Ama en azından süreleri listelemeyi öğrenecekler. Budur yani..

    Ama ilgin alakan için saol.
  • 07-10-2008, 22:19:03
    #4
    ERYILMAZ adlı üyeden alıntı: mesajı görüntüle
    php ye yeni başlayan arkadaşlar kodları tam anlamıyla anlasınlar. o basit bir sql kodu olabilir. Ama en azından süreleri listelemeyi öğrenecekler. Budur yani..
    Ama ilgin alakan için saol.
    Zaten şöyle yapsakta oluyor demişim her iki yoluda öğrenmiş oluyoruz.