Carsten: Abfrage, ob URL existiert

Beitrag lesen

Hallo Jan,

erster Fehler:

»»   if($fp=fopen("http://www.domain.de/seite.htm,"w"))

r    !!

das loesst aber nciht das Problem eines 404 oder aehnlichen Fehlers, da in
dem Fall auch eine HTML seite gesendet wird.

klar, nicht dran gedacht... also zu Fuss Header holen:

function head($host,$loc)
{
  $fp = fsockopen($host, 80, &$errno, &$errstr, 15);

if($fp)
  {
    fputs($fp,"HEAD $loc HTTP/1.0\r\n");
    fputs($fp,"Host: $host\r\n");
    fputs($fp,"\r\n");

while(!feof($fp))
    {
      $c=fgets($fp,128);

if(strpos("~".$c,"HTTP")==1)
        $status=0+substr($c,strpos($c," ")+1,3);
    }
    fclose($fp);

if($status!=200)
      echo " Error! Status:$status Errno:$errno Errstr:$errstr\n";
    
    return $status;  // 200 =OK;  404 =not Found etc.
  }
  else
  {
    echo "No Connection to Host $host\n";
    return 0;
  }
}

geht bestimmt auch eleganter, ich hab das ausm Programm von mir rauskopiert
und zusammengestrichen. (_so_ ungetestet, handelt keine redirects ...)

Gruss,
Carsten