Foros del Web » Programando para Internet » PHP »

links rotos

Estas en el tema de links rotos en el foro de PHP en Foros del Web. habra la forma de detectar links rotos con una sentencia IF ???? <html><center><iframe src="http://www.ladodos.com/firma/firma.php" width=500 height=150></iframe></center></html>...
  #1 (permalink)  
Antiguo 24/03/2002, 19:35
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
links rotos

habra la forma de detectar links rotos con una sentencia IF ????

<html><center><iframe src="http://www.ladodos.com/firma/firma.php" width=500 height=150></iframe></center></html>
  #2 (permalink)  
Antiguo 25/03/2002, 15:55
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
Re: links rotos

nadie sabe???

<html><center><iframe src="http://www.ladodos.com/firma/firma.php" width=500 height=150></iframe></center></html>
  #3 (permalink)  
Antiguo 25/03/2002, 18:24
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 16 años, 2 meses
Puntos: 6
Re: links rotos

Bueno una forma de hacerlo es usando la funcion fopen o fsockopen. aqui te agreago un ejemplo usando la primera forma:
Código:
&lt;?
if(empty($pagina)){
  echo &quot;Introdusca una direccion en la forma http://dominio/&lt;br&gt;\n&quot;; 
  echo &quot;Note el \&quot;/\&quot; de finalizacion del url&lt;br&gt;\n&quot;;
  echo &quot;Ejemplos validos: http://www.php.net/,http://www.php.net/manual&lt;br&gt;\n&quot;;
  echo &quot; &lt;form action=\&quot;$PHP_SELF\&quot; method=\&quot;post\&quot;&gt; 
         &lt;input type=\&quot;text\&quot; name=\&quot;pagina\&quot; value=\&quot;http://\&quot;&gt;
         &lt;input type=\&quot;submit\&quot; name=\&quot;validar\&quot; value=\&quot;validar\&quot;&gt;
         &lt;/form&gt;&quot;;
}

function validarURL($campo){
   //cotejamos el dominio a verificar
   $patron =&quot;/^http:\/\/([\d\w-\.]+)\/.*$/&quot;;
   
   if(preg_match($patron,$campo,$url)){
      //verificamos que el domino exista
      if(checkdnsrr($url[1],&quot;A&quot;) ||
         checkdnsrr($url[1],&quot;CNAME&quot;)){
           /*verificamos que el recurso
           este disponible*/
           if($fp = @fopen($campo,&quot;r&quot;)){
             while (!feof ($fp)) {

                    $buffer = fgets($fp,4096);
                    if(preg_match(&quot;/404/&quot;,$buffer)){
                    
                       echo &quot;$campo no esta disponible\n&quot;;
                       exit(); 
                    }
                       
                }

                fclose ($fp);
  
             echo &quot;&lt;a href=\&quot;$campo\&quot;&gt;$campo&lt;/a&gt;&lt;br&gt;\n&quot;;

           }else{ echo &quot;$campo no esta disponible&lt;br&gt;\n&quot;;}

      }else{ echo &quot;El dominio $url[1] no existe&quot;;}

   }else{ echo &quot;Verifique si su entrada es correcta&quot;;}

 }

 validarURL($pagina);

?&gt;
Toma como base este ejemplo ya que la consulta que hace es buscando el error 404, pero puede haber condiones en lsa que no se cumpla esa regla asi que puedes mejorarlo de acuerdo a tus necesidades.

Saludos.
  #4 (permalink)  
Antiguo 25/03/2002, 20:27
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
Re: links rotos

intente probarlo localmente y me dio este error:

Warning: checkdnsrr() is not supported in this PHP build in c:\htdocs\public_html\links.php on line 18

Warning: checkdnsrr() is not supported in this PHP build in c:\htdocs\public_html\links.php on line 19
El dominio www.forosdelweb.com no existe

donde 18 y 19 es:

18 if(checkdnsrr($url[1],&quot;A&quot;) ||
19 checkdnsrr($url[1],&quot;CNAME&quot;)){

alguna otra idea??

<html><center><iframe src="http://www.ladodos.com/firma/firma.php" width=500 height=150></iframe></center></html>
  #5 (permalink)  
Antiguo 26/03/2002, 01:31
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 16 años, 2 meses
Puntos: 6
Re: links rotos

Bueno resulta que las funcion checkdnsrr no esta implementada en la plataforma de windows necesitaras probarla en el servidor en el que estas hospedando tu pagina.

Saludos.
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 16:47.