File size: 1.96Kb
<?php
include "connection/connection.php";
// Verifica si se ha pasado un short_id
if (isset($_GET['id'])) {
$short_id = $_GET['id'];
// Prepara la consulta para obtener la URL original
$stmt = $conn->prepare("SELECT original_url FROM urls WHERE short_id = ?");
$stmt->bind_param("s", $short_id);
$stmt->execute();
$stmt->store_result();
// Si se encuentra la URL original, registrar visita y redirigir
if ($stmt->num_rows > 0) {
$stmt->bind_result($original_url);
$stmt->fetch();
// Capturar información de la visita
$ip_address = $_SERVER['REMOTE_ADDR'];
$visit_time = date("Y-m-d H:i:s");
$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
$user_agent = $_SERVER['HTTP_USER_AGENT'];
// Obtener país usando ipinfo.io (API de geolocalización)
$country = null;
if ($ip_address !== '127.0.0.1') { // Evitar localhost
$geo_data = @file_get_contents("https://ipinfo.io/{$ip_address}/json");
if ($geo_data) {
$geo_data = json_decode($geo_data, true);
$country = isset($geo_data['country']) ? $geo_data['country'] : null;
}
} else {
$country = "Localhost"; // Para pruebas locales
}
// Registrar la visita en la tabla visits
$visit_stmt = $conn->prepare("INSERT INTO visits (short_id, visit_time, ip_address, country, referrer, user_agent) VALUES (?, ?, ?, ?, ?, ?)");
$visit_stmt->bind_param("ssssss", $short_id, $visit_time, $ip_address, $country, $referrer, $user_agent);
$visit_stmt->execute();
$visit_stmt->close();
// Redirigir al URL original
header("Location: $original_url");
exit();
} else {
echo "URL no encontrada";
}
$stmt->close();
} else {
echo "No se proporcionó un ID válido.";
}
$conn->close();
?>