/var/www/coeditor.org/site/t1.mysite.com
NameSizeModeActions
assets/-0755rm
favicon.ico6360644editdlrm
favicon.svg2440644editdlrm
index.html26810644editdlrm
index.php15850644editdlrm
robots.txt680644editdlrm
sitemap.xml1540644editdlrm
t.php47180644editdlrm
Edit: /var/www/coeditor.org/site/t1.mysite.com/t.php (4718B)
$max_len) $str = substr($str, 0, $max_len); return $str; } // ── Visitor cookie ────────────────────────────────────────────── $vid = $_COOKIE['_vid'] ?? ''; if (!preg_match('/^[a-f0-9]{32}$/', $vid)) { $vid = bin2hex(random_bytes(16)); setcookie('_vid', $vid, [ 'expires' => time() + 365 * 86400, 'path' => '/', 'secure' => true, 'httponly' => true, 'samesite' => 'Lax' ]); } $page_path = safe_str($_GET['p'] ?? '/', 500); $referrer = safe_str($_GET['r'] ?? ($_SERVER['HTTP_REFERER'] ?? ''), 1000); $ip = safe_str($_SERVER['REMOTE_ADDR'] ?? '', 45); $ua = safe_str($_SERVER['HTTP_USER_AGENT'] ?? '', 500); // ── Filter bots ───────────────────────────────────────────────── $bot_patterns = '/bot|crawl|spider|slurp|bingpreview|mediapartners|facebookexternalhit|Googlebot/i'; if (preg_match($bot_patterns, $ua)) { send_pixel(); } // ── Simple rate limiting (1 write per IP per 2 seconds) ───────── $rate_key = '/tmp/lgtrack_' . md5($ip . $domain); if (file_exists($rate_key) && (time() - filemtime($rate_key)) < 2) { send_pixel(); } @touch($rate_key); // ── Record page view ──────────────────────────────────────────── try { if (!class_exists("SQLite3")) { tracker_log("FATAL: SQLite3 PHP extension not loaded"); send_pixel(); } if (!file_exists($db_path)) { tracker_log("WARN: DB file not found: " . $db_path); } $db = new SQLite3($db_path); $db->busyTimeout(5000); $db->exec('PRAGMA journal_mode=WAL'); $db->exec('CREATE TABLE IF NOT EXISTS page_views ( id INTEGER PRIMARY KEY AUTOINCREMENT, domain TEXT NOT NULL, path TEXT NOT NULL, ip TEXT, user_agent TEXT, referrer TEXT, visitor_id TEXT, created_at DATETIME DEFAULT (datetime(\'now\')) )'); $db->exec('CREATE INDEX IF NOT EXISTS idx_pv_domain_date ON page_views(domain, created_at)'); $db->exec('CREATE INDEX IF NOT EXISTS idx_pv_visitor ON page_views(domain, visitor_id)'); $stmt = $db->prepare('INSERT INTO page_views (domain, path, ip, user_agent, referrer, visitor_id) VALUES (:d, :p, :ip, :ua, :r, :vid)'); if (!$stmt) { tracker_log("ERROR: prepare failed: " . $db->lastErrorMsg()); $db->close(); send_pixel(); } $stmt->bindValue(':d', $domain, SQLITE3_TEXT); $stmt->bindValue(':p', $page_path, SQLITE3_TEXT); $stmt->bindValue(':ip', $ip, SQLITE3_TEXT); $stmt->bindValue(':ua', $ua, SQLITE3_TEXT); $stmt->bindValue(':r', $referrer, SQLITE3_TEXT); $stmt->bindValue(':vid', $vid, SQLITE3_TEXT); $result = $stmt->execute(); if (!$result) { tracker_log("ERROR: execute failed: " . $db->lastErrorMsg()); } $db->close(); } catch (Exception $e) { tracker_log("EXCEPTION: " . $e->getMessage()); } send_pixel();