PHP ziyaretçi sayacı ve sayfa görüntülenme sayısı bulma konularına değineceğim. Ayrıca anlatacağım konuların çalışır örneğini konunun en altında link olarak ekleyeceğim. Böylece kendi bilgisayarınıza indirip inceleyebilir, geliştirebilir ve kullanabilirsiniz.
Birçok yöntemle PHP hit sayacı uygulaması yapılabilir. Kolay ve basit yöntemleri önceden gösterip daha sonra siteyi ziyaret eden kullanıcıların ip bilgilerine göre PHP hit işlemi nasıl yapılır konusuna geçelim.
Güncelleme: Anlık olarak PHP online üyeleri gösteren sayacın AJAX ile nasıl yapılabileceğini de yazının devamında ekledim. Bu örneği de sayfanın en altından indirebilir, kendinize göre düzenleyebilirsiniz.
Txt Dosyası ile Sayaç Yapımı
Sayfa görüntülendiği her seferde “sayac.txt” dosyası içerisindeki değer okunup, değeri 1 arttırılıp, yeni sayaç değeri dosyaya kaydedilecek ve sayfa görüntülenme sayısı gösterilecek. Bu şekilde sayfa görüntülenme sayısı veritabanı kullanmadan bulunabilir ama bu örneğin hiçbir kontrolü yok. Görevi sadece veritabansız sayfa görüntülenme sayısı öğrenmeyi basit hale getirmek. Genelde statik sitelerin sayfa görüntülenme sayısını bulmak için ideal ve basit bir çözüm olacaktır.
Cookie ile PHP Sayfa Görüntülenme Sayısı
Sayfa görüntülendiği sırada kullanıcının görüntülediği makaleye özgü bilgiye sahip cookie daha önceden oluşturuldu mu, oluşturulmadı mı kontrolü yapılıyor. Yani makaleyi önceden görüntülemiş mi bunu kontrol ediyoruz.
“makaleler” isminde bir tablo olduğunu ve bu tabloda ‘makale_hit’ isminde bir alanın bulunduğunu, bu alanda da makalenin görüntülenme sayısının tutulduğunu varsayalım. Eğer kullanıcı tarafından makale görüntülenmediyse o makalenin ‘makale_hit’ değerini 1 arttırıp, 1 gün boyunca kullanıcı makaleyi her ziyaret ettiğinde görüntülenme sayısının artmamasını sağlıyoruz. Bunu da PHP cookie kullanımı ile yapıyoruz. Cookie var olduğu sürece kullanıcı ne kadar makaleyi görüntülerse görüntülesin makale görüntülenme sayısı artmayacak.
Ip Adresine Göre Sayaç Yapımı
Siteye giren kullanıcıların ip adresine göre PHP hit uygulaması yapımı konusuna geçelim. Bu PHP sayaç yapımı örneğinde;
- Sitede online ziyaretçi sayacı, sitedeki toplam ziyaretçi sayısı, toplam sayfa görüntülenme sayısı
- Seçilen sayfaya göre günlük siteye giren ziyaretçi sayısı ve sayfa görüntülenme sayısı ve seçilen günde giren ziyaretçilerin ip, şehir ve siteyi kaç kere görüntülediği tıklanma sayısı
- Makale görüntülenme sayısı
gibi istatistik veriler gösterecek. Siteye giren kullanıcıların hangi şehirden girdiğini ise bir başka site üzerinden file_get_contents fonksiyonu kullanılarak PHP ile başka siteden veri çekme yöntemi ile bulacağız. PHP sayaç kodu ve ayrıntılarını aşağıda görebilirsiniz.
Veritabanı Tablo Görüntüleri
sayac_ip tablosu görünümü
sayac_online tablosu görünümü
sayac_toplam tablosu görünümü
makaleler tablosu görünümü
makale_analiz tablosu görünümü
index.php Dosya İçeriği
Veritabanı bağlantı ayarları, görüntü ayarlarının yapıldığı css kodları, veritabanı bağlantı ayarlarının bulunduğu “ayar.php” dosyası ve projede kullanılacak fonksiyonların bulunduğu “fonksiyon.php” dosyalarının projeye dahil etme işlemi gerçekleştiriliyor.
PHP Ziyaretçi Sayacı - Sayfa Görüntülenme Sayısı
ayar.php Dosya İçeriği
Veritabanı ayarlarının toplandığı dosya
fonksiyon.php Dosya İçeriği
Projede kullanılacak yardımcı fonksiyonlar ile birlikte PHP sayaç kodları içeren fonksiyonların bulunduğu dosya. Gerekli açıklamalar kod satırlarında mevcut.
(.*?)#', $content, $regs)){
$city = $regs[1];
}
if($city != ''){
return iconv('windows-1254','UTF-8',explode('lke: ',explode('-', $city)[0])[1]);
}else{
return 'yok';
}
/*$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
return $details->city?$details->city:'Lokasyon Belirlenemiyor';*/
}
function sayac_ayar(){
$ip = $_SERVER['REMOTE_ADDR']; //Localhost uzerinde calistiginda ip degeri '::1' seklinde doner. Sunucuya atildiginda dogru ip degeri gosterilir.
$zaman = time();
$buguntarih = date('Y-m-d');
$sure_siniri = $zaman-60*5;
$kayit_sql = row(query('SELECT count(id) as kayit_sayisi FROM sayac_ip WHERE tarih=''.$buguntarih.'' AND ip=''.$ip.'''));
if($kayit_sql['kayit_sayisi'] == 0){ //bugün bu ip ye sahip kullanıcı siteye girmediyse
query('INSERT INTO sayac_ip (tarih, tiklama, ip) VALUES (''.$buguntarih.'',1,''.$ip.'')'); //bugünün tarihini ve kullancıının ip sini kaydet
$toplam_kayit_sayisi = rows(query('SELECT id FROM sayac_toplam'));
if($toplam_kayit_sayisi == 0){
query('INSERT INTO sayac_toplam(toplam_tekil,toplam_cogul) VALUES(1,1)');
}else{
query('UPDATE sayac_toplam SET toplam_tekil=toplam_tekil+1, toplam_cogul=toplam_cogul+1 WHERE id=1 LIMIT 1');
}
}else{
query('UPDATE sayac_ip SET tiklama=tiklama+1 WHERE tarih=''.$buguntarih.'' and ip=''.$ip.'''); //bugün siteye bu kullancıı kaç kere girmiş, tıklama sayısını kaydet
query('UPDATE sayac_toplam SET toplam_cogul=toplam_cogul+1 WHERE id=1 LIMIT 1');
}
query('DELETE FROM sayac_online WHERE tarih < ''.$sure_siniri.'''); //5 dakika boyunca sitede aktif olmayan kullanıcıları online listesinden (sayac_online tablosundan) çıkart
$online_kontrol = row(query('SELECT count(id) as online_kontrol FROM sayac_online WHERE ip=''.$ip.'''));
if($online_kontrol['online_kontrol'] == 0){ //kullanıcının ip si sayac_online tablosunda yok ise
query('INSERT INTO sayac_online (ip, tarih) VALUES (''.$ip.'',''.$zaman.'')'); //kullanıcıyı sayac_online tablosuna ekle
}else{
query('UPDATE sayac_online SET tarih=''.$zaman.'' WHERE ip=''.$ip.'''); //sayac_online tablosundaki tarih alanını şu an ki zaman ile güncelle
}
}
function sayac_bilgiler(){
$buguntarih = date('Y-m-d');
$secilen_gun = g('secilen_gun')?g('secilen_gun'):$buguntarih;
$online_sql = row(query('SELECT count(id) as online_sayisi FROM sayac_online'));
$online_ziyaretci_sayisi = $online_sql['online_sayisi'];
$toplam_tc_cek = row(query('SELECT * FROM sayac_toplam WHERE id=1 LIMIT 1'));
$toplam_tekil_sayisi = $toplam_tc_cek['toplam_tekil'];
$toplam_cogul_sayisi = $toplam_tc_cek['toplam_cogul'];
$secilen_gun_sql = row(query('SELECT COUNT(ip) AS ttoplam, SUM(tiklama) AS ctoplam FROM sayac_ip WHERE tarih=''.$secilen_gun .'''));
$bugun_tekil = $secilen_gun_sql['ttoplam'];
$bugun_cogul = $secilen_gun_sql['ctoplam'];
?>
Genel Ziyaretçi Analizi
Site Online
Toplam Siteye Giren Sayısı
Toplam Sayfa Görüntülenme Sayısı
Günlük Ziyaretçi Analizi
Siteye Giren Sayısı
Sayfa Görüntülenme Sayısı
Tarihindeki Ziyaretçiler ()
Kullanıcı Ip
Kullanıcı Şehir
Site Görüntüleme Sayısı
':'Şehiri Göster';
?>
Makaleler
Makale
Görüntülenme Sayısı
">
makale.php Dosya İçeriği
">
Görüntülenme Sayısı: '.$goruntulenme_sayisi.'