Michael: Mit fsockopen auf redirect prüfen

Beitrag lesen

Guten Morgen liebe selfhtml Gemeinde ;)

Ich muss ein Skript schreiben, dass Webseiten untersucht, dabei soll auch ein redirect abgefragt werden. Nach einiger Zeit des Suchens bin ich auf fsockopen gestoßen und habe mir auch eine kleine Funktion zusammengebastelt (<-- das Wort passt hier echt am besten ;) ). Nunja, das funzt aber noch nicht ganz, da ich bei manchen Domains einen Fehler bekomme, obwohl diese vorhanden ist. Auch werden manche redirects nicht erkannt.

Hier mal die Funktion:

function is_redirected($url)
{
 $url = substr($url, 7); //entfernt das http://
 //http header und quelltext der seite wird ausgelesen
 $fp = @fsockopen ($url, 80, $errno, $errstr, 5);
 if (!$fp) {
     echo "$errstr ($errno)<br />\n";
 } else {
  $request = "GET / HTTP/1.0\r\n"
    ."Host: ".$url."\r\n"
    ."User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\r\n"
    ."Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n"
    ."Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n"
    ."Referer: http://www.example.com\r\n\r\n";
     fputs ($fp, $request);
     while (!feof($fp)) {
         $result .= fgets($fp,128);
     }
     fclose($fp);
 }
 //statuscode wird ausgelesen
 $start = strpos($result, "HTTP/1.")+9; //muster + leerzeichen
 if($start === false) die("Fehler");
 else $status = substr($result, $start, 3);
 //statuscode wird analysiert
 if( (strpos($status, "301") === false) && (strpos($status, "302") === false) && (strpos($status, "303") === false))
 $redirect =  false;
 else $redirect = true;
 //redirect location auslesen
 $start = strpos($result, "Location:") +10;
 $temp = substr($result, $start, 100);
 $end = strpos($temp,"\r\n");
 $location = substr($temp,0,$end);

if(!$redirect)
 {
  return $redirect;
 }else
 {
  return $location;
 }
}//end function

Hat jemand von euch vielleicht einen Vorschlag, wie man das besser machen könnte, nachdem er sich diese "Funktion" angesehen hat? Ich arbeite noch nicht sehr lange mit PHP.

Was die Funktion können soll: Eine Url auf einen redirect prüfen. Wird bei von http://example.com auch diese Seite aufgerufen oder nicht (z.B. http://www.example.com).

Bin für Hilfe jeder Art dankbar.

Bis dann, Michi