Foros del Web » Programando para Internet » PHP »

Enlaces rotos - hay forma de identificarlos?

Estas en el tema de Enlaces rotos - hay forma de identificarlos? en el foro de PHP en Foros del Web. tengo enlaces a distintos web, hay alguna forma de verificar si está roto al momento de cargar la página que los llama?...
  #1 (permalink)  
Antiguo 13/01/2004, 08:09
Avatar de acervantes  
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 311
Antigüedad: 20 años, 8 meses
Puntos: 1
Pregunta Enlaces rotos - hay forma de identificarlos?

tengo enlaces a distintos web, hay alguna forma de verificar si está roto al momento de cargar la página que los llama?
__________________
ACervantes

[El éxito dura hasta que alguien las caga; los errores son eternos]
  #2 (permalink)  
Antiguo 13/01/2004, 09:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, .. tendrías que hacerte un "lanzador" de esos links que pase por PHP para que este intente hacer la conexión antes de redireccionarte si el link está activo.

Ese proceso de "conexión" .. y espera del mensaje de error puede tardar un tiempo (que hay que considerarlo).

Por ejemplo .. intentado abrir una página tipo:

lanza_url.php
Código PHP:
<?

$pagina
=@fopen($_GET['url'],"r");

if (
$pagina){
   
//si se pudo abrir  la cerramos (el link creado) y redireccionamos a ella.
   
fclose($pagina);
   
header("location: $pagina");
   exit;
} else {
   echo 
"no se pudo conectar";
}
Su uso ..
Código PHP:
<a href="lanza_url.php?url=http://www.nose.com">http://www.nose.com</a> 
Así .. o con una llamada a una imagen/página concreta .. pero siempre pasando por el "lanza_url" que será quien determine si está disponible o no ese URL en ese instante.

En fase de pruebas tendrías que quitar el @ delante de la función fopen() .. Si puede conectar .. se redireccionará si no puede conectar te saldrá un aviso de PHP que no encuentra la página y el mensaje nuestro .. por eso, se usa la @ para desactivar esos mensajes de PHP para esa función concreta (es una forma "bruta" de hacerlo .. pero funciona).

El uso de fopen() en modo "externo" (llamadas a páginas http:// etc..) depende del estado de la directiva: allow_url (o similar no recuerdo exactamente). Si no la tienes activada, provocará un error sobre ese tema "no puedo abrir wrapers externos .. o algo así dice". (pero sólo los veras si le quitas la @ .. así que mejor prueba sin la @ primero y si funciona OK, se la pones).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 13/01/2004 a las 09:09
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:19.