Teşekkür ederim.

<?php // KOD 1
// json dosyasını oku
$json = file_get_contents("visitors.json");
// json verisini php dizisine dönüştür
$data = json_decode($json, true);
// ziyaretçiler dizisini al
$visitors = $data["visitors"];
// ziyaretçinin ip adresini al
$ip = $_SERVER["REMOTE_ADDR"];
// bugünün tarihini al
$today = date("Y-m-d");
// dünün tarihini al
$yesterday = date("Y-m-d", strtotime("-1 day"));
// ziyaretçinin dizide olup olmadığını kontrol etmek için bir bayrak
$found = false;
// ziyaretçiler dizisini döngüye sok
foreach ($visitors as $key => $visitor) {
// eğer ip adresi eşleşirse
if ($visitor["ip"] == $ip) {
// bayrağı true yap
$found = true;
// eğer tarih bugün ise
if ($visitor["date"] == $today) {
// görüntülenen sayfa sayısını artır
$visitors[$key]["views"]++;
// eğer tarih dün ise
} elseif ($visitor["date"] == $yesterday) {
// görüntülenen sayfa sayısını sıfırla ve tarihi güncelle
$visitors[$key]["views"] = 1;
$visitors[$key]["date"] = $today;
// eğer tarih daha önceki bir gün ise
} else {
// ziyaretçiyi diziden sil ve yeni bir kayıt ekle
unset($visitors[$key]);
$visitors[] = array(
"ip" => $ip,
"date" => $today,
"views" => 1
);
}
// döngüden çık
break;
}
}
// eğer ziyaretçi bulunamazsa, yeni bir kayıt ekle
if (!$found) {
$visitors[] = array(
"ip" => $ip,
"date" => $today,
"views" => 1
);
}
// ziyaretçiler dizisini json verisine dönüştür
$json = json_encode(array("visitors" => $visitors));
// json verisini dosyaya yaz
file_put_contents("visitors.json", $json);
// bugünün, dünün ve tüm zamanların ziyaretçi sayısını tutacak değişkenler
$today_visitors = 0;
$yesterday_visitors = 0;
$all_time_visitors = 0;
// ziyaretçiler dizisini döngüye sok
foreach ($visitors as $visitor) {
// eğer tarih bugün ise
if ($visitor["date"] == $today) {
// bugünün ziyaretçi sayısını artır
$today_visitors++;
// eğer tarih dün ise
} elseif ($visitor["date"] == $yesterday) {
// dünün ziyaretçi sayısını artır
$yesterday_visitors++;
}
// tüm zamanların ziyaretçi sayısını artır
$all_time_visitors++;
}
/* <div class="counter">
<p>Bugün: <?php echo $today_visitors; ?> ziyaretçi</p>
<p>Dün: <?php echo $yesterday_visitors; ?> ziyaretçi</p>
<p>Tüm zamanlar: <?php echo $all_time_visitors; ?> ziyaretçi</p>
</div>
*/
?><?php // KOD 2
// JSON dosyasının adı ve yolu
$file = "counter.json";
// JSON dosyasını oku
$data = json_decode(file_get_contents($file), true);
// Bugünün tarihini al
$today = date("Y-m-d");
// Dünün tarihini al
$yesterday = date("Y-m-d", strtotime("-1 day"));
// Ziyaretçinin IP adresini al
$ip = $_SERVER["REMOTE_ADDR"];
// Bugün için ziyaretçi sayısını artır
if (!isset($data[$today])) {
// Bugün için yeni bir kayıt oluştur
$data[$today] = array(
"count" => 1,
"ips" => array($ip)
);
} else {
// Bugün için zaten bir kayıt varsa
if (!in_array($ip, $data[$today]["ips"])) {
// Ziyaretçi sayısını ve IP listesini güncelle
$data[$today]["count"]++;
$data[$today]["ips"][] = $ip;
}
}
// Dün için ziyaretçi sayısını al
if (!isset($data[$yesterday])) {
// Dün için kayıt yoksa sıfır olarak ayarla
$yesterday_count = 0;
} else {
// Dün için kayıt varsa sayıyı al
$yesterday_count = $data[$yesterday]["count"];
}
// Tüm zamanlar için ziyaretçi sayısını al
$total_count = 0;
foreach ($data as $date => $value) {
// Tüm tarihlerdeki ziyaretçi sayılarını topla
$total_count += $value["count"];
}
// JSON dosyasını güncelle
file_put_contents($file, json_encode($data));
// Sayaç bilgilerini ekrana yazdır
/* echo "Bugün: " . $data[$today]["count"] . "<br>";
echo "Dün: " . $yesterday_count . "<br>";
echo "Toplam: " . $total_count . "<br>"; */
?>Aşağıdaki kod ise stabil çalışıyor gibi görünüyor. Bu kodu bugün ekledim. Dolayısıyla ertesi gün bugünün verisini düne aktaracak mı, göreceğiz.
<?php // KOD 3: STABİL
// ziyaretçinin IP adresini ve tarihini al
$ip = $_SERVER["REMOTE_ADDR"]; $date = date("Y-m-d");
// json dosyasına yaz
function write_json($ip, $date) {
// json dosyasını oku
$json_file = "visitors.json"; $json_data = file_get_contents ($json_file); $data = json_decode ($json_data, true);
// yeni ziyaretçi verisini oluştur
$visitor = array( "ip" => $ip, "date" => $date );
// veriyi json dosyasına ekleme öncesi kontrol et
$exists = false; // ziyaretçinin var olup olmadığını tutacak bir değişken
foreach ($data as $item) { // verileri döngüye sok
if ($item["ip"] == $ip && $item["date"] == $date) { // ip ve date değerleri eşleşiyorsa
$exists = true; // ziyaretçi zaten var
break; // döngüden çık
}
}
if (!$exists) { // ziyaretçi yoksa
$data[] = $visitor; // veriyi json dosyasına ekle
$json_data = json_encode ($data, JSON_PRETTY_PRINT); file_put_contents ($json_file, $json_data);
}
}
write_json($ip, $date);
function count_unique($period) {
// json dosyasını oku
$json_file = "visitors.json";
$json_data = file_get_contents($json_file);
$data = json_decode($json_data, true);
// tekil ziyaretçileri tutacak bir dizi oluştur
$unique = array();
// bugünün tarihini al
$today = date("Y-m-d");
// dünün tarihini al
$yesterday = date("Y-m-d", strtotime("-1 day"));
// verileri döngüye sok
foreach ($data as $visitor) { // ziyaretçinin IP adresini ve tarihini al
$ip = $visitor["ip"]; $date = $visitor["date"];
// tarih aralığına göre kontrol et
if ($period == "today" && $date == $today) {
// bugünün tekil ziyaretçilerine ekle
if (!in_array($ip, $unique)) {
$unique[] = $ip;
}
} elseif ($period == "yesterday" && $date == $yesterday) {
// dünün tekil ziyaretçilerine ekle
if (!in_array($ip, $unique)) {
$unique[] = $ip;
}
} elseif ($period == "all") {
// tüm zamanların tekil ziyaretçilerine ekle
if (!in_array($ip, $unique)) {
$unique[] = $ip;
}
}
}
// tekil ziyaretçi sayısını döndür
return count($unique);
}
// tekil ziyaretçi sayılarını hesapla
$today_unique = count_unique("today");
$yesterday_unique = count_unique("yesterday");
$all_unique = count_unique("all");
// web sayfasında göster
/* echo "<p>Bugün: <strong>$today_unique</strong> tekil ziyaretçi</p>";
echo "<p>Dün: <strong>$yesterday_unique</strong> tekil ziyaretçi</p>";
echo "<p>Tüm zamanlar: <strong>$all_unique</strong> tekil ziyaretçi</p>"; */
?>