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

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…

Hasan Huseyin İŞLER hakkında

Lise yıllarında programlama ile tanışan ve Q-Basic, Pascal, C başlangıç seviyesinde öğrenenir. Üniversite de TEF-BSÖ okurken diğer dillerin yanı sıra PHP'de kendini geliştirmeye devam ederek bunların yanında CSS, JS ve Wordpress sistemiyle ilgilenir. www.phpsorunu.com'un da yöneticisi ve yazarlarındandır.
Bu yazı Php kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

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

  1. Nuh der ki:

    süper anlatım

  2. Nurettin der ki:

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

  3. Omer Faruk der ki:

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

  4. ali baba der ki:

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

  5. Mizanger der ki:

    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. @Mizanger

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

  7. Mizanger der ki:

    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. dasd der ki:

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

  9. mehmet yolcu der ki:

    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. 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. ali der ki:

    ç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. Berk der ki:

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

  13. 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. günay der ki:

    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. rst der ki:

    allah razı olsun

  16. senol der ki:

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

    • hsnhsynisler der ki:

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

    • senolkatip der ki:

      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. mithat der ki:

    İ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. seyyidin der ki:

    ilginize teşekkür ederim

  19. bugra der ki:

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

    • hsnhsynisler der ki:

      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. kpss der ki:

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

  21. ÖMER der ki:

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

  22. Tugay der ki:

    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?

    • hsnhsynisler der ki:

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

  23. Özgür Yavuz der ki:

    Teşekkür ederim

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

  25. Onur der ki:

    Ç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. fatihcamcioglu der ki:

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

  27. Musatafa DEMİR der ki:

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

  28. dedeli der ki:

    Ç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. WhiteHat musa der ki:

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

  30. efendi der ki:

    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. mehmet der ki:

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

  32. Aslan der ki:

    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. Sinan Yıldız der ki:

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

  34. rave4 der ki:

    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. kerem der ki:

    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. müzik haberleri der ki:

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

  37. müzik haberleri der ki:

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

  38. radyo dinle der ki:

    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. YapBoz der ki:

    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. mehmet der ki:

    teşekkürler kardeşim

  41. ibrahim der ki:

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

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir