BLOG DE DISEÑO WEB CORUÑA

Un poco de todo, recursos, tutoriales, noticias, anuncios...

Comprobar si un enlace es correcto y funciona con PHP

04/JUL/2013 16.199 visitas Ver comentarios
Comprobar si un enlace es correcto y funciona con PHP

ADVERTENCIA: Este artículo tiene más de 6 meses de antigüedad. Puede que esta información ya se encuentre obsoleta o haya nuevas y mejores opciones.

Muchas veces queremos enlazar fuentes o sitios externos desde nuestros artículos o, en otro de los casos, incluir determinada URL a modo de iframe y necesitamos comprobar que esa URL o dirección sigue estando online, es correcta y funciona actualmente.

Para eso, he desarrollado una pequeña función en PHP que lo que hace es recibir una URL y comprobar sus cabeceras, las cuales las obtendremos en un ARRAY y para lo cual debemos saber que cuando una página web está activa su cabecera será representada con un número 200.

Así como sabemos que 404 es un error NOT FOUND, que 503 es el FORBIDDEN, que 500 es un INTERNAL SERVER ERROR y todas las opciones que aparecen en esta lista y porque no todo tiene que ser un error en esta vida, el 200 es el OK, es decir, que tu enlace es válido.

Actualmente lo uso para abrir enlaces externos dentro de un contenedor en algún que otro proyecto, cuando es necesario visitar una referencia externa y no queremos que el usuario se vaya del todo de nuestra web (habrás visto, la típica cabecera que sale en las páginas de templates)...

Lo que deberemos hacer es utilizar la función get_headers de PHP 5 que hará la petición a la dirección ingresada y nos devolverá un ARRAY con sus cabeceras. Deberemos comprobar que exista un 200 dentro de esas cabeceras.

Tener en cuenta que si el dominio existe pero la url no es correcta por el motivo que sea, habrá una devolución de cabeceras, cuestión por la que es importante comprobar que exista un 200 dentro de esas cabeceras. Si el dominio no existe, no habrá cabeceras devueltas.

Código 1 - PHP
function url_exists($url)
{
$file_headers = @get_headers($url);
if(strpos($file_headers[0],"200 OK")==false)
{
$exists = false;
echo "<h2>".$_GET["url"]." no existe o dio error al solicitar.</h2>";
}
else
{
echo "<h2>".$_GET["url"]." existe y sus cabeceras son:</h2><pre>";print_r($file_headers);echo "</pre>";
$exists = true;
}
return $exists;
}
if (isset($_GET["url"])) echo url_exists($_GET["url"]);

Acerca del Autor...

Macadia, es una agencia de Diseño Web Coruña, especializada en maquetación css y desarrollo de páginas web a medida con más de 21 años de experiencia en el desarrollo de páginas web profesionales. Si te ha gustado este artículo, por favor, ayúdanos a difundirlo compartiéndolo con tus amigos y contactos en las distintas redes sociales que utilices. ¡Muchas gracias!

Los comentarios han sido desactivados momentaneamente a la espera de que Disqus adapte su plataforma a la próxima RGPD que entra en vigor desde el 25/05/2018