Online Kullanıcı Sayısı

Artık php kodlarına veritabanı bağlantısı yazılması gerektiğini söylememe gerek yoktur sanırım.

CREATE TABLE online (
  zaman bigint(20) NOT NULL default '0',
  ip varchar(15) NOT NULL default ''
)
<?php
   function GetIP()// kullanıcı ip bulma
   {
      if(getenv("HTTP_CLIENT_IP")) 
      {
         $ip = getenv("HTTP_CLIENT_IP"); 
      } 
      elseif(getenv("HTTP_X_FORWARDED_FOR")) 
      {
         $ip = getenv("HTTP_X_FORWARDED_FOR");
         if (strstr($ip, ',')) 
         {
            $tmp = explode (',', $ip); $ip = trim($tmp[0]); 
         } 
      } 
      else 
      { 
         $ip = getenv("REMOTE_ADDR"); 
      } 
      return $ip;
   } 

$zaman = time();  // O andaki zaman
$timeout_suresi = $zaman - 300; // 300 saniye yani 5 dakika kendine göre değiştirebilirsin
$guncelleme_suresi = $zaman - 30; // 30 saniye
$ip = GetIP(); // Siteye giren kullanıcının ip'si

$sorgu = mysql_query("SELECT ip FROM online WHERE ip = '".$ip."' LIMIT 1");
$say = mysql_num_rows($sorgu);

// Kullanıcının ip'si ile veritabanında kayıt yoksa veritabanına kayıt yapıyoruz
if($say < 1){

     mysql_query("INSERT INTO online (zaman, ip) VALUES ('".$zaman."', '".$ip."')");

}else{

     // Kullanıcının en son online zamanını almak için yukarıdaki sorguyu kullanarak verileri çekiyoruz
     $veri = mysql_fetch_array($sorgu);

     // Kullanıcının son online olma süresi güncelleme süresinden küçükse kaydını güncelliyoruz
     if($veri['zaman'] < $guncelleme_suresi){

     // Online kaydını güncelliyoruz
     mysql_query("UPDATE online SET zaman = '".$zaman".' WHERE ip = '".$ip."' LIMIT 1");

     }

}

// Timeout süresi dolmuş kullanıcıların kaydını veritabanından siliyoruz
mysql_query("DELETE FROM online WHERE zaman < ".$timeout_suresi);

$top_sorgu = mysql_query("SELECT * FROM online");
// Kaç kullanıcının online olduğunu buluyoruz
$toplam_online = mysql_num_rows($top_sorgu);

// Kaç kullanıcının online olduğunu ekrana bastırıyoruz
echo "$toplam_online kullanıcı şu anda sitede online";
?>