Crear un acortador de enlaces usado backend PHP

Tiempo de lectura: < 1 minuto

Hoy vamos a aprender cómo podemos crear un acortador de enlaces para nuestro back con un simple script PHP.

Ciudad impresionante - pexels

Vamos a crear nuestro acortador, podemos llamarlo link.php

<?php
// Cabecera
header("Access-Control-Allow-Origin: *");
date_default_timezone_set("Europe/Madrid");

//Anti Bots
if (preg_match('/bot|crawl|spider|preview/i', $userAgent)) {
    // No registrar bots
    header("Location: $target", true, 302);
    exit;
}

// Recoger slug
$slug = $_GET['slug'] ?? null;
$url= $_GET['url'] ?? null;

$links = [
    'custom_link_1' => 'https://www.google.es',
    'custom_link_2' => 'https://www.yahoo.com',
    'url' => urldecode($url)
];

if (!$slug || !isset($links[$slug])) {
    http_response_code(404);
    echo "Enlace no encontrado";
    exit;
}

$target = $links[$slug];

// Datos básicos del clic
$referer = $_SERVER['HTTP_REFERER'] ?? 'Directo';
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? 'Desconocido';
$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
$timestamp = date('Y-m-d H:i:s');

// Registrar clic (modo simple: archivo log)
$log = sprintf("[%s] %s | %s | %s | %s\n", $timestamp, $slug, $ip, $referer, $userAgent);
file_put_contents('clicks.log', $log, FILE_APPEND);

// Redirigir al destino
header("Location: $target", true, 302);
exit;

Con esto lo que haremos es lo siguiente:

  • Podemos crear links acortados (custom_link_1, custom_link_2).
  • Podemos filtrar los links que van dentro de url.
  • Guardar en logs los accesos al link.
  • Filtrar si le pulsan bots.

Para utilizarlo:

https://tudominio.com/link?tag=custom_link_1
https://tudominio.com/link?tag=url&url=https://custom_url.com

Deja un comentario