PHP IP Adresine Göre Sayaç Nasıl Yapılır?

David M. Boren

Hectopat
Katılım
12 Haziran 2016
Mesajlar
61
Daha fazla  
Cinsiyet
Erkek
Merhabalar,

Web sitesini ziyaret eden toplam kullanıcı sayısını tespit edecek bir sayaç oluşturmak istiyorum.
Kullanıcıların IP adresini bir tabloya kaydedip, eğer kullanıcının tabloda IP'si yoksa yani ilk defa girdiyse, onun IP'sini tabloya ekleyip sayacı da 1 artırmak istiyorum. Bunun nasıl olduğunu araştırdım ve bu siteye rastladım. Ama burada MySQL sürümü var ben bunu postun sonundaki gibi PDO'ya uygun şekilde değiştirdim. Ama çalışmadı bir türlü! Önereceğiniz bir şeyler var mı?
PHP:
<?php

try{
    $db = new PDO('mysql:host=localhost;dbname=deneme;charset=utf8','root','');
} catch(PDOException $e){
    echo 'Hata: '.$e->getMessage();
}



function sayac(){
    global $db;
  
   if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $tarih = time();  
    $sonuc = $db->prepare("SELECT Count(ip) FROM ip_tablo WHERE ip= ?");
            $sonuc->execute(array(
                $ip
            ));
  
        $sayi = $sonuc->fetchColumn();
  
        if($sayi ==0){         
            $ekle = $db->prepare("INSERT INTO ip_tablom SET
            ip = ?,
            zaman = ?");
            $insert = $ekle->execute(array(
                 $ip, $tarih,
            ));         
            $guncelle = $db->prepare("UPDATE sayac_tablom SET tekil_hit=?, cogul_hit =?  WHERE id = ?");
            $guncelle->execute(array('(tekil_hit+1)','(cogul_hit+1)','1'));         
        }else{         
            $guncelle = $db->prepare("UPDATE sayac_tablom SET cogul_hit=? WHERE id = ?");
            $guncelle->execute(array('(cogul_hit+1)','1'));
        }
  
    $sonuc2 = $db->prepare("SELECT tekil_hit, cogul_hit FROM sayac_tablom WHERE id= ?");
            $sonuc->execute(array(
                '1'
            ));
    $satir=$sonuc2->fetch();
    echo 'Toplam Tekil Hit: <strong>'.$satir['tekil_hit'].'</strong><br>';
    echo 'Toplam Çoğul Hit: <strong>'.$satir['cogul_hit'].'</strong><br>';
}
?>
<?php sayac(); ?>
 
Umarım işini görür.
 

Dosya Ekleri

  • kod.jpg
    kod.jpg
    57,6 KB · Görüntüleme: 377
Umarım işini görür.
yardımcı olmaya çalıştığınız için teşekkürler, ancak sormuş olduğum sorunun açıklamasında atmış olduğunuz bu fotoğraftaki kodun linkini vermiştim zaten. Sorun MYSQL fonksiyonları PDO yöntemine uygun şekilde çevirememek. Ekranda sadece "Toplam Tekil Hit:" ve "Toplam Çoğul Hit:" yazıyor yanları boş. Yani sayılar gözükmüyor. Bunu nasıl çözebilirim?

"PDO ile IP Adresine Göre Ziyaretçi Sayacı" modülü yapıldı. Bu modülü belki bir gün işinize yarayacağınızı düşünerek REHBER olarak paylaşacağım. Teşekkürler! Konu kapanabilir...
 
Uyarı! Bu konu 8 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı