Ver Mensaje Individual
  #12 (permalink)  
Antiguo 22/10/2003, 14:23
Jordi1
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
tal como lo haces siempre te respondera , pues el servidor siempre responde a menos que no se abra el socket,

La logica del script es la siguiente:

envia una pregunta al servidor, sobre un archivo.

el servidor le responde con una serie de codigos , las cabeceras
estas cabeceras se analizan con los eregis y se guardan en el arrray $contesta, luego tu tienes de sacar estas respuestas y procesarlas con mas codigo por ejemplo con if()

por eso te mostraba el ejemplo

te dejo todo otra vez a ve si no se fastidia con el foro


<?

function parametros($entrada)
{
$ArrayUrl = parse_url($entrada);
$port=$ArrayUrl['port'];
$host=$ArrayUrl['host'];
$path=$ArrayUrl['path'];
if (!$port) $port = "80";
if ($port != "80") $port = $port;

$return['port']=$port;
$return['host']=$host;
$return['path']=$path;

return $return;
}
function ValidarVinculos($vinculo)
{

$request="";
$urlArray= parametros($vinculo);
$sock = @fsockopen($urlArray['host'], $urlArray['port']);
if (!$sock) $contesta['code'] = "No responde";
else {
$request .= "HEAD $urlArray[path] HTTP/1.1\r\n";
$request .= "User-Agent: Valid link (http://centropromoweb.com)\r\n";
$request .= "Host: $urlArray[host]\r\nConnection: close\r\n";
$request .= "Connection: close\r\n\r\n";
fputs($sock, $request);
while($str = fgets($sock, 128)) {

if (eregi("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*", $str)) $contesta['code'] = trim(eregi_replace("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*", "\\1", $str));


if (eregi("^Content-Type: ", $str)) $contesta['contentType'] = trim(eregi_replace("^Content-Type: ", "", $str));
if (eregi("text/html", $str)) $contesta['contentType'] = "text/html";

if (eregi("^Content-Length: ", $str)) $contesta['peso'] = trim(eregi_replace("^Content-Length: ", "", $str));
$contesta[]=$str;

}
}
return $contesta;
}

$vinculo="http://centropromoweb.com/index.php";

$var=ValidarVinculos($vinculo);

if($var['code'] != 200) echo "<li> este ".$vinculo." arroja el siguiente codigo de problema ".$var['code'] ;

else echo "este vinculo es correcto ".$vinculo;


echo "<pre>";
print_r($var);
echo "</pre>";

?>


si lo ejecutas tal cual , veras las cabeceras que manda el servidor

en el caso de que el archivo no este , pues te manda un 404 not found

prueba a ver,