Halihallo diplomsiedler
ich dachte, dass hätte ich schon.
Nun, "Bekomme ich nicht hin" klingt mir nicht nach einer Frage und zeugt von höchster
ungedult und unbereitwilligkeit das Problem auch _selber_ anzugehen.
ich nix wissen, wie mit hilfe von fsockopen den 404er check machen kann, wie du zuvor beschrieben hast?!
_Das_ ist eine Frage. Unter http://www.php.net/manual/de/function.fsockopen.php
findest du dieses Beispiel:
<?php
$fp = fsockopen ("www.example.com", 80, &$errno, &$errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
?>
Dieses Stellt eine Verbindung mit www.example.com her (die du bitte durch den Server
mit dem fremden Bild ersetzt) und öffnet '/' (also in den meisten Fällen /index.html)
für dein Beispiel: fputs ($fp, "GET /images/existiert.gif HTTP/1.0\r\n\r\n");
dann wird versucht die Ressource http://www.example.com/images/existiert.gif zu laden.
das was dort über echo fgets($fp,128); ausgegeben wird, kannst du in eine Variable
"umleiten" (du möchtest nicht auf dem Bildschirm lesen, was der fremde Server antwortet,
sondern du möchtest wissen, ob da ein "Status: 404" drinne steht, dazu musst du die
Ausgabe in einer Variablen speichern):
$response .= fgets($fp,128);
Nun, wo steht nun der gewünschte "Status: 404 ..."? - Der wird vom Webserver _in_ dieser
$response gespeichert. Nun stellt sich natürlich die Frage, wie du diesen Status-Code
extrahieren kannst. Hierzu möchtest du dich über RegularExpressions informieren, dies
tust du z. B. unter http://www.php.net/manual/de/function.preg-match.php.
Sieh dir z. B. dort das Beispiel 3 "Getting the domain name out of a URL" an und passe
es etwa so an:
preg_match("/Status: (.*?)(\r|\n)$/i",$host,$matches);
in $matches[0] hast du dann entweder '404', das heisst "Ressource nicht gefunden", das
fragliche Bild befindet sich also _nicht_ auf dem fremden Server, oder du hast z. B.
'200' was ein 'OK' bedeutet (die Ressource [=>Bild] ist vorhanden); natürlich gibt's
noch viele andere HTTP-Status-Codes, die du bitte über google.ch nachschlägst.
Viele Grüsse
Philipp