View file redirect.php

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();
?>