2 aydır php kursuna gidiyorum. Benim için de pratik şansı oldu biraz üzerinde uğraştım.
Kodu biraz da ben geliştirmeye çalıştım.
Henüz denemedim ama acemi olduğum için ve acelem olduğu için hata yapmış olabilirim. Deneyenler hata varsa söylesinler lütfen.
Ersat hocanın kodlarını geliştirerek son 15 dakikadır online olanları gösterebilir hale getirdim hem de 24 saat sonunda ip adresleri silinirken ip adreslerinin tekil ve çoğul hitleri de siliniyor.
Böylece başka bir koda çalıştırmaya gerek olmadan güncel tekil ve çoğul hitler görüntülenebilir.
Database i değiştirdim tek tablo yaptım
online kullanıcıları göstermek için online zaman kolonu ekledim.
CREATE TABLE `sayac_tablom` (
`id` int(15) NOT NULL auto_increment,
`ip` int(15) NOT NULL,
`tekil_hit` int(15) NOT NULL,
`cogul_hit` int(15) NOT NULL,
`zaman` int(11) NOT NULL,
`onlinezaman` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ip` (`ip`)
);
<?php
//ErsaT
//Mysql bağlantı
$bagla = mysql_connect('localhost', 'user_kullanici', 'user_kullanici_password');
mysql_select_db('veritabani_ismi');
function sayac(){
global $bagla;
$ip = $_SERVER['REMOTE_ADDR'];
$tarih = time();
$zamanasimi = time()-86400;
$online_suresi = time()-60*15;//son 15 dakikadir giriş yapan
//1 günlük zamanaşımına uğrayan ip leri sil
// ARTIK TEK TABLO OLDUĞU İÇİN İPLER İLE O SATIRDAKİ ÇOĞUL VE TEKİL HİT DEĞERLERİ DE DÜŞÜYOR
mysql_query("DELETE FROM sayac_tablom where zaman < ".$zamanasimi);
//sayfa talep eden ip adresin sayac da kaydı var mı diye bakiyoruz.
$sonuc = mysql_query("Select * FROM sayac_tablom where ip='$ip'");
$sayi = mysql_num_rows($sonuc);
if($sayi < 1){
//eğer ip adresi kayitli degilse database e ekleniyor ve tekil ve çoğul hit 1 artıyor.
mysql_query("Insert Into sayac_tablom (ip, tekil_hit, cogul_hit, zaman, online_zaman) Values ('$ip', 1, 1, '$tarih', '$tarih')");
}else{
//eğer ip adresi daha önce varsa çoğul hit 1 artıyor ve online_zaman alanına son işlem yapılan an zamanı yazılıyor
mysql_query("UPDATE sayac_tablom SET cogul_hit=(cogul_hit+1), online_zaman = '$tarih' WHERE ip = '$ip' ");
}
//$sonuccogul değişkenine cogul_hit sütunundaki tüm satırlardaki rakam değerlerinin toplamını istiyoruz
$sonuccogul = mysql_query("SELECT TYPE, SUM(cogul_hit) FROM sayac_tablom");
// $cogulhit değişkenine gelen arraydeki toplam coğul hit sayısını atıyoruz
$cogulhit = intval($sonuccogul['SUM(cogul_hit)']);
//çoğul sonucu bulmak için toplanan tüm satırlar aktif ip adresi sayımızı yani tekil hitimizi veriyor
$tekilhit = mysql_num_rows($sonuccogul);
//online_zaman bilgisi 15 dakikadan yeni olan kullanicilari listeletiyoruz.
$onlinesorgu = mysql_query("SELECT * FROM sayac_tablom WHERE online_zaman > '$online_suresi'");
//online kullanıcı sayısını $onlinesayisi değişkenine atıyoruz
$onlinesayisi = mysql_num_rows($onlinesorgu);
// HEPSİNİ YAZDIRIYORUZ.
echo 'Toplam Tekil Hit: <strong>'.$tekilhit.'</strong><br>';
echo 'Toplam Çoğul Hit: <strong>'.$cogulhit.'</strong><br>';
echo 'Şu anda sitede '.$onlinesayisi.' üye online durumdadır.';
mysql_close($bagla);
}
?>fonksiyon değişmedi
sayac();
saygılar