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.

MySQL
4 lines
CREATE TABLE online (
zaman bigint(20) NOT NULL default '0',
ip varchar(15) NOT NULL default ''
)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PHP
60 lines
<?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";
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Sizin Değerli Görüşlerinize İhtiyacımız Var.