Webmaster Sitesi | Webmaster Destek Sitesi | Webmaster Forumu


Abonelik: RSS | Email  Facebooktan Takip Edin. Follow Me



Sayfa: [1]
 http://forum.moderntasarim.com/index.php sayfası diyor ki
Bu Linki Diğer Sitelerde Paylaşarak Sitemize Backlink Kazandırabilirsiniz.

  
PHP - Sayaç Yapımı

20 Şubat 2011, 11:21:32#0

Berkay Çevrimdışı

<?php echo "єχєℓαηѕ"; ?>
WM ÜYE
*
  Üyelik Tarihi: 26 Mart 2010
Kişisel: ModernTasarim.Com
Nerden: Antalya
Konular: 155 - İleti: 523
Ettiği Teşekkür: 6
Aldığı Teşekkür: 11
Site Sisteminiz: Smf
Tecrübe Puanı : 10 
Saygınlık Puanı: 8528
MesajMesajMesajRepRepRep

Günün Fırsatı
Sayaç Yapmak İçin Arkadaşlar 3 Sql sorgusunu database'ye okutmanız gerekiyor.
 
 
Kod: [Seç]
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`)

 
Kod: [Seç]
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`)

)

 
Kod: [Seç]
CREATE TABLE `online_ziyaretci` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(50) NOT NULL,
  `tarih` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
)

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

 <ul>
      <li>Online Ziyaretçi : <?php echo $online_ziyaretci_sayisi?> </li>
      <li>Bugün Tekil Ziyaretçi : <?php echo $bugun_tekil?></li>
      <li>Bugün Toplam Ziyaretçi : <?php echo $bugun_cogul?></li>
      <li>Dün Tekil Ziyaretçi : <?php echo $dun_tekil?></li>
      <li>Dün Çoğul Ziyaretçi : <?php echo $dun_cogul?></li>
      <li>Toplam Tekil Ziyaretçi : <?php echo $toplam_tekil_sayisi?></li>
      <li>Toplam Çoğul Ziyaretçi : <?php echo $toplam_cogul_sayisi?></li>
      <li>İp Adresiniz : <?php echo $ip?> </li>
      </ul>
 
 <?php
 
}
 
sayac();
 
//Yazd&#253;&#240;&#253;m&#253;z fonksiyonumuzu ça&#240;&#253;rd&#253;k.
 
?>

 Düzenlemeniz Gerek Tek Yer DB Bağlantısı kuracağı kısımdır.
 
 
Kod: [Seç]
@mysql_connect("localhost","dbuser","dbsifre") or die("Host ile baðlantý kurulamýyor: " . mysql_error());
 @mysql_select_db("dbadi");

 Gerekli ayarları yaptıktan sonra sayac.php'yi ana dizine atın ve sayacı göstermek istediğiniz yere
 
 
Kod: [Seç]
<?php include("sayac.php"); ?> Şeklinde sayac.php'yi çağırın.Ve Sayacımız Çalışacaktır.
 
 Demo
 
 Kaynak Göstermeden Alıntı Yapmayınız ;)
 
 
Bu Mesaj İçin Berkay Kullanıcısına Teşekkür Edenler: Toplam (1 Kişi)
Chakkal [ 2011-02-20 19:34:01 ] 
Sayfa: [1]

Etiketler