Online Ziyaretçi Sayacı
2008-02-18 23:52:00
Site içinde şu kadar ziyaretçi geziniyor ibaresini görüyor, benim sitemde neden böyle bir şey yok deyip yakınıyorsunuz. Üzülmeyin siz de yapabilirsiniz hem de bedava... Reklam gibi oldu biraz değil mi? O zaman buyrunOnline Ziyaretçi SayacıVeritabanımıza bağlantı kurulduğunu varsayarakişlem yapıyoruz. Ben kendi sitemde bir nevi istatistiklerimi tutuyorum. Bu yüzden IP kaydediyorum. Bu işlemler daha pratik yapılabilir. Fonksiyon şeklinde yazdığımdan sitenizde ziyaretçilerin gezmesine izin verdiğiniz her sayfaya online(); şeklinde ekleyebilirsiniz.
Author:Ahmet Tombak
info@ahmettombak.net
15 Feb 2008
function online()
{
$ses=session_id();
$tarih=time();
$outtime=$tarih-10*60;
Zaman bilgisini aldık
Sayfada kalma süresini 10 dakika olarak ayarladım
Siz süreyi saniye cinsinden ayarlayabilirsiniz
$sql="SELECT id,ses FROM online WHERE ses='$ses' ";
$sorgu=mysql_query($sql);
Session id'mizi kontrol ederek site içinde olup olmadığını
kontrol ediyoruz
if(!mysql_affected_rows())
nbsp;{
$ip=$_SERVER[REMOTE_ADDR];
$sql="INSERT INTO online (id,ses,ip,tarih,online) VALUES (NULL,'$ses','$ip','$tarih','yes') ";
$sorgu=mysql_query($sql);
}
Siteye ilk defa giriliyorsa kayıt edeceğimiz bilgileri giriyoruz
else {
$sql="UPDATE online SET tarih='$tarih',online='yes' WHERE ses='$ses' ";
$sorgu=mysql_query($sql);
}
Bu sorgu çalışmışsa zaten site içindeyiz demektir.
Tarihi ve site içinde kalma süresini güncelledik
$sql="SELECT id FROM online WHERE online='yes'
AND tarih<'$outtime' ";
$d=mysql_query($sql) ;
while($so=mysql_fetch_object($d))
{
$sqlim="UPDATE online SET online='no' WHERE id='$so->id' AND ses!='$ses' ";
Site içinde olup da 10 dakikadır aktif olmayan kullanıcıların sessionlarını kapattık
mysql_query($sqlim);
}
$sql="SELECT COUNT(id) FROM online WHERE online='yes' ";
$d=mysql_query($sql);
$aktif_ziyaretci=mysql_result($d,0);
$sql="SELECT DISTINCT ip FROM online ";
$d=mysql_query($sql);
$tekil_ziyaretci=mysql_num_rows($d);
Yukardaki iki sorguda halen site içinde dolaşan aktif ziyaretçi sayısını
ve farklı IP'ye sahip bilgisayarlardan kaç giriş yapıldığını buluyoruz
return $aktif_ziyaretci."|".$tekil_ziyaretci;
//Bu satırdaki veriler isteğe göre değiştirilebilir
}
Veri tabanımız şu şekilde
CREATE TABLE `sayac` (
`id` bigint(20) NOT NULL auto_increment,
`ses` varchar(60) NOT NULL,
`ip` varchar(20) NOT NULL,
`tarih` bigint(20) NOT NULL,
`online` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Bu makale 278 kere okunmuş.