DESARROLLA TU ACORTADOR DE URLs

JUE, 20 / AGO / 2026

Acortar una dirección web parece trivial, pero detrás hay un mecanismo simple que se arma con herramientas conocidas. Este Informe USERS reconstruye un servicio de enlaces cortos en PHP y MySQL, desde el diseño de la base de datos hasta la publicación en un servidor real, con la seguridad como hilo conductor.

Autor: Elisa Belmar

Una arquitectura de piezas separadas

El sistema se apoya en una división clara de tareas. Un archivo de configuración concentra los parámetros ajustables y una clase de conexión con PDO (los objetos de datos de PHP) abre la base una sola vez.

A partir de ahí, tres módulos independientes se ocupan de crear los enlaces, resolverlos y administrarlos desde un panel. Ese orden tiene una ventaja práctica: al pasar el proyecto a un servidor real, alcanza con editar la configuración sin tocar el resto del código.

La base guarda dos tablas. Una registra cada enlace con su código único, la dirección de destino y el contador de clics; la otra, las credenciales del panel. El código único evita colisiones y el campo activo habilita la baja lógica, es decir, desactivar un enlace sin borrarlo.

Con PDO, la clase adopta consultas preparadas, que separan las instrucciones SQL de los datos que ingresa el usuario. Es la principal defensa contra la inyección SQL, y usarla desde el primer archivo hace que toda la aplicación herede esa protección.

Los códigos salen de un alfabeto base62, que combina dígitos, mayúsculas y minúsculas. Con seis posiciones alcanzan más de cincuenta mil millones de combinaciones, margen de sobra para que el código nunca necesite crecer.

Un solo archivo de configuración y una clase de conexión alimentan a los tres módulos: ninguno abre la base por su cuenta, de modo que la seguridad se define en un único lugar.

Del formulario a la redirección

El módulo público vive en index.php, que muestra el formulario y procesa el envío. Pide la dirección a acortar y, de forma opcional, un código propio.

Antes de guardar, validarUrl comprueba que el texto tenga forma de dirección y que el esquema sea http o https. Ese control importa: bloquear esquemas como javascript: impide que la redirección ejecute código en el navegador.

Si el usuario no propone un código, el sistema arma uno al azar con random_int y confirma contra la base que no esté tomado, para no violar nunca la restricción de unicidad.

La resolución es el corazón del servicio. Como el enlace tiene que ser corto de verdad, entra en juego mod_rewrite, el módulo de Apache que reescribe direcciones. Un archivo .htaccess intercepta la visita y la deriva al resolvedor sin que el visitante lo note.

Ese script busca el código y, si el enlace existe y está activo, redirige al destino. La diferencia entre un redireccionamiento permanente (301) y uno temporal (302) no es solo técnica: el 301 traslada la reputación del enlace al destino final, mientras que el 302 conserva la medición de clics del lado del acortador.

Antes de redirigir, una instrucción UPDATE suma un clic al contador. Al operar sobre la base, el recuento queda exacto y del lado del servidor. Si el código no existe o fue desactivado, el visitante recibe una página de aviso con código 404.

Toda la resolución ocurre del lado del servidor: el visitante solo ve la dirección corta y, un instante después, el destino final.

Panel protegido y salto a producción

El área de administración queda detrás de un inicio de sesión basado en sesiones de PHP. La contraseña nunca se guarda en texto plano: se almacena como hash con password_hash y se contrasta con password_verify.

El primer administrador se crea una sola vez con un script que después se borra del servidor, un descuido clásico que conviene no dejar pasar. Ya dentro, el panel lista los enlaces del más reciente al más antiguo y ofrece un buscador que filtra con consultas preparadas.

Desde ahí se edita el destino sin cambiar el código, así que los enlaces ya repartidos siguen funcionando. La baja lógica reemplaza al borrado: un enlace desactivado permanece en la base y deja de redirigir, pero puede restituirse más tarde sin perder su recuento.

El paso a producción mueve archivos y base a un servidor real. La lógica no cambia: solo se ajustan la configuración y el .htaccess, con el RewriteBase como causa habitual de fallas si la reescritura deja de responder.

Un criterio de seguridad ordena el resto: el principio de mínimo privilegio. En el servidor no se usa el usuario root de MySQL, sino uno limitado a su base, de modo que un descuido se vuelve un incidente acotado y no una filtración total. A eso se suman servir todo el sitio bajo https, bloquear el acceso directo a la configuración y sostener respaldos periódicos de la base, donde en verdad reside el valor del servicio.

La misma tabla funciona como tablero: la columna de clics muestra de un vistazo qué enlaces se usan y cuáles quedaron sin tráfico.

Encuentra la versión completa de la publicación en la que se basa este resumen, con todos los detalles técnicos en RedUSERS PREMIUM

También te puede interesar:

HERMES AGENT POTENCIA TU IA

La mayoría de los asistentes de IA arranca cada sesión desde cero: no recuerda quiénes somos ni en qué trabajamos. Hermes Agent, de Nous Research, propone una memoria persistente que retiene contexto, aprende procedimientos y actúa con herramientas reales. Este Informe USERS explica cómo funciona y qué ofrece.


Lee todo lo que quieras, donde vayas, contenidos exclusivos por una mínima cuota mensual. Solo en RedUSERS PREMIUM: SUSCRIBETE!


Comentarios
¡Comparte esta noticia!
TAGS ,

Leave a Reply