PHP Sayaç Yapımı – Online – Tekil – Çoğul Ziyaretçi Saydırma 48

Merhaba arkadaşlar bu yazımda sizlerle gelişmiş veritabanı destekli ziyaretçi sayacı yapımını anlatacağım.
Sayacımızın görüntüsü aşağıdaki gibi olacaktır.

Ziyaretci Sayacı Görüntüsü

Ziyaretci Sayacı Görüntüsü

Sayacımı yapmak için öncelikle sayac.php adında bir php dosyası oluşturalım ve kaydedelim.

[ad#orta]

Örnek Uygulama
1 ) Veritabınımızda sayacımızın değerlerini tutan 3 adet tabloya ihtiyacımız var. Bunları oluşturmakla işe başlayalım.
Deneme adlı bir veri tabanı oluşturdum. İçinde 3 tane tablom olacak. Bunlar;
ip_sayaci tablomuzda gelen kişilerin ip’lerini ve kaç defa sayfayı gezdiklerini öğrenmek ve günlük tekil hit, dünün tekil hiti gibi sayısal verileri de bu tablo üzerinden çekeceğiz.

CREATE TABLE `ip_sayaci` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `tarih` DATE NOT NULL,
  `tiklama` INT(11) NOT NULL,
  `ip` VARCHAR(50) NOT NULL,
  PRIMARY KEY  (`id`)
)

toplam_sayac üzerinde ise sadece toplam tekil hiti ve çoğul hiti tutmak için kullanacağız.

CREATE TABLE `toplam_sayac` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `toplam_tekil` INT(11) NOT NULL,
  `toplam_cogul` INT(11) NOT NULL,
  PRIMARY KEY  (`id`)
)

online_ziyaretci üzerinde ise online ziyaretçileri saydırmak için kullanacağımızı isminden kolayca anladığınız gözlerinizden okunuyor.

CREATE TABLE `online_ziyaretci` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `ip` VARCHAR(50) NOT NULL,
  `tarih` INT(11) NOT NULL,
  PRIMARY KEY  (`id`)
)

2 ) Kodlarımızı satır satır açıklayarak devam edersek daha anlamlı olacaktır. Ve ilk başlangıcı yapalım. sayac.php‘yi açalım. Ve…

<?php
function sayac() {
@mysql_connect("localhost", "root", "123") or die("Host ile bağlantı kurulamıyor: " . mysql_error());
@mysql_select_db("deneme");

mysql_connect(hostadi,kullaniciadi,sifre) fonksiyonu ile hosta bağlandık.
mysql_select_db(“veritabaniadi”) fonksiyonu ile de veritabanımıza bağlandık.
3 )

$gun=0;

Burada Kaç gün öncesinin kayıtları silinmesi gerektiğini ayarlayıruz. Eğer sıfırdan farklı bir değer girmezseniz hiç bir zaman kayıtları silmeyecektir.
4 )

$ip=$_SERVER['REMOTE_ADDR'];

Siteye ziyaret edenin IP’sini $_SERVER[‘REMOTE_ADDR’] komutu bize verecektir.
5 )

$zaman=time();

Şu anki zamanı öğrenmemizi sağlar ve saniye cinsindendir.(Online sayaç için)
6 )

$buguntarih = date('Y-m-d');

Bugünün tarihini öğreniyoruz. Çünkü ziyaret edenlerin sitemizi bugün içerisinde kaç kere ziyaret ettiğini öğrenmek için.
7 )

$sure_siniri=$zaman-60*5;

Burada zaman 300 saniye yani 5 dk lik bir limit koyuyoruz ve 5 dk süre ile ziyaretçi sitede herhangi bir işlem yapmadıysa online kısmında düşmek için bunu kullanacağız. Yani Online olayı 5 dk içindeki aktifliğine göre ayarlanıyor.
8 )

$kayit_sorgu = mysql_query("SELECT * FROM ip_sayaci WHERE tarih='$buguntarih' AND ip='$ip'");
$kayit_sayisi=mysql_num_rows($kayit_sorgu);

Bugün siteye gelen ziyaretçi bu IP ile daha önce giriş yapmış mı yoksa yapmamışmı diye kontrol etmek istiyoruz.Burada daha onceden bugun tarihi ile giriş yapımış ise 1 değerini döndürcektir. Biz de bu sayede tekil sayısını saptamada birinci adımı atmış olacağız.
9 )

