Hallo,
ich suche nach einer Möglichkeit, eine URL auf Vorhandensein zu überprüfen. D.h. ich möchte überprüfen ob ein eigentragener URL auch existiert und ob die Seite auch funktioniert. Wenn die Seite nicht existiert z.Bsp. http://www.dkffljndljjnss.de oder so, soll das angezeigt werden. Es geht auch darum ob bei der Überprüfung ein Fehlerseite angezeigt wird.
Ich habe es schon mit:
strlen( file( $url ) )
versucht, doch das funktioniert nicht korrekt. Wäre super wen jemand Rat wüsste. Ich komm nicht mehr weiter.
Danke
-Michael
Das Problem ist sehr viel schwieriger, als es auf den ersten Blick aussieht, wenn die zu prüfende url auf einem fremden server/domain liegt…
Vielleicht hilft dir das weiter:
http://selfforum.teamone.de/archiv/2000/9/21529/
… ist das beste, was ich zu dem Thema finden konnte. Hab im Moment ein ähnliches Problem.
Wär natürlich Klasse, wenn jemadn 'ne einfachere Lösung findet und die hier bekannt gibt… 
Das Problem ist sehr viel schwieriger, als es auf den ersten
Blick aussieht, wenn die zu prüfende url auf einem fremden
server/domain liegt…
Vielleicht hilft dir das weiter:
http://selfforum.teamone.de/archiv/2000/9/21529/
… ist das beste, was ich zu dem Thema finden konnte. Hab im
Moment ein ähnliches Problem.
Leider ist der Link Tod. Bzw. der ganze Server, sieh selbst nach
aber Danke für Deine Mühe.
Wär natürlich Klasse, wenn jemadn 'ne einfachere Lösung findet
und die hier bekannt gibt… 
bei mir gehts
und das relevante darin ist folgendes:
(PHP) Datei prüfen
Die folgende Nachricht zum Thema stammt von: Carsten, 23. September 2000, 22:45 Uhr
Hallo,
»» ../../sfarchiv/2000\_3/t20758.htm#a105664
Das war etwas umständlich in der Handhabung und nicht ganz fehlerfrei.
Da die Funktion ab und an mal benötigt wird gibt es inziwschen eine
getestete Version davon:
/\*
Liefert den HTTP-Status zu einer URL zurueck.
Handhabt Redirects.
Parameter:
$location URL, z.b. "http://www.teamone.de/"
keine Pruefung auf korrektes Format
Rueckgabe:
int status 200=OK 404=nicht gefunden usw. (s. RFC2616)
\*/
function head($location)
{
$verbose=1; // 1 Header im Dokument ausgeben (Debug)
// 0 nur Status zurückliefern (normal)
$location=trim(preg\_replace("/^http:\/\//i","",$location));
$c=strpos($location,"/");
if(!$c)
{
$host=$location;
$pfad="/";
}
else
{
$host = substr($location,0,$c);
$pfad = substr($location,$c);
}
if($verbose)
echo "Location: $location
\n host: $host
\n pfad: $pfad
\n**";
$fp = fsockopen($host, 80, &$errno, &$errstr, 5);
// ^^ Portnr. ^ - Timeout in Sekunden
if($fp)
{
fputs($fp,"HEAD $pfad HTTP/1.0\r\n");
fputs($fp,"Host: $host\r\n");
fputs($fp,"User-Agent: PHP/StatusCheck V0.2\r\n");
fputs($fp,"\r\n"); // Request Header Ende
while(!feof($fp)) // Antwort lesen
{
$c=fgets($fp,133);
if(strlen($c)==2)
break; // Leerzeile erkannt == Header Ende
if($verbose) echo htmlentities($c)."
\n";
if(preg\_match("/^HTTP.\*? ([0-9]{3})/i",$c,$match))
$status=0+$match[1];
if(preg\_match("/^Location: (.\*)$/i",$c,$match))
$newLocation=$match[1];
}
if($verbose) echo "**
=\>Status: $status
\n
\n";
if(($status==302 $status==301) && $newLocation)
return(head($newLocation));
else
return ($status);
fclose($fp);
}
else
{
if($verbose)
{
echo "Verbindungsaufbau zum Server fehlgeschlagen.";
echo "Errno:blush:errno Errstr:blush:errstr
\n\n";
}
return 0;
}
}
/\*\*\*\*\*\*\*\*\* Testgelände \*\*\*\*\*\*\*\*\*\*/
function checklink($loc,$text)
{
if(head($loc)==200)
echo "[$text](%255C%2522%2524loc%255C%2522)
";
else
echo " **$text** ist zur Zeit nicht verfügbar
";
}
checklink("http://www.teamone.de/selfhtml/","SelfHTML");
checklink("http://www.mond.de","Redirect Beispiel");
checklink("http://www.heise.de/tp","Telepolis - lesenswert");
checklink("http://www.michgibtesnicht.de","unbekannte Domain");
checklink("http://www.altavista.de/gibtsauchnicht","LinkInsNirvana");
?\>
Ein Nachteil sei nicht verschwiegen: Das dauert ewig. Für Linklisten
ist das so direkt eigentlich nicht geignet. Da muss man dann ein weiters
Script schreiben (und ab und an händisch anwerfen), das dieses Script
aufruft und die Ausgabe in eine (statische HTML) Datei schreibt.
../../sfarchiv/2000\_2/t15138.htm#a76662
Gruss,
Carsten
Funktioniert wunderbar!!!
Danke!
-Michael