Sabine: Bild von externer seite laden. Wenn nicht vorhanden anderes Bild

Ich lade von einer anderen Webseite (legal) jeden Tag ein bestimmtes Bild herunter. Nun möchte ich aber vorher überprüfen ob das Bild überhaupt da ist, wenn nicht soll ein anderes Bild geladen werden.

Ich habe gedacht ich mache das mit file_exists, aber das war die falsche Fährte!

Sabine

  1. Hello,

    Ich lade von einer anderen Webseite (legal) jeden Tag ein bestimmtes Bild herunter. Nun möchte ich aber vorher überprüfen ob das Bild überhaupt da ist, wenn nicht soll ein anderes Bild geladen werden.

    Ich habe gedacht ich mache das mit file_exists, aber das war die falsche Fährte!

    Ja, das ist falsch, denn file_exists() prüft auf Files aus dem eigenen Filesystem (incl. dazugemounteten Netzressourcen) und nicht auf Ressourcen.

    Dazu solltest Du einen HTTP-HEAD-Request ausführen.
    Das geht auch mit file_get_contents() und den entsprechenden Argumenten im Ressource-Kontext, wenn die URL-Wrapper erlaubt sind.

    http://de.php.net/manual/en/function.file-get-contents.php
    http://de.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hello,

      *mmh*
      ich sehe eben gerade, dass es seit PHP 5.0.0 angeblich auch für die Wrapper genutzt werden kann...

      As of PHP 5.0.0, this function can also be used with some URL wrappers. Refer to
          List of Supported Protocols/Wrappers for a listing of which wrappers support stat()
          family of functionality.

      Allerdings steht dann im Wrapper für HTTP/HTTPs

      Supports stat()   No

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  2. Ich lade von einer anderen Webseite (legal) jeden Tag ein bestimmtes Bild herunter.

    Herunter? Wohin? Herunterladen heisst doch, du hast es dann auf deinem lokalen PC.

    Nun möchte ich aber vorher überprüfen ob das Bild überhaupt da ist, wenn nicht soll ein anderes Bild geladen werden.

    Gut, du gibst die Bild-URL in deinen Browser ein und wartest eine angemessene Zeit. Wenn es nicht kommt, wird es wohl nicht erreichbar sein. Dann gibst du die alternative URL ein.

    Aber ich habe das Gefühl, dass nicht "du" selbst aktiv werden willst, sondern das Thema an PHP oder Javascript delegierst.

    Bei Javascript gibt es das Event onLoad, auch für Bilder. Du könntest mit TimeOut nach angemessener Zeit prüfen, ob das Bild geladen ist. Wenn nicht, dann lade ein anderes.

    Bedingt natürlich, dass der Besucher deiner Seite Javascript aktiviert hat.

    Kalle