v2.5.2
Giriş yap

Ziyaretçi Verilerini Nasıl Tutabilirim?

redline
581 defa görüntülendi ve 2 kişi tarafından değerlendirildi

Merhaba PT Sakinleri.

PHP tabanlı yazmış olduğum bir web sitesi var. Ziyaretçi verilerini tutmak ve yönetim panelinde göstermek istiyorum.

Google Analytics kullanamıyorum çünkü bu web sitesini birden çok kişi bir birinden bağımsız olarak kullanacak. Yani her site için hesap oluşturmak gerekecek bu durumda ki iş yükü ve takip zorunluluğu gerektirecek bu durum. Bu sebepten dışa bağımsız kendi içinde çalışan bir eklenti veya sisteme ihtiyacım var.

Olması Gereken Özellikler

— Anlık aktif ziyaretçi sayısını görme.
— Günlük, haftalık, aylık, yıllık ve tüm zamanlarda gerçekleşmiş ziyaretçi sayısını görme.
— Veritabanı kullanmadan çalışması (Veritabanını şişmemesi için).
— Aynı ziyaretçiyi gezdiği her sayfa için birden çok kez saymaması.

Olsa Güzel Olur Ama Olmasada Olur Özellikler

— Ziyaretçinin gezdiği sayfaların tutulması.
— Oturum süresinin tutulması.
— Haftalık, aylık, yıllık ziyaretçi sayısını grafik olarak gün içinde kaç kişi ziyaret etmiş şeklinde gösterimi.
— Masaüstü ve mobil ziyaretçi ayrımı.
— Tarih aralığı ile ziyaretçi grafiği görüntüleyebilme.
— Siteye üye ve üye olmayan ziyaretçi bilgisi.
Cevap yaz
Cevaplar (7)
acemi
700 gün önce

@h4ckdr0

bence ip bazlı veriler düzgün olmayabilir.
aynı ip kullanan bir ev atıyorum 5 farklı cihazdan girebilir. ve hepsinin IP adresinin aynı olduğunu varsayarsak bunları 1 kişi olarak gösterir.
tarayıcı bazılı tutsak yine aynı IP ve aynı tarayıcı yüzünden bir sorun oluşabilir.

bunu yaparken bence biraz daha iyi düşünmek gerekiyor.

h4ckdr0
701 gün önce

Merhaba,

Bu görev için birçok çözüm mevcut. Önerebileceğim birkaç yöntem şunlardır:

  • PHP ve JavaScript kullanarak özel bir istatistik sayfası oluşturmak: Bu yöntemde, PHP sayfasından JavaScript fonksiyonları çağırarak anlık aktif ziyaretçi sayısını ve geçmiş ziyaretçi sayılarını takip edebilirsiniz. Örneğin, bir JavaScript sayacı oluşturarak her sayfa yüklemesinde sayacı artırabilir ve PHP sayfasından bu sayaç değerini okuyarak ziyaretçi sayısını takip edebilirsiniz. Bununla birlikte, aynı ziyaretçiyi birden çok kez saymamak için ziyaretçinin tarayıcısına bir cookie yerleştirebilir ve PHP sayfasından bu cookie değerini kontrol ederek aynı ziyaretçinin tekrar sayılmamasını sağlayabilirsiniz. Bu yöntem veritabanı kullanımını gerektirmez, ancak verileri saklama ve tarih aralıklarına göre görüntüleme gibi işlemleri yapmak için bir yöntem bulmanız gerekebilir.

  • PHP istatistik eklentileri kullanarak bir istatistik sayfası oluşturmak: Bu yöntemde, PHP sayfasına bir istatistik eklentisi ekleyerek anlık aktif ziyaretçi sayısını ve geçmiş ziyaretçi sayılarını takip edebilirsiniz. Örneğin, "PHP Web Counter" adlı bir eklenti kullanarak veritabanına ziyaretçi bilgilerini kaydedebilir ve bu verileri daha sonra görüntüleyebilirsiniz. Bu yöntem veritabanı kullanımını gerektirir, ancak daha gelişmiş özellikleri (örneğin, ziyaretçinin gezdiği sayfaların tutulması, oturum süresinin tutulması, masaüstü ve mobil ziyaretçi ayrımı) daha kolay bir şekilde gerçekleştirebilirsiniz.

Örnek bir PHP kod parçacığı aşağıdaki gibidir:

// Ziyaretçi sayacını artır
$counter_file = "counter.txt";
$f = fopen($counter_file, "r");
$counter = fread($f, filesize($counter_file));
fclose($f);
$counter++;
$f = fopen($counter_file, "w");
fwrite($f, $counter);
fclose($f);

// Ziyaretçi bilgilerini kaydet
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$visitor_time = time();
$visitor_agent = $_SERVER['HTTP_USER_AGENT'];

$visitor_data = array(
    'ip' => $visitor_ip,
    'time' => $visitor_time,
    'agent' => $visitor_agent
);

// Veritabanına ziyaretçi bilgilerini kaydet
$db = new mysqli("localhost", "username", "password", "database_name");
$query = "INSERT INTO visitors (ip, time, agent) VALUES (?, ?, ?)";
$stmt = $db->prepare($query);
$stmt->bind_param("sis", $visitor_ip, $visitor_time, $visitor_agent);
$stmt->execute();

// Ziyaretçi sayısını görüntüle
echo "Anlık ziyaretçi sayısı: " . $counter;

