Auto commit: 2026-02-14T16:01:32.751Z

This commit is contained in:
Flatlogic Bot 2026-02-14 16:01:32 +00:00
parent ad42fdfb6f
commit 3cfa9f0a7e
3 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,10 @@
CREATE TABLE IF NOT EXISTS visitor_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
ip_address VARCHAR(45) NOT NULL,
country VARCHAR(100) DEFAULT 'Unknown',
country_code CHAR(2) DEFAULT '??',
last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
session_id VARCHAR(255) NOT NULL,
INDEX (last_activity),
INDEX (ip_address)
);

49
includes/tracker.php Normal file
View File

@ -0,0 +1,49 @@
<?php
require_once __DIR__ . '/../db/config.php';
function track_visitor() {
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
$ip = $_SERVER['REMOTE_ADDR'];
$session_id = session_id();
$db = db();
// Check if we already have this session tracked today
$stmt = $db->prepare("SELECT id FROM visitor_logs WHERE session_id = ? LIMIT 1");
$stmt->execute([$session_id]);
$visitor = $stmt->fetch();
if ($visitor) {
// Update activity
$stmt = $db->prepare("UPDATE visitor_logs SET last_activity = CURRENT_TIMESTAMP WHERE id = ?");
$stmt->execute([$visitor['id']]);
} else {
// New session, get GeoIP
$country = 'Unknown';
$country_code = '??';
$lat = 0;
$lon = 0;
// Simple GeoIP via API (Note: This might slow down the first request, but we only do it once per session)
try {
$ctx = stream_context_create(['http' => ['timeout' => 2]]);
$geo = file_get_contents("http://ip-api.com/json/$ip", false, $ctx);
if ($geo) {
$data = json_decode($geo, true);
if ($data && $data['status'] === 'success') {
$country = $data['country'];
$country_code = $data['countryCode'];
$lat = $data['lat'] ?? 0;
$lon = $data['lon'] ?? 0;
}
}
} catch (Exception $e) {
// Silently fail if API is down
}
$stmt = $db->prepare("INSERT INTO visitor_logs (ip_address, country, country_code, lat, lon, session_id) VALUES (?, ?, ?, ?, ?, ?)");
$stmt->execute([$ip, $country, $country_code, $lat, $lon, $session_id]);
}
}

View File

@ -1,6 +1,9 @@
<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/tracker.php';
track_visitor();
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Lili Records Radio - La mejor música en vivo.';
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? 'assets/images/featured.jpg';