Tekil Mesaj gösterimi
Eski 26 Nisan 2026, 07:28   #1
Çevrimdışı
DEKO
DEKO - ait Kullanıcı Resmi (Avatar)
Üyelerin profil bilgilerini yalnızca kayıtlı üyeler görüntüleyebilir. Lütfen kaydol bağlantısından üye olunuz.
Varsayılan PHP ile Admin Paneli — Bot vs İnsan Ziyaretçi Analizi (Gerçek Zamanlı, Chart.js)

PHP ile Admin Paneli — Bot vs İnsan Ziyaretçi Analizi (Gerçek Zamanlı, Chart.js)

Merhaba,

Google Analytics yerine kendi sunucumdan direkt çeken, hangi trafiğin gerçek kullanıcıdan hangi trafiğin bot/crawler'dan geldiğini anlık olarak gösteren bir panel yaptım. Sonuç olarak ortaya çıkan bot_analytics.php'yi paylaşıyorum.



Yazdığımız php scriptinden örnek bir resim ;




━━━━━━━━━━ PANEL NE YAPIYOR? ━━━━━━━━━━

Anlık Canlı Durum
Sayfanın en üstünde "son 10 dakika" penceresi var. Gerçek kullanıcı sayısı, bot sayısı ve anlık bot oranı canlı gösteriliyor. Sayfa 60 saniyede bir otomatik yenileniyor. Bot oranı %30 altında yeşil, %30-60 arası turuncu, %60 üzerinde kırmızı renkte gösteriliyor.

Özet Kartlar (Bugün)
  • Toplam hit (bot + insan)
  • İnsan ziyareti
  • Bot ziyareti
  • Seçili dönemin bot oranı (%)

Günlük Trend Grafiği
Son 7/14/30/60/90 günün günlük bot ve insan trafiği yığılmış bar grafik olarak gösteriliyor. URL'de ?range=30 şeklinde dönem seçimi yapılabiliyor.

Pasta Grafik
Seçili dönemin toplam bot/insan dağılımı halka (doughnut) grafik olarak, sayısal değerleri ile birlikte yan tarafta listeleniyor.

Saatlik Bar Grafik
Bugünün saat saat bot ve insan trafiği yığılmış bar grafik olarak gösteriliyor. Hangi saatlerde bot trafiğinin arttığını hemen görüyorsunuz.

Aktif Ziyaretçi Listeleri (Şu An)
Sol panel: Son 10 dakikada gelen gerçek kullanıcılar. Kayıtlı üyeler 👤, misafirler 👻 ile ayrılıyor. IP, ziyaret ettikleri sayfa ve son görülme saati gösteriliyor.
Sağ panel: Aktif botlar. IP, User-Agent özeti ve ziyaret ettiği sayfa listeleniyor.

Bot User-Agent Listesi
Aktif botları User-Agent bazında gruplayıp sıralıyor. Her UA için görsel ilerleme çubuğu ile ne kadar yaygın olduğu anlaşılabiliyor.

━━━━━━━━━━ DOSYA YAPISI ━━━━━━━━━━

Kod:
sitem.com/
├── config/
│   └── db.php                      ← PDO bağlantısı
└── admin/
    └── bot_analytics.php           ← Ana panel (tek dosya, standalone)

bot_analytics_kurulum.sql           ← Tablo kurulum scripti
━━━━━━━━━━ VERİTABANI TABLOLARI ━━━━━━━━━━

SQL kurulum dosyası ekte. 2 tablo gerekiyor:

Kod:
-- Günlük/saatlik istatistik
site_stats (
    stat_date, stat_hour,
    page_views, human_hits, bot_hits,
    unique_ips, searches, video_views
)

-- Anlık aktif ziyaretçi takibi
active_visitors (
    ip, is_member, is_bot,
    user_agent, page_url, last_seen
)
Zaten site_stats tablonuz varsa sadece human_hits ve bot_hits sütunlarını ALTER ile ekleyin. SQL dosyasında IF NOT EXISTS kullanıldığından mevcut tablolara dokunmaz.