// Geçmiş ziyaretçi sayısını görüntüle
$query = "SELECT COUNT(*) FROM visitors";
$result = $db->query($query);
$num_visitors = $result->fetch_row()[0];
echo "Toplam ziyaretçi sayısı: " . $num_visitors;

// Ziyaretçi bilgilerini görüntüle
$query = "SELECT * FROM visitors ORDER BY time DESC LIMIT 10";
$result = $db->query($query);
while ($row = $result->fetch_assoc()) {
    echo "IP: " . $row['ip'] . ", Zaman: " . $row['time'] . ", Tarayıcı: " . $row['agent'];
}

$db->close();

Bu kod, ziyaretçi sayacını artırarak anlık ziyaretçi sayısını takip eder ve veritabanına ziyaretçi bilgilerini kaydeder. Ayrıca, veritabanından geçmiş ziyaretçi sayısını ve son 10 ziyaretçinin bilgilerini görüntüler.

Bu kod sadece bir örnek ve kendi ihtiyaçlarınıza göre düzenlemek gerekebilir. Örneğin, aynı ziyaretçiyi birden çok kez saymamak için cookie kullanımını da düşünebilirsiniz. Ayrıca, istediğiniz tarih aralıklarına göre ziyaretçi sayısını görüntülemek için veritabanı sorgularını değiştirebilir ve ziyaretçinin gezdiği sayfaları, oturum süresini ve diğer özellikleri de tutmak için veritabanına ek kolonlar ekleyebilirsiniz.

Bu kodu kullanarak, önerdiğim özelliklerin çoğunu gerçekleştirebilirsiniz. Ancak, özelliklerin tamamını gerçekleştirmek için kodu daha da geliştirmek veya farklı bir çözüm kullanmak gerekebilir.

Umarım bu bilgiler yardımcı olmuştur.

redline
703 gün önce
  • GÜNCEL
qplot
790 gün önce

bu kod sana yol gösterebilir. aylık olarak sql de tuttarsın ay bıtınce jsona atar sqlden sılersın gunluk aylık yıllık vs jsondan okursun

ayrıca bak https://rigorousthemes.com/blog/open-source-google-analytics-alternatives/

$hit_id=$row_alan['a_id'];
 
if (empty($_SESSION["ahit_{$hit_id}"]) or ($_SESSION["ahit_{$hit_id}"]<time())) { // ONCE SESSIONLA BAKIYORUM OKUMUSMU ADAM BU YAZIYI
     
    $_SESSION["ahit_{$hit_id}"] = time()+86400; // KILIT NOKTA BURASI EĞER ADAM OKUMADIYSA BU BLOGU SESSIONA 86400 SANIYE / 24 SAAT EKLIYORUM 
 
	$btip=3; // 1 Blog 2 Etkinlik 3 kamp alanı
	
	// BURADA 2. ESAS KONTROLU YAPIYORUM EGER 24 SAAT ICINDE 2. ZIYARETI ISE ALLTAKI KOD DEVREYE GIRIYOR
	
    $bbak=$ans->prepare("SELECT * FROM hit WHERE h_tip=3 AND h_deger=? AND h_tarih >= NOW() - INTERVAL 1 day AND h_ip=?");
    $bbak->execute([$row_alan['a_id'],GetIP()]);
	$say_bbak=$bbak->rowCount();
 
	if($say_bbak==0){ // EĞER SESSION DEVREDEN CIKARSA BU KOD KONTROLU YAPIYOR SAYFAYI YENILESEDE IZIN VERMIYOR :)
 
	$byaz=$ans->prepare("INSERT INTO hit (h_tip, h_deger, h_ip) VALUES (?,?,?)");
	$byaz->execute([$btip,$row_alan['a_id'],GetIP()]);
	
	$bhit=$ans->prepare("UPDATE alan SET a_hit=a_hit +1 WHERE a_id=?");
	$bhit->execute([$row_alan['a_id']]);

	}	
}
redline
790 gün önce

@262efe Hocam ben kimseye bedava sistem yazdırma niyetinde değilim öncelikle bunu belirteyim ki az çok neyin ne olduğunu biliyorum, ortalam 10 yıldır bu sektörün içindeyim. Kimse kimseye ücretsiz böyle birşey yapmaz fikri de size ait bir fikir bence ki herkes bu kafadan ilerlese piyasada ücretsiz eğitim videosu çeken kalmaz :) Konuya gelecek olursak bu işi yapan eklentiler var. Olmasada Olur kısmında belirttiklerim dediğiniz kısma geçiyor olabilir, o yüzden adı olmasada olur ama bunları sağlayan bir eklenti varsa bilen paylaşırsa en azından onları da kullanmış olurum diye yazdım. Hangi eklentiymiş derseniz mesela PHP Counter var. İster .txt dosyasında, ister veritabanında da bilgileri tutabiliyor. Daha gelişmiş bir eklenti arayışındayım sadece. Yorumunuz için teşekkür ederim.

@qplot Google Analytics kullanmak istemiyorum hocam. Yetki verilebilir fakat sistemsel değişiklik yapıyorlar bazen yönetim panelinde çalışmaz oluyor. Daha sonra her site için tek tek düzenleme yapmam gerekiyor. Bu durumlardan uzak kalmak istiyorum. :)

262efe
791 gün önce

Sen bildiğin sistem yazılmasını istiyosun ve öyle kolay bir iş de değil kimse ücretsiz yapmaz bunu.

qplot
792 gün önce

Google Analytics ile tek hesapdan onlarca kısıye yetkı verebılırsın