Alex: Ist die Datei ??? vorhanden?

Hallo!

Ich biete auf meiner HP einen Downloadbereich an. Gibt es eine Möglichkeit, dass man überprüfen kann, ob der Pfad auf eine externe Seite noch stimmt?

Danke!

Alex

  1. Moin!

    Ich biete auf meiner HP einen Downloadbereich an. Gibt es eine Möglichkeit, dass man überprüfen kann, ob der Pfad auf eine externe Seite noch stimmt?

    Ja, ganz simpel: Rufe die Seite von diesem externen Server mittels HTTP-Methode HEAD ab und prüfe, ob der Server "200 OK" zurückgibt, oder etwas anderes.

    Bedenke dabei aber, daß es sicherlich sinnvoll ist, diesen Mechanismus in irgendeinen Cache zu schreiben, denn sonst muß bei jedem Seitenaufruf jeder externe Server immer wieder abgefragt werden, was den Seitenaufbau unnötig verzögert und bei den externen Servern unnötig Traffic verursacht.

    - Sven Rautenberg

    1. Hallo du da draußen,

      Ja, ganz simpel: Rufe die Seite von diesem externen Server mittels HTTP-Methode HEAD ab und prüfe, ob der Server "200 OK" zurückgibt, oder etwas anderes.

      Jetzt ist nur die Frage, ob unser lieber Alex weiß, wie man das macht?!

      Grüße von hier drinnen, aus Biberach an der Riss,

      Dogfish

      1. Jetzt ist nur die Frage, ob unser lieber Alex weiß, wie man das macht?!

        Funktioniert schon!

  2. Hi.

    Ich biete auf meiner HP einen Downloadbereich an. Gibt es eine Möglichkeit, dass man überprüfen kann, ob der Pfad auf eine externe Seite noch stimmt?

    Probier mal dieses Konstrukt:

    $fp = @fopen($url,"r");
        @fclose($fp);
        if (!$fp) {
            echo "<b>Kein Dateiname angegeben oder Datei ungültig!</p>";
        }

    MfG, Arne P.

    1. Hallo du da draußen,

      $fp = @fopen($url,"r");
          @fclose($fp);
          if (!$fp) {
              echo "<b>Kein Dateiname angegeben oder Datei ungültig!</p>";
          }

      Fopen funktioniert nur, soweit die Datei auf dem Server liegt. Dann kann man aber auch file_exists("Dateiname") nehmen. Nun hab ich aber Alex so verstanden, dass die Datei auf einem anderen Server liegt. Und da braucht man dann dieses Viech vom Sven.

      Grüße von hier drinnen, aus Biberach an der Riss,

      Dogfish

      1. Moin!

        Fopen funktioniert nur, soweit die Datei auf dem Server liegt.

        [ ] Du kennst die Gefahren von fopen() und include(), die durch die fopen URL wrappers entstehen.

        Informier dich mal, welche Sicherheitsprobleme man kriegt, wenn man ungeprüft Userangaben in ein Include einfügt. include() und fopen() sind sehr wohl in der Lage, bei entsprechender Konfiguration auch Dateien per HTTP und per FTP anzusprechen (bei FTP kann man sie sogar speichern, wenn der Server das erlaubt).

        Nun hab ich aber Alex so verstanden, dass die Datei auf einem anderen Server liegt. Und da braucht man dann dieses Viech vom Sven.

        Besser wäre es. fsockopen() ist ja nun wirklich recht schlicht und einfach zu bedienen - man benötigt lediglich noch ein paar Kenntnisse darüber, was man dem anderen Server per HTTP mitteilen will.

        Wie man von einem fremden Server eine Datei abholt, ist in http://www.php.net/manual/en/function.fsockopen.php im ersten Beispiel erklärt. Anstatt "GET /" muß man nur "HEAD /pfad/zur/url.ext" schreiben und erhält eine Kurzantwort des Servers, ohne daß der URL-Inhalt selbst übertragen wird. Das kann man dann auswerten (im Beispiel wird es einfach per echo ausgegeben).

        - Sven Rautenberg