━━━━━━━━━━ KURULUM ━━━━━━━━━━

1. SQL'i çalıştır
bot_analytics_kurulum.sql dosyasını phpMyAdmin'e import et. site_stats ve active_visitors tabloları oluşturulur.

2. db.php'yi doldur
config/db.php içindeki DB_HOST / DB_NAME / DB_USER / DB_PASS değerlerini kendi sunucuna göre düzenle.

3. Dosyayı yükle
bot_analytics.php dosyasını admin/ klasörüne yükle. Auth kontrolü dosyanın başında mevcut, $_SESSION['admin_logged_in'] değişkenini kendi oturum sisteminle değiştir.

4. Middleware'e tracker ekle
Panelin dolması için her sayfa yüklendiğinde ziyaretçilerin kaydedilmesi gerekiyor. SQL kurulum dosyasının içinde yorum satırı olarak track_visitor() fonksiyonu var. Bunu kendi header.php veya ortak include dosyanıza ekleyip her sayfada çağırın:

Kod:
// header.php veya ortak bootstrap dosyanızda:
require_once 'config/db.php';
require_once 'includes/tracker.php';
track_visitor($db);
Bu fonksiyon User-Agent'e bakarak otomatik bot tespiti yapıyor. Googlebot, Bingbot, YandexBot, AhrefsBot, SemrushBot ve 15+ farklı crawler tanımlı. Tanımadığı bir UA gördüğünde insan olarak işaretliyor.

5. Paneli aç
admin/bot_analytics.php adresine git. URL'e ?range=7, ?range=30 gibi parametreler ekleyerek dönem değiştirebilirsin.

━━━━━━━━━━ ÖNEMLİ NOTLAR ━━━━━━━━━━
  • Bot tespiti User-Agent tabanlıdır. Headless browser veya UA sahteleyen botlar insan olarak görünebilir. Daha gelişmiş tespit için JavaScript challenge veya honeypot yöntemi eklenebilir.
  • active_visitors temizliği: Tablo sürekli büyümemesi için günlük bir cron job ile 10 dakikadan eski kayıtlar silinmeli. SQL dosyasında örnek DELETE sorgusu yorum olarak yer alıyor.
  • Performans: active_visitors tablosunda ip sütununa UNIQUE KEY ekli, yani aynı IP'nin kaydı tekrar eklenmek yerine güncelleniyor (UPSERT). Çok fazla eş zamanlı ziyaretçide sorun yaşanmaz.
  • Cloudflare arkasındaki siteler: IP tespitinde HTTP_CF_CONNECTING_IP header'ını kullanmayı unutmayın, aksi halde tüm IP'ler Cloudflare IP'si olarak görünür.
  • Otomatik yenileme: Sayfa 60 saniyede bir location.reload() ile yenileniyor. İsteğe bağlı olarak AJAX ile sadece verileri güncelleyen bir yapıya dönüştürülebilir.

━━━━━━━━━━ GEREKSİNİMLER ━━━━━━━━━━
  • PHP 7.4 veya üzeri
  • PDO + PDO_MySQL extension
  • MySQL 5.7 / MariaDB 10.3 veya üzeri
  • Chart.js 4.x (CDN üzerinden, kurulum gerektirmez)
  • Font Awesome 6 (ikonlar için, CDN)

━━━━━━━━━━ EKLER ━━━━━━━━━━
  1. bot_analytics.php — Ana panel. Standalone çalışır, harici kütüphane gerektirmez.
  2. db.php — PDO bağlantı dosyası. Sadece kendi bilgilerinizi girin.
  3. bot_analytics_kurulum.sql — 2 tablo + track_visitor() fonksiyon örneği.

Test ortamı: PHP 8.2 / MariaDB 10.6 / Chart.js 4.4.1. PHP 7.4 altında arrow function (fn() =>) syntax hatası verir, o durumda function($x) { return ...; } şeklinde dönüştürün.

Eklenmiş Dosya
Dosya tipi: zip bot_analytics.zip (7.7 KB, 0x kez indirilmiştir)

Fallen code. Broken systems. No mercy.