Fotoğraflar yükleniyor

2.000
İlan No 135
İlan Tarihi 9 Haziran 2022

1,5 yildir kullanilan, sifir gibi yeni, lekesi defosu olmayan, tay tuyu gibi toz kir tutmayan kumasi olan kose koltuk takimi. Doner kose haric diger kisimlarin alti baza olarak kullanilabiliyor; sol taraf acilip yatak da olabiliyor.

Yorumlar
688 kez görüntülendi.
* * - Günlük ve toplam ziyaret sayar * - 24 saat içinde aynı ziyaretçiyi tekrar saymaz (cookie) * - Basit bot filtreleme (User-Agent kontrolü) * - Güvenli dosya yazımı için flock() kullanır */ declare(strict_types=1); // Sayaç verisinin tutulacağı dosya (web kullanıcısı yazabilir olmalı) $dataFile = __DIR__ . '/counter-data.json'; // Basit bot filtresi (User-Agent) $ua = $_SERVER['HTTP_USER_AGENT'] ?? ''; $isBot = (bool) preg_match('/bot|spider|crawl|slurp|fetch|crawler|mediapartners/i', $ua); if ($isBot) { // Botları sayma ama yine de mevcut sayıları gösterebiliriz. echo renderCounter(readCounts($dataFile)); return; } // 24 saatlik tekil ziyaret için cookie $cookieName = 'site_counter_seen'; $hasSeen = isset($_COOKIE[$cookieName]); // Sayaç verisini oku/güncelle $counts = readCounts($dataFile); if (!$hasSeen) { $counts = incrementCounts($dataFile, $counts); // 24 saat boyunca tekrar sayma setcookie($cookieName, '1', [ 'expires' => time() + 86400, 'path' => '/', 'secure' => isset($_SERVER['HTTPS']), 'httponly' => true, 'samesite' => 'Lax', ]); } // HTML çıktı (isterseniz stilini değiştirin) echo renderCounter($counts); /** ----------------- Yardımcı Fonksiyonlar ----------------- */ function readCounts(string $file): array { if (!is_file($file)) { // Varsayılan yapı return [ 'total' => 0, 'daily' => [ date('Y-m-d') => 0, ], 'updatedAt' => time(), ]; } $json = @file_get_contents($file); if ($json === false) { return ['total' => 0, 'daily' => [date('Y-m-d') => 0], 'updatedAt' => time()]; } $data = json_decode($json, true); if (!is_array($data)) { $data = ['total' => 0, 'daily' => [], 'updatedAt' => time()]; } // Bugünün anahtarı yoksa ekle $today = date('Y-m-d'); if (!isset($data['daily'][$today])) { $data['daily'][$today] = 0; } return $data; } function incrementCounts(string $file, array $counts): array { $today = date('Y-m-d'); // Dosyayı aç/kilitle $dir = dirname($file); if (!is_dir($dir)) { @mkdir($dir, 0775, true); } $fp = @fopen($file, 'c+'); if (!$fp) { // Yazamıyorsak bellekte artırıp gösterelim $counts['total']++; $counts['daily'][$today] = ($counts['daily'][$today] ?? 0) + 1; $counts['updatedAt'] = time(); return $counts; } // Özel: başka bir süreç yazarken yarış olmasın diye kilit if (flock($fp, LOCK_EX)) { // Güncel içeriği tekrar oku (bu arada değişmiş olabilir) $current = stream_get_contents($fp); if ($current !== false && $current !== '') { $data = json_decode($current, true); if (is_array($data)) { $counts = $data + $counts; // eksik anahtarları koru if (!isset($counts['daily'][date('Y-m-d')])) { $counts['daily'][date('Y-m-d')] = 0; } } } // Artır $counts['total'] = (int)($counts['total'] ?? 0) + 1; $counts['daily'][$today] = (int)($counts['daily'][$today] ?? 0) + 1; $counts['updatedAt'] = time(); // Baştan yaz ftruncate($fp, 0); rewind($fp); fwrite($fp, json_encode($counts, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); return $counts; } function renderCounter(array $counts): string { $today = date('Y-m-d'); $total = number_format((int)($counts['total'] ?? 0), 0, ',', '.'); $todayCount = number_format((int)($counts['daily'][$today] ?? 0), 0, ',', '.'); // Basit, erişilebilir bir küçük footer bloğu return << Bugün: {$todayCount} Toplam: {$total}
HTML; }