- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Bu sistemde her ziyaretçinin IP adresini ve giriş tarihini kaydederek; "Bugün kaç farklı kişi geldi?" ve "Toplamda kaç kişi geldi?" sorularına yanıt bulacağız.
Öncelikle ziyaret verilerini tutacağımız bir tablo oluşturmalıyız. SQL sekmenize şu kodu yapıştırın:
Aşağıdaki kod parçası; önce ziyaretçinin IP'sini alır, bugün bu IP ile giriş yapılıp yapılmadığını kontrol eder, yapılmamışsa yeni bir kayıt oluşturur.
Sisteminizi daha profesyonel hale getirmek için şu eklemeleri yapabilirsiniz:
Kendi sayacınızı yazmak, üçüncü parti araçlara (Google Analytics gibi) bağımlı kalmadan temel verileri sunucunuzda tutmanızı sağlar. Özellikle gizlilik odaklı projelerde ve basit yönetim panellerinde IP bazlı bu sistem oldukça verimlidir.
1. Veritabanı Yapısının Hazırlanması
Öncelikle ziyaret verilerini tutacağımız bir tablo oluşturmalıyız. SQL sekmenize şu kodu yapıştırın:
SQL:
CREATE TABLE ziyaretciler (
id INT AUTO_INCREMENT PRIMARY KEY,
ip_adresi VARCHAR(50),
tarih DATE
);
2. Sayaç Mantığı ve PHP Kodları
Aşağıdaki kod parçası; önce ziyaretçinin IP'sini alır, bugün bu IP ile giriş yapılıp yapılmadığını kontrol eder, yapılmamışsa yeni bir kayıt oluşturur.
PHP:
<?php
// Veritabanı Bağlantısı (PDO)
$host = "localhost";
$db = "veritabani_adi";
$user = "kullanici_adi";
$pass = "sifre";
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
} catch (PDOException $e) {
die("Bağlantı hatası: " . $e->getMessage());
}
// 1. Ziyaretçinin IP Adresini Al
$ip = $_SERVER['REMOTE_ADDR'];
$bugun = date("Y-m-d");
// 2. Bu IP bugün daha önce gelmiş mi?
$kontrol = $pdo->prepare("SELECT id FROM ziyaretciler WHERE ip_adresi = ? AND tarih = ?");
$kontrol->execute([$ip, $bugun]);
if ($kontrol->rowCount() == 0) {
// Bugün ilk defa geliyor, kaydet
$ekle = $pdo->prepare("INSERT INTO ziyaretciler (ip_adresi, tarih) VALUES (?, ?)");
$ekle->execute([$ip, $bugun]);
}
// 3. İstatistikleri Çek
// Günlük Tekil Hit
$gunluk_sorgu = $pdo->prepare("SELECT COUNT(id) as toplam FROM ziyaretciler WHERE tarih = ?");
$gunluk_sorgu->execute([$bugun]);
$gunluk_hit = $gunluk_sorgu->fetch(PDO::FETCH_ASSOC)['toplam'];
// Toplam Hit
$toplam_hit = $pdo->query("SELECT COUNT(id) as toplam FROM ziyaretciler")->fetch(PDO::FETCH_ASSOC)['toplam'];
// Ekrana Yazdır
echo "<div>";
echo "<strong>Bugünkü Ziyaretçi:</strong> " . $gunluk_hit . "
";
echo "<strong>Toplam Ziyaretçi:</strong> " . $toplam_hit;
echo "</div>";
?>
3. Gelişmiş Özellikler ve Performans
Sisteminizi daha profesyonel hale getirmek için şu eklemeleri yapabilirsiniz:
[] Proxy Kontrolü: REMOTE_ADDR bazen yanlış IP verebilir (Proxy arkasındaki kullanıcılar). HTTP_X_FORWARDED_FOR kontrolü ekleyerek gerçek IP'yi yakalayabilirsiniz.
[] Tablo Temizliği: Veritabanının şişmemesi için 30 günden eski kayıtları periyodik olarak silen bir Cron Job komutu oluşturabilirsiniz.- Online Ziyaretçi: Son 5 dakika içinde aktif olan IP'leri sayarak "Şu an sitede X kişi var" özelliği ekleyebilirsiniz.
| Metrik | Açıklama | Kullanım Amacı |
|---|---|---|
| Tekil Ziyaretçi | Aynı gün içinde 1 IP = 1 Sayım | Gerçek kullanıcı sayısını ölçer. |
| Sayfa Görüntüleme | Her yenilemede 1 Sayım | Sitenin ne kadar yoğun kullanıldığını ölçer. |
| Oturum (Session) | Kullanıcı siteden ayrılana kadar 1 Sayım | Ziyaret başına geçirilen süreyi analiz eder. |
Sonuç
Kendi sayacınızı yazmak, üçüncü parti araçlara (Google Analytics gibi) bağımlı kalmadan temel verileri sunucunuzda tutmanızı sağlar. Özellikle gizlilik odaklı projelerde ve basit yönetim panellerinde IP bazlı bu sistem oldukça verimlidir.