Las redirecciones PHP son herramientas incre铆blemente 煤tiles, pero tambi茅n pueden ser peligrosas si no se implementan correctamente.

Si ya ha seguido nuestra introducci贸n a PHP 7.4y nuestra gu铆a sobre c贸mo crear un sitio web paso a paso, ya sabes que la funci贸n encabezado () se puede usar para redirigir f谩cilmente a un usuario de una p谩gina a otra. De hecho, sin embargo, usar esta funci贸n no es tan simple como parece. En esta gu铆a, le mostraremos c贸mo hacer una redirecci贸n PHP que no causar谩 ning煤n problema en el futuro.

El m茅todo b谩sico para un redireccionamiento PHP

La mayor铆a de las gu铆as le dir谩n que, para hacer una redirecci贸n PHP, simplemente puede usar la funci贸n encabezado () en la parte superior de tus p谩ginas. Para hacer esto, usa la funci贸n para enviar una nueva URL, como esta:

header('Location: '.$newURL.php);

Esta funci贸n de encabezado debe colocarse antes de pasar cualquier HTML o texto a los navegadores de los usuarios, por lo que debe estar en la parte superior de la p谩gina. Eso significa que debe venir antes de la declaraci贸n , antes de cualquier c贸digo Java y PHP. Luego env铆a a los usuarios a la nueva URL.

Aunque pueda parecer simple, cuando se trata de la funci贸n encabezado (), la simplicidad del c贸digo puede causar una falsa sensaci贸n de seguridad. Entonces, veamos c贸mo puede usar esta funci贸n correctamente.

Die () y Exit ()

Primero, debes usar los modificadores morir () o salida () cada vez que usa una redirecci贸n. En resumen, el problema es que los rastreadores y los robots pueden ignorar los encabezados, por lo que la p谩gina que estaba redirigiendo es totalmente accesible para ellos. Si, en otras palabras, est谩 utilizando una redirecci贸n de encabezado para proteger una p谩gina en particular, no ofrece ninguna protecci贸n.

Es por eso que debe desactivar la redirecci贸n si se ignora. La forma de hacerlo es adjuntar morir () o salida () despu茅s de su redirecci贸n:

header("Location: .$newURL.php");

die();

URLs relativas y absolutas

A continuaci贸n, hablemos de las URL relativas y absolutas en los redireccionamientos. RFC 7231 le permite usar ambos, pero debe tener mucho cuidado al usar redireccionamientos relativos. Esto se debe a que algunos creadores de sitios web recopilan y renombran p谩ginas PHP. Esto significa que si est谩 trabajando en su PHP a trav茅s de un creador de sitios web, puede terminar rompiendo todos sus redireccionamientos

Desafortunadamente, en este momento no hay una forma real de solucionar este problema, aparte de tener cuidado sobre d贸nde apuntan los redireccionamientos.

C贸digos Statis

El tercer problema con las redirecciones PHP est谩ndar es que el operador “local” de PHP a煤n devuelve el c贸digo HTTP 302 . No debe aceptar esto, porque muchos navegadores web implementan este c贸digo de una manera totalmente opuesta a c贸mo deber铆a funcionar: esencialmente usan el comando GET en lugar de realizar una redirecci贸n “real”.

La mejor pr谩ctica al crear redirecciones PHP es, por lo tanto, especificar el c贸digo que se devuelve. Desafortunadamente, el c贸digo correcto para usar es un punto de discusi贸n. HTTP 301 indica una redirecci贸n permanente, que puede causar problemas al restaurar su p谩gina original. Desafortunadamente, HTTP 303 es percibido como “otro” por muchos navegadores y puede causar problemas con la indexaci贸n de su p谩gina por parte de los motores de b煤squeda.

En la pr谩ctica, y hasta que todo se resuelva, use HTTP 303.

Revise la documentaci贸n

Adem谩s de tomar las precauciones b谩sicas anteriores, t贸mese el tiempo de leer la documentaci贸n sobre el uso de redireccionamientos de PHP antes de publicarlos. Deber铆as consultar el manual de PHP para asegurarse de que comprende lo que est谩 haciendo, adem谩s de verificar la documentaci贸n del W3C para asegurarte de que est谩s siguiendo las mejores pr谩cticas.

Y mientras lee, recuerde proteger su sitio de vulnerabilidades comunes tambi茅n: si ya est谩 en el proceso de tener que usar redireccionamientos PHP, es probable que la seguridad del sitio necesite una auditor铆a.

Otros metodos

Teniendo en cuenta todos estos problemas, probablemente se est茅 preguntando por qu茅 usar铆a una redirecci贸n PHP. Esa es una gran pregunta. Aunque los redireccionamientos de PHP generalmente se realizan m谩s r谩pidamente que otros tipos de redireccionamientos y, por lo tanto, pueden ser una herramienta importante para mejorar la velocidad del sitio web, existen otras opciones disponibles.

Hay dos enfoques principales para hacer esto. Puedes usar el elemento HTML <objetivo> para redirigir desde la parte HTML de su p谩gina o usar JavaScript. El primer enfoque: usar <objetivo> se ver铆a as铆:

El segundo enfoque, usar JavaScript, es un poco m谩s elegante y ciertamente se ve m谩s profesional:

window.location.replace("http://newpage.php/");

Ambos enfoques se ejecutar谩n un poco m谩s lentamente que la redirecci贸n inmediata del encabezamiento(), pero sin duda son m谩s flexibles.

Palabra final

Si bien seguir los pasos anteriores significa que las redirecciones de PHP se ejecutan de forma segura, si est谩 en condiciones de utilizar varias redirecciones de PHP, probablemente sea hora de repensar la estructura de su sitio web.

Hay algunas buenas razones para hacerlo. La primera es que no todos los servidores web se crean de la misma manera y, si env铆a a todos los visitantes en una ruta tortuosa a trav茅s del sitio, afectar谩 el rendimiento. Esto puede mejorarse hasta cierto punto, utilizando un proveedor de alojamiento asequible, pero solo hasta cierto punto.

La segunda raz贸n es que la p谩gina desde la que est谩 redirigiendo puede estar recopilando datos sobre sus visitantes sin que usted lo sepa, especialmente si est谩 utilizando un software de an谩lisis web para rastrear el rendimiento de su sitio web. En nuestro mundo post-LGPD, esto puede tener consecuencias significativas.

Entonces, en resumen: tenga cuidado con los redireccionamientos de PHP, 煤selo correctamente y 煤selo solo donde y cuando sea absolutamente necesario.