C_Buster_G: file_exists() && getimagesize() checken via http://

Hi,

kleines Problem:

Ich möchte gerne ermitteln ob eine vom user angegebene Datei in der Form (http://www.test.de/bild.de) existiert, b.z.w. ob die URL korrekt angegeben wurde,und ob es ein Bild ist.

So hab ichs mir vorgestellt:

<?

if(file_exists('http://www.test.de/img/test.gif'))
{

$bild =getimagesize('http://www.test.de/img/test.gif');

if($bild[2] <= 3 )
{echo "Bild ist OK";}

else {
echo "Sorry dies ist kein gültiges Bildformat!<br>Zulässig sind GIF,JPG,PNG Bildformate";}

}else{echo "Error: URL Existiert nicht !!Oder wurde Falsch angegeben!!";}

?>

Problem ist nun das getimagesize() und file_exists nicht mit URLs klarkommen.

Hoffe das jemand wies geht?

Danke

MfG C_buster_G

  1. Aloha!

    Ich möchte gerne ermitteln ob eine vom user angegebene Datei in der Form (http://www.test.de/bild.de) existiert, b.z.w. ob die URL korrekt angegeben wurde,und ob es ein Bild ist.

    Problem ist nun das getimagesize() und file_exists nicht mit URLs klarkommen.

    Hoffe das jemand wies geht?

    Lade die Datei vom fremden Server auf deinen Server in eine temporäre Datei herunter. Wenn das klappt, existiert die Datei.

    Prüfe dann die Größe des Bildes an der heruntergeladenen Datei. Lösche die Datei wieder.

    - Sven Rautenberg

    1. Aloha!

      Hi
      und Danke erstmal..

      Lade die Datei vom fremden Server auf deinen Server in eine temporäre Datei herunter. Wenn das klappt, existiert die Datei.

      Prüfe dann die Größe des Bildes an der heruntergeladenen Datei. Lösche die Datei wieder.

      Hab ich auch schon drüber nachgedacht, allerdings nimmt das doch schon ne menge Zeit in Anspruch.
      Gibt es da keine andere moeglichkeit??

      • Sven Rautenberg

      MfG C_buster_G

      1. Aloha!

        Hab ich auch schon drüber nachgedacht, allerdings nimmt das doch schon ne menge Zeit in Anspruch.
        Gibt es da keine andere moeglichkeit??

        Wenn es eine gäbe, würdest du sie jetzt kennen.

        - Sven Rautenberg

  2. HI auch,

    Ich möchte gerne ermitteln ob eine vom user angegebene Datei
    in der Form (http://www.test.de/bild.de) existiert,

    sende einen HTTP-HEAD-Request an diese Adresse.
    Du erhältst dieselben HTTP-Header-Informationen wie bei einem normalen
    GET-Request (also z. B. auch die Länge der Datei), nicht aber ihren
    Inhalt. Und es geht unabhängig von der Dateigröße relativ schnell, da
    nur ein paar hundert Bytes ausgetauscht werden müssen.

    b.z.w. ob die URL korrekt angegeben wurde,und ob es ein Bild ist.

    Was ist "ein Bild"? Exakte Definition, bitte.

    Ich fürchte allerdings, daß dieser Teil Deiner Aufgabenstellung ohne
    die Übertragung des Datei-Inhalts nicht lösbar sein wird.

    Allerdings haben es viele Dateiformate an sich, daß man sie anhand der
    ersten paar Bytes erkennen kann.
    Falls Deine Definition von "Bild" auf solchen Informationen basiert,
    kannst Du versuchen, einen GET-Request an den Ziel-Server zu senden,
    aber nur einen "range" von Bytes anzufordern - HTTP kann das:
       http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16
    Damit wärest Du wieder unabhängig von der konkreten Dateigröße - ich
    bin aber nicht sicher, ob jeder Webserver solche range requests in
    Deinem Sinne beantworten wird, also - vorher ausprobieren.

    Viele Grüße
          Michael