/*Başlangıç--Bugün bu IP ile ilk giriş yapılınca bu işlemler gerçekleşecektir.*/
if($kayit_sayisi==0){//Sıfır (0) değeri geldi ise bugün daha önceden bu IP ile giriş yapılmamış demektir. Bu yüzden ip_sayaci tablomuza yeni veri girişi yapmamız gerekecektir.
	$ip_kaydet=mysql_query("INSERT INTO ip_sayaci (tarih, tiklama, ip) VALUES ('$buguntarih',1,'$ip')");//Veri girişini yaptık.
	$toplam_kayit_sorgu=mysql_query("SELECT * FROM toplam_sayac");//Burada eğer ki sayaç yeni oluşturuluyorsa tablo'da hiç kayıt yok demektir. Eğer öle ise kayıt var mı yokmu onu öğreneceğiz.
	$toplam_kayit_sayisi=mysql_num_rows($toplam_kayit_sorgu);//Kayır var ise kayıt sayısını getirir. Normalde 1 tane kayıttan sonra başka kayıt girilmez bu tabloya. Yani sayac siteye kurulduktan sonra siteyi ilk ziyaret eden bu tabloya veri girişini yapar. Diğer kullanıcılar ise sürekli güncelleme yaptırır.
	if($toplam_kayit_sayisi==0){//Sıfır(0) yani sayaç ilk kurumda ise Toplam_sayac tablosuna ilk veri girişi burada yapılır.
		$toplam_sayaci_baslat=mysql_query("INSERT INTO toplam_sayac(toplam_tekil,toplam_cogul) VALUES(1,1)");//Veri girişi yapılıyor.
	}
	else{//Eğer tablo_sayac' a veri girişi daha önceden yapıldıysa burada güncelleme yapılır.
		$toplam_sayaci_artir = mysql_query("UPDATE toplam_sayac SET toplam_tekil=toplam_tekil+1, toplam_cogul=toplam_cogul+1 WHERE id=1 LIMIT 1");//Güncelleme yapılıyor.
	}
}
/*Bitiş--Bugün bu IP ile ilk giriş yapılınca bu işlemler gerçekleşecektir.*/

Burada ise siteye gün içinde ilk kez giriş yapan birisinin kontrolü yapılmaktadır.
10 )

 
/*Başlangıç--Bugün daha önceden bu IP ile giriş yapımıştır*/
else{
$ip_sayaci_arttir = mysql_query("UPDATE ip_sayaci SET tiklama=tiklama+1 WHERE tarih='$buguntarih' and ip='$ip'");//SAdece ip_sayaci tablosundaki bugün tarihli ve IP'ye eşit verinin tıklama sayısını arttır.
$toplam_sayaci_artir1 = mysql_query("UPDATE toplam_sayac SET toplam_cogul=toplam_cogul+1 WHERE id=1 LIMIT 1");//Toplam_sayac tablosunda sadece cogul verisini arttır.
}
/*Bitiş--Bugün daha önceden bu IP ile giriş yapımıştır*/

Burada da bugün içinde daha önceden giriş yaptıysa onun güncellemeleri yapılmaktadır.
11 )

if ($gun > 0){
	$eski_kayit_sil = mysql_query("DELETE FROM ip_sayaci WHERE tarih <= DATE_SUB('$buguntarih', INTERVAL $gun DAY)");
}

Burada ip_sayaci tablomuzdaki silinecek kayıt varmı diye kontrol ediyor ve siliyoruz.
12 )

 
 
/*Başlangıç-Online ziyaretçileri saydırmak için yapılan veri giriş, güncelleme ve silme*/
//Süre sınırı ile ilgi sql cümleciği
$sure_miktari= mysql_query("DELETE FROM online_ziyaretci WHERE tarih<'$sure_siniri'");//Burada online olmayanları tablodan siliyor.
 
$ipsorgu=mysql_query("SELECT * FROM online_ziyaretci WHERE ip='$ip'");
//ip'li kullanıcı daha öncede sitede varmıydı diye sorgu gonderiyoruz.
 
$ipline	=mysql_num_rows($ipsorgu);//Varsa 1 değeri dönecektir.
 
if($ipline==0)//Eğer yok ise siteme kayıt ediyoruz.
{
	$gir="INSERT INTO online_ziyaretci VALUES ('','$ip','$zaman')";
	$girsor=mysql_query($gir);
}
else //Sistemde var ise tekrar girmeye gerek yoktur. Sadece zamanı güncellemek yeterlidir.
{
	$guncelle=mysql_query("UPDATE online_ziyaretci SET tarih='$zaman' WHERE ip='$ip'");
}
/*Bitiş-Online ziyaretçileri saydırmak için yapılan veri giriş, güncelleme ve silme*/

Online ziyaretçileri saydırma işlemi için gerekli kodlarımız….
13 )

/*Başlangıç--Sistemdeki Online Ziyaretcilerin Sayısını Öğrenme*/
$kac=mysql_query("SELECT id FROM online_ziyaretci");
//Sorgumuzu yapıyoruz
$online_ziyaretci_sayisi=mysql_num_rows($kac);
//Tabloda kaç satır var ise o kadar online ziyaretçi var demektir. Onu öğrenmiş olduk.
/*Bitiş--Sistemdeki Online Ziyaretcilerin Sayısını Öğrenme*/

Online ziyaretçilerin sayısını öğreniyoruz.
14 )

/*Başlangıç--Sistemdeki Toplam Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
$toplam_tc=mysql_query("SELECT * FROM toplam_sayac WHERE id=1 LIMIT 1");
//Sorgumuzu yapıyoruz. 1. satırdaki bilgiler bizim verilerimizi içerir.
$toplam_tc_cek=mysql_fetch_array($toplam_tc);
//Sorgumuz ile verileri diziye attık.
$toplam_tekil_sayisi=$toplam_tc_cek["toplam_tekil"];
//Tekil sayısı
$toplam_cogul_sayisi=$toplam_tc_cek["toplam_cogul"];
//Çoğul Sayısı
/*Bitiş--Sistemdeki Toplam Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/

Burada da sistemdeki toplam tekil ve çoğul ziyaretçilerin sayısını öğreniyoruz.
15 )

/*Başlangıç--Sistemdeki Bugünün Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
$bugun = mysql_query("SELECT COUNT(ip) AS ttoplam, SUM(tiklama) AS ctoplam FROM ip_sayaci WHERE tarih='$buguntarih'");
//Sorgumuzu yaptık. Bu sorguyu anlamak için biraz MYSQL bilginiz olursa daha rahat edersiniz.
//1. Tekil sayısını bugün kaç tane giriş yapan IP varsa onu saydırarak öğrenebiliriz.
//2. Çoğul sayısını bugün kaç tane tiklama varsa onları toplatırarak öğrenebiliriz.
$bugun_veri = mysql_fetch_object($bugun);
//Burada farklılık olması açısından Class'a attım verilerimizi
$bugun_tekil = $bugun_veri->ttoplam;//Bugün Toplam Tekil Ziyaretci Sayısı
$bugun_cogul = $bugun_veri->ctoplam;//Bugün Toplam Çoğul Ziyaretçi SAyısı
/*Bitiş--Sistemdeki Bugünün Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/

Burada ise sistemdeki bugün için tekil ve çoğul ziyaretçilerin sayısını öğreniyoruz.
16 )

/*Başlangıç--Sistemdeki Dün Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
$dun = mysql_query("SELECT COUNT(ip) AS dttoplam, SUM(tiklama) AS dctoplam FROM ip_sayaci WHERE tarih = DATE_SUB('$buguntarih', INTERVAL 1 DAY)");
//Sorgumuzu yaptırıyoruz.SQL cümleciğindeki tek fark gün işlemleri fonksiyonu olan DATE_SUB'u kullandık ve önceki tarihteki değeri öğrendik.
$dun_veri = mysql_fetch_object($dun);//Class'a attık.
$dun_tekil = $dun_veri->dttoplam;//Dün Toplam Tekil Ziyaretci Sayısı
$dun_cogul = $dun_veri->dctoplam;//Dün Toplam Çoğul Ziyaretci Sayısı
/*Bitiş--Sistemdeki Dün Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
?>

Burada da dün ki ziyaretçilerin sayısını öğreniyoruz. Siz bunu geçen hafataki veya bu ay gibi şekillerde de çoğaltarak kullanabilirsiniz.
17 )

<table width="240" border="1" cellpadding="0" cellspacing="0" bordercolor="#333333" bgcolor="#99CCCC" align="center">
  <tr>
    <td colspan="3" bgcolor="#99CCCC"><div align="center"><strong><a href="http://www.phpsorunu.com" target="_blank">ZİYARETÇİ SAYACI</a></strong></div></td>
  </tr>
  <tr>
    <td width="108" bgcolor="#99FF99">Online</td>
    <td width="4" bgcolor="#99FF99">:</td>
    <td width="141" bgcolor="#99FF99"><?php echo $online_ziyaretci_sayisi; ?></td>
  </tr>
  <tr>
    <td bgcolor="#99CCCC">Bugün Tekil</td>
    <td bgcolor="#99CCCC">:</td>
    <td bgcolor="#99CCCC"><?php echo $bugun_tekil; ?></td>
  </tr>
  <tr bgcolor="#99FF99">
    <td>Bugün Çoğul</td>
    <td>:</td>
    <td><?php echo $bugun_cogul; ?></td>
  </tr>
  <tr bgcolor="#99CCCC">
    <td>Dün Tekil</td>
    <td>:</td>
    <td><?php echo $dun_tekil; ?></td>
  </tr>
  <tr bgcolor="#99FF99">
    <td>Dün Çoğul</td>
    <td>:</td>
    <td><?php echo $dun_cogul; ?></td>
  </tr>
  <tr bgcolor="#99CCCC">
    <td>Toplam Tekil</td>
    <td>:</td>
    <td><?php echo $toplam_tekil_sayisi; ?></td>
  </tr>
  <tr bgcolor="#99FF99">
    <td>Toplam Çoğul</td>
    <td>:</td>
    <td><?php echo $toplam_cogul_sayisi; ?></td>
  </tr>
  <tr>
    <td bgcolor="#99CCCC">IP</td>
    <td bgcolor="#99CCCC">:</td>
    <td bgcolor="#99CCCC"><?php echo $ip; ?></td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="#99FF99"><div align="right"><a href="http://www.phpsorunu.com">phpsorunu</a> </div></td>
  </tr>
</table>

Burası ise sayacımızın ekrana yazdırılacağı kısımdır. Yani sayacımız resimdeki gibi gözükecek…
18 )

<?php
}
sayac();
//Yazdığımız fonksiyonumuzu çağırdık.
?>

Burada ise yazdığımız fonksiyonu çağırdık ve sayacımızın yapımı da burada sona ermiş oldu.

Örneği indirmek için tıklayınız…
Örneğimizin tamamı…İsterseniz buradan da kopyalayabilirsiniz.

 
 
<?php
/*
SQL Kodları Oluşturma
 
CREATE TABLE `ip_sayaci` (
  `id` int(11) NOT NULL auto_increment,
  `tarih` date NOT NULL,
  `tiklama` int(11) NOT NULL,
  `ip` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) 
 
CREATE TABLE `toplam_sayac` (
  `id` int(11) NOT NULL auto_increment,
  `toplam_tekil` int(11) NOT NULL,
  `toplam_cogul` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
)
 
CREATE TABLE `online_ziyaretci` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(50) NOT NULL,
  `tarih` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
)
 
 
*/
 
 
function sayac() {
 
@mysql_connect("localhost", "root", "123") or die("Host ile bağlantı kurulamıyor: " . mysql_error());
@mysql_select_db("deneme");
 
$gun=0;
//Kaç gün öncesinin kayıtları silinsin?Eğer sıfırdan farklı bir değer girmezseniz hiç bir zaman kayıtları silmez
 
$ip			=$_SERVER['REMOTE_ADDR'];
//Siteye ziyaret edenin IP'sini öğrenelim
 
$zaman		=time();
//Şu anki zamanı öğrenmemizi sağlar ve saniye cinsindendir.(Online sayac icin)
 
$buguntarih = date('Y-m-d');
//Bugünün tarihini öğreniyoruz. Çünkü ziyaret edenlerin sitemizi bugün içerisinde kaç kere ziyaret ettiğini öğrenmek için.
 
$sure_siniri=$zaman-60*5;
//Burada zaman 300 saniye 5 dk lik bir limit koyuyoruz ve 5 dk süre ile sitede herhangi bir işlem yapmadıysa online kısmında düşmek için bunu kullanacağız. Yani Online olayı 5 dk içindeki aktifliğine göre ayarlanıyor.
 
$kayit_sorgu = mysql_query("SELECT * FROM ip_sayaci WHERE tarih='$buguntarih' AND ip='$ip'");
//Bugün siteye gelen ziyaretçi bu IP ile daha önce giriş yapmış mı yoksa yapmamışmı diye kontrol etmek istiyoruz.
 
$kayit_sayisi=mysql_num_rows($kayit_sorgu);
//Burada daha onceden bugun tarihi ile giriş yapımış ise 1 değerini döndürcektir. Biz de bu sayede tekil sayısını saptamada birinci adımı atmış olacağız.
 
/*Başlangıç--Bugün bu IP ile ilk giriş yapılınca bu işlemler gerçekleşecektir.*/
if($kayit_sayisi==0){//Sıfır (0) değeri geldi ise bugün daha önceden bu IP ile giriş yapılmamış demektir. Bu yüzden ip_sayaci tablomuza yeni veri girişi yapmamız gerekecektir.
	$ip_kaydet=mysql_query("INSERT INTO ip_sayaci (tarih, tiklama, ip) VALUES ('$buguntarih',1,'$ip')");//Veri girişini yaptık.
	$toplam_kayit_sorgu=mysql_query("SELECT * FROM toplam_sayac");//Burada eğer ki sayaç yeni oluşturuluyorsa tablo'da hiç kayıt yok demektir. Eğer öle ise kayıt var mı yokmu onu öğreneceğiz.
	$toplam_kayit_sayisi=mysql_num_rows($toplam_kayit_sorgu);//Kayır var ise kayıt sayısını getirir. Normalde 1 tane kayıttan sonra başka kayıt girilmez bu tabloya. Yani sayac siteye kurulduktan sonra siteyi ilk ziyaret eden bu tabloya veri girişini yapar. Diğer kullanıcılar ise sürekli güncelleme yaptırır.
	if($toplam_kayit_sayisi==0){//Sıfır(0) yani sayaç ilk kurumda ise Toplam_sayac tablosuna ilk veri girişi burada yapılır.
		$toplam_sayaci_baslat=mysql_query("INSERT INTO toplam_sayac(toplam_tekil,toplam_cogul) VALUES(1,1)");//Veri girişi yapılıyor.
	}
	else{//Eğer tablo_sayac' a veri girişi daha önceden yapıldıysa burada güncelleme yapılır.
		$toplam_sayaci_artir = mysql_query("UPDATE toplam_sayac SET toplam_tekil=toplam_tekil+1, toplam_cogul=toplam_cogul+1 WHERE id=1 LIMIT 1");//Güncelleme yapılıyor.
	}
}
/*Bitiş--Bugün bu IP ile ilk giriş yapılınca bu işlemler gerçekleşecektir.*/
 
/*Başlangıç--Bugün daha önceden bu IP ile giriş yapımıştır*/
else{
$ip_sayaci_arttir = mysql_query("UPDATE ip_sayaci SET tiklama=tiklama+1 WHERE tarih='$buguntarih' and ip='$ip'");//SAdece ip_sayaci tablosundaki bugün tarihli ve IP'ye eşit verinin tıklama sayısını arttır.
$toplam_sayaci_artir1 = mysql_query("UPDATE toplam_sayac SET toplam_cogul=toplam_cogul+1 WHERE id=1 LIMIT 1");//Toplam_sayac tablosunda sadece cogul verisini arttır.
}
/*Bitiş--Bugün daha önceden bu IP ile giriş yapımıştır*/
 
//Eski kayıtları (ip_sayaci) tablosundan siler.
if ($gun > 0){
	$eski_kayit_sil = mysql_query("DELETE FROM ip_sayaci WHERE tarih <= DATE_SUB('$buguntarih', INTERVAL $gun DAY)");
}
 
/*Başlangıç-Online ziyaretçileri saydırmak için yapılan veri giriş, güncelleme ve silme*/
//Süre sınırı ile ilgi sql cümleciği
$sure_miktari= mysql_query("DELETE FROM online_ziyaretci WHERE tarih<'$sure_siniri'");//Burada online olmayanları tablodan siliyor.
 
$ipsorgu=mysql_query("SELECT * FROM online_ziyaretci WHERE ip='$ip'");
//ip'li kullanıcı daha öncede sitede varmıydı diye sorgu gonderiyoruz.
 
$ipline	=mysql_num_rows($ipsorgu);//Varsa 1 değeri dönecektir.
 
if($ipline==0)//Eğer yok ise siteme kayıt ediyoruz.
{
	$gir="INSERT INTO online_ziyaretci VALUES ('','$ip','$zaman')";
	$girsor=mysql_query($gir);
}
else //Sistemde var ise tekrar girmeye gerek yoktur. Sadece zamanı güncellemek yeterlidir.
{
	$guncelle=mysql_query("UPDATE online_ziyaretci SET tarih='$zaman' WHERE ip='$ip'");
}
/*Bitiş-Online ziyaretçileri saydırmak için yapılan veri giriş, güncelleme ve silme*/
 
 
/*Başlangıç--Sistemdeki Online Ziyaretcilerin Sayısını Öğrenme*/
$kac=mysql_query("SELECT id FROM online_ziyaretci");
//Sorgumuzu yapıyoruz
$online_ziyaretci_sayisi=mysql_num_rows($kac);
//Tabloda kaç satır var ise o kadar online ziyaretçi var demektir. Onu öğrenmiş olduk.
/*Bitiş--Sistemdeki Online Ziyaretcilerin Sayısını Öğrenme*/
 
/*Başlangıç--Sistemdeki Toplam Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
$toplam_tc=mysql_query("SELECT * FROM toplam_sayac WHERE id=1 LIMIT 1");
//Sorgumuzu yapıyoruz. 1. satırdaki bilgiler bizim verilerimizi içerir.
$toplam_tc_cek=mysql_fetch_array($toplam_tc);
//Sorgumuz ile verileri diziye attık.
$toplam_tekil_sayisi=$toplam_tc_cek["toplam_tekil"];
//Tekil sayısı
$toplam_cogul_sayisi=$toplam_tc_cek["toplam_cogul"];
//Çoğul Sayısı
/*Bitiş--Sistemdeki Toplam Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
 
/*Başlangıç--Sistemdeki Bugünün Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
$bugun = mysql_query("SELECT COUNT(ip) AS ttoplam, SUM(tiklama) AS ctoplam FROM ip_sayaci WHERE tarih='$buguntarih'");
//Sorgumuzu yaptık. Bu sorguyu anlamak için biraz MYSQL bilginiz olursa daha rahat edersiniz.
//1. Tekil sayısını bugün kaç tane giriş yapan IP varsa onu saydırarak öğrenebiliriz.
//2. Çoğul sayısını bugün kaç tane tiklama varsa onları toplatırarak öğrenebiliriz.
$bugun_veri = mysql_fetch_object($bugun);
//Burada farklılık olması açısından Class'a attım verilerimizi
$bugun_tekil = $bugun_veri->ttoplam;//Bugün Toplam Tekil Ziyaretci Sayısı
$bugun_cogul = $bugun_veri->ctoplam;//Bugün Toplam Çoğul Ziyaretçi SAyısı
/*Bitiş--Sistemdeki Bugünün Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
 
/*Başlangıç--Sistemdeki Dün Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
$dun = mysql_query("SELECT COUNT(ip) AS dttoplam, SUM(tiklama) AS dctoplam FROM ip_sayaci WHERE tarih = DATE_SUB('$buguntarih', INTERVAL 1 DAY)");
//Sorgumuzu yaptırıyoruz.SQL cümleciğindeki tek fark gün işlemleri fonksiyonu olan DATE_SUB'u kullandık ve önceki tarihteki değeri öğrendik.
$dun_veri = mysql_fetch_object($dun);//Class'a attık.
$dun_tekil = $dun_veri->dttoplam;//Dün Toplam Tekil Ziyaretci Sayısı
$dun_cogul = $dun_veri->dctoplam;//Dün Toplam Çoğul Ziyaretci Sayısı
/*Bitiş--Sistemdeki Dün Tekil ve Çoğul Ziyaretçilerin Sayısını Öğrenme*/
 
?>
 
<table width="240" border="1" cellpadding="0" cellspacing="0" bordercolor="#333333" bgcolor="#99CCCC" align="center">
  <tr>
    <td colspan="3" bgcolor="#99CCCC"><div align="center"><strong><a href="http://www.phpsorunu.com" target="_blank">ZİYARETÇİ SAYACI</a></strong></div></td>
  </tr>
  <tr>
    <td width="108" bgcolor="#99FF99">Online</td>
    <td width="4" bgcolor="#99FF99">:</td>
    <td width="141" bgcolor="#99FF99"><?php echo $online_ziyaretci_sayisi; ?></td>
  </tr>
  <tr>
    <td bgcolor="#99CCCC">Bugün Tekil</td>
    <td bgcolor="#99CCCC">:</td>
    <td bgcolor="#99CCCC"><?php echo $bugun_tekil; ?></td>
  </tr>
  <tr bgcolor="#99FF99">
    <td>Bugün Çoğul</td>
    <td>:</td>
    <td><?php echo $bugun_cogul; ?></td>
  </tr>
  <tr bgcolor="#99CCCC">
    <td>Dün Tekil</td>
    <td>:</td>
    <td><?php echo $dun_tekil; ?></td>
  </tr>
  <tr bgcolor="#99FF99">
    <td>Dün Çoğul</td>
    <td>:</td>
    <td><?php echo $dun_cogul; ?></td>
  </tr>
  <tr bgcolor="#99CCCC">
    <td>Toplam Tekil</td>
    <td>:</td>
    <td><?php echo $toplam_tekil_sayisi; ?></td>
  </tr>
  <tr bgcolor="#99FF99">
    <td>Toplam Çoğul</td>
    <td>:</td>
    <td><?php echo $toplam_cogul_sayisi; ?></td>
  </tr>
  <tr>
    <td bgcolor="#99CCCC">IP</td>
    <td bgcolor="#99CCCC">:</td>
    <td bgcolor="#99CCCC"><?php echo $ip; ?></td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="#99FF99"><div align="right"><a href="http://www.phpsorunu.com">phpsorunu</a> </div></td>
  </tr>
</table>
 
 
<?php
}
sayac();
//Yazdığımız fonksiyonumuzu çağırdık.
?>

Örneği indirmek için tıklayınız…
Örnek Uygulama
Herkese başarılar…

48 thoughts on “PHP Sayaç Yapımı – Online – Tekil – Çoğul Ziyaretçi Saydırma

  1. Reply Nuh Eyl 1,2010 07:28

    süper anlatım

  2. Reply Nurettin Eyl 23,2010 16:24

    baya güzel anlamışsınız ellerinize saglık

  3. Reply Omer Faruk Kas 12,2010 03:25

    Teşekkürler Güzel Paylaşım 🙂

  4. Reply ali baba Ara 2,2010 19:18

    cok teşekkür ederim.GErcekten harika. yaptıgım sitelere uyguladım süper .emeginize saglık.

  5. Reply Mizanger Ara 29,2010 02:55

    Selam hocam ben bunu yönetim paneline koymak istiyorum yani millet görmesin sayacı ama siteyi gezenleri ölçsün onu bir türlü ayarlayamadım sadece sayac.php ye girince artış gösteriyo.böyle anasayfa ekleyeceğimiz bir kod varmı oradan sayac.php ye yazsın ?

  6. Reply Hasan Huseyin İŞLE Ara 31,2010 17:00

    @Mizanger

    Kodları yerleştirin çıktısını sade admin panelde gösterin istediğiniz olur.

  7. Reply Mizanger Ara 31,2010 23:24

    tabloya kadar olan php yi ust.php deye include ettim ama beyaz sayfa çıkıyor.acaba neden olur.birde yönetim panelinde yazdırma kodunude ekleyince oradada beyaz sayfa oluyor.bana şunu bi parçalayıp atsana bi türlü yapamadım.Şimdi benim sitede ust.php var o dosya üst kısımı getiyor yani bütün sayfalarda görünüyor.oraya bi kod eklemen lazım bütün sayfalardaki ziyaretçileri veritabanına yazsın.birde /admin/index.php ye bi kod eklemem gerekiyo oradada ziyaretçileri gözetleyeyim.bunu bana ayarlayabilirsimisin ?

  8. Reply dasd Mar 29,2011 15:19

    çok sağolun emeğinize , elinize sağlık Allah razı olsun

  9. Reply mehmet yolcu Nis 6,2011 23:22

    Merhabalar paylaştığınız scripti Web Siteme entegre ettim, fakat şöyle bir sıkıntım var, aynı ağı kullanan Labaratuarımda ki birbilgisayarın okulun sitesini ziyaret ettiğinde tekil tek artış sağlıyor, diğer bilgisayarların girişi etkilemiyor artışı buna bir çözüm öneriniz var mıdır ?

    teşekkürler.

  10. Reply Hasan Huseyin İŞLE Nis 7,2011 20:50

    Tekil ziyaretlerde IP önemli olduğu için bu yüzden aynı ağdaki bilgisayarları da tek bir çıkış IP'i olduğu için onlar sadece çoğul sayacı artırıyor. Şu anda ona yapılabilecek hiç bir şey aklıma gelmiyor…

  11. Reply ali Nis 10,2011 22:58

    çok teşekkürler çok güzel bir anlatım.

    mehmet yolcu aynı ip oldugu için tek kişi görünür.

  12. Reply Berk May 2,2011 00:47

    peki ben günlük tekil hitin örneğin 70den başlamasını istiyorsam ne yapmalıyım ?

  13. Reply Hasan Huseyin İŞLE May 2,2011 13:22

    Veritabanındaki değeri default olarak 70 ten baslatırsın veya programdan sayacı 70 e ayarlayıp vt'ye yazdırırsın@Berk

  14. Reply günay May 10,2011 04:40

    mrb hocam sayacı siteye koyamadım lütfen yardimcı olun sayacı localde çaliştirdim

    siteye nasil koyacam bilmiyorum yardımcı olursanız çok memnun olurum

    yani hangi kodu siteye ekliyecem veya html sini nasil alaçam ?

  15. Reply rst Haz 9,2011 01:14

    allah razı olsun

  16. Reply senol Tem 17,2011 22:28

    Toplam Çoğul ve Toplam Tekil her refresh ettiğimizde sayıyor acaba bunu nasıl engelleriz

    • Reply hsnhsynisler Tem 17,2011 23:03

      Adı üstünde çoğul sayar. Tekillerde artım olmaması lazım.

    • Reply senolkatip Tem 22,2011 19:06

      hocam tamam çoğul sayıyorda siteye gelen biri her sayfayı değiştirdiğinde sayıyor acaba bunu en gelemenin bir yolu yokmu

  17. Reply mithat Tem 18,2011 14:31

    İyi günler,

    Kodlarınız mükemmel, yalnız şunu nasıl yapabilirim…
    Sayıları noktalı (mesela 4500'ü 4.500 olarak) nasıl gösterebiliriz.
    Yardımcı olursanız memnun olurum….

  18. Reply seyyidin Tem 25,2011 18:46

    ilginize teşekkür ederim

  19. Reply bugra Ağu 1,2011 11:45

    veri tabanı örneğini .sql olarak atabilir misiniz? ben orasını anlamadım bi türlü yapamadım . dump etmek istiyorum

    • Reply hsnhsynisler Ağu 1,2011 11:56

      Hocam o kadar kolay ki upload etmeye değmez. phpmyadin'e girin orada bir veritabanı oluşturun. Ve oluşturduğunuz veritabanı içerisindeki menülerde SQL diye yazar oraya tıklayın ve create table diye yazan komutlar vara mysql komutları içerikteki onları da komple oraya yapıştırın sorununuz hallolcaktır.

  20. Reply kpss Eyl 23,2011 15:16

    Verdiğiniz bilgiler için çok ama çok teşekkürler… Yazan elleriniz dert görmesin!

  21. Reply ÖMER Şub 5,2012 13:11

    veri tabanı örneğini .sql olarak atabilir misiniz? ben orasını anlamadım bi türlü yapamadım . dump etmek istiyorum

  22. Reply Tugay Mar 12,2012 20:11

    Dostum teşekkürler yaptım ama bir sorunum var mysql bilgim tam olmadığından çözemedim dünki çoğul boş gözüküyor tekil'i gösteriyor ama çoğul göstermiyor sebebi ne olabilir? Kodlar tıpatıp aynı sadece görüntülemeyi panelden yapıyoum bugünki tarih değişkenin fln var?

    • Reply hsnhsynisler Mar 28,2012 21:28

      Yazdığım kodlar %100 çalışıyor, lütfen değişken isimlerinizi kontrol ediniz.

  23. Reply Özgür Yavuz Nis 3,2012 15:33

    Teşekkür ederim

  24. Pingback: PHP Sayaç Yapımı – Online – Tekil – Çoğul Ziyaretçi Saydırma | Fatih Kondu

  25. Reply Onur Haz 5,2012 09:28

    Çok teşekkürler siteme entegre ettim tam olarak böyle bir şey arıyordum gereksiz sayaçlardan kurtulmuş oldum bu güzel paylaşım için size teşekkür ederim inşallah tekrar sitenizi php konusunda ziyaret edeceğim.

  26. Reply fatihcamcioglu Tem 19,2012 11:59

    İki günden beri uğrşıyorum sonunda sayenizde oldu.
    Teşekkürler.
    İyi çalışmalar

  27. Reply Musatafa DEMİR Ağu 3,2012 18:18

    Kardeş Allah Razı Olsun. Rabbim İlmini ziyadeleştirsin

  28. Reply dedeli Kas 2,2012 16:27

    Çok sağolun gayet kullanışlı. Ben bunu geliştirip tıklama sayısını label'a yazdırmak istiyorum. Onun için nasıl bir yol izlemeliyim?

  29. Reply WhiteHat musa Haz 13,2013 08:52

    sen böyle yap bakalım sana hata vericekmi. db ye baglanırken mysql baglantı değişkenini yazmamıssın 😀

  30. Reply efendi Eyl 3,2013 12:40

    Allah razı olsun kardeşim ellerinize sağlık. Serverı yoran asp sayaçlardan beni kurtardınya, Allah ne muradın varsa versin inşaallah

  31. Reply mehmet Tem 22,2014 05:47

    hocam bende birsürü hata aldım sorun nedir resim atıyorum _ http://prntscr.com/452a5n

  32. Reply Aslan Eyl 17,2014 17:51

    Hocam bu sayacı index.php sayfama koyuyorum, çalışıyor.Sıkıntım şu: ben admin panelinde bundan gelen değerleri nasıl göstereceğim.Eğer basit bir işse zamanınıza fazla almayacaksa lütfen kod olarak yazıp yardımcı olabilir misiniz ?

  33. Reply Sinan Yıldız Oca 19,2015 04:50

    sıfırdan yazmaya üşendim klavyene sağlık dostum direk (Ç) aldım kodlarını

  34. Reply rave4 May 23,2015 16:11

    bu kodların hepsini sayac.php içinemi atıcaz anlamadım yoksa ayrı ayrı dosyalaramı atıcaz eğer öyleyse dosyalara hangi isimleri vericez php publicte nereye atıcaz
    fazla anlamıyorum lütfen yardımcı olun
    veritabanında tabloları oluşturdum ama kodları çözemedim

  35. Reply kerem Haz 23,2015 13:41

    selamün aleyküm hocam öncelikle elinize emeğinize sağlık ben bu kodları admin panelinde görmek istiyorum onu nasıl yapabilirim

  36. Reply müzik haberleri Tem 1,2015 14:30

    gerçekten çok güzel bi uygulama olmuş çok aradıktan sonra bu kadar detaylı anlatım buldum teşekkürler

  37. Reply müzik haberleri Tem 1,2015 14:30

    gerçekten çok güzel bi uygulama olmuş çok aradıktan sonra bu kadar detaylı anlatım buldum teşekkür ediyorum

  38. Reply radyo dinle Tem 1,2015 14:31

    gerçekten çok güzel bi uygulama olmuş çok aradıktan sonra bu kadar detaylı anlatım buldum emeğiniz için teşekkürler

  39. Reply YapBoz Tem 9,2015 03:51

    Tekil ve çoğul ziyaretçiyi ayrı ayrı sayması önemliydi benim için, çok teşekkürler. Emeğiniz için teşekkürler.

  40. Reply mehmet Eyl 8,2015 11:47

    teşekkürler kardeşim

  41. Reply ibrahim Eyl 8,2015 17:23

    Yararlı bir yazı olmuş, teşekkürler.

Leave a Reply