Sascha: HTML-Datei auslesen

Hallo!

Ich weiß nun nicht mehr, wie es weiter geht.
Ich hoffe, hier kann mir jemand helfen:

Möchte eine HTML-Datei auslesen:
$fd = fread(fopen("http://www.xxxx.asp?AdrID=5837", "r"),100000);

echo $fd;

Problem, Datei wird nicht komplett ausgelesen, liegt aber nicht am Parameter(hier 100000), da ich den schon einige Male verändert habe.
Kann es sein, da in dieser Datei ein iframe ist, dort einfach Schluss ist?
Oder, gibt es evtl. auf dem Server eine Beschränkung, sodass ich nicht aus einem Script auf diese Datei zugreifen kann und diese dann auslesen darf?

Vielen Dank

Sascha

  1. Hello,

    Möchte eine HTML-Datei auslesen:
    $fd = fread(fopen("http://www.xxxx.asp?AdrID=5837", "r"),100000);

    Diese geschachtelte Schreibweise mag zwar eineigen Informatik-Professoren ganz gut gefallen, echte[tm] Programmierer machen sowas aber nicht...

    fread(false) ist nicht so glücklich und da es für den Fehlerfall von fopen() zu vermeiden wäre
      solltest Du die Fehlermeldungen (rückgabe von false) auch abfragen und darauf reagieren.

    Außerdem fehlrt das fclose() aber das kam ja bestimmt noch später ;-))

    echo $fd;

    Problem, Datei wird nicht komplett ausgelesen, liegt aber nicht am Parameter(hier 100000), da ich den schon einige Male verändert habe.
    Kann es sein, da in dieser Datei ein iframe ist, dort einfach Schluss ist?
    Oder, gibt es evtl. auf dem Server eine Beschränkung, sodass ich nicht aus einem Script auf diese Datei zugreifen kann und diese dann auslesen darf?

    Was wird denn ausgegeben?

    Mach doch mal

    echo htmlentities($fd);

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      Möchte eine HTML-Datei auslesen:
      $fd = fread(fopen("http://www.xxxx.asp?AdrID=5837", "r"),100000);

      fread(false) ist nicht so glücklich und da es für den Fehlerfall von fopen() zu vermeiden wäre
        solltest Du die Fehlermeldungen (rückgabe von false) auch abfragen und darauf reagieren.

      Wieso ist fread() unglücklich, was soll ich sonst verwenden?
      Für fopen() wird 1 zurück ausgegeben!

      Problem, Datei wird nicht komplett ausgelesen, liegt aber nicht am Parameter(hier 100000), da ich den schon einige Male verändert habe.

      Oder, gibt es evtl. auf dem Server eine Beschränkung, sodass ich nicht aus einem Script auf diese Datei zugreifen kann und diese dann auslesen darf?

      Was wird denn ausgegeben?

      Mach doch mal

      echo htmlentities($fd);

      Es wird HTML ausgeben, genausoweit, wie ich es auch im Quellcode sehe. Aber halt nicht die ganze Datei

      Komisch ist, das Script lief schon, jetzt ohne Veränderung nicht mehr.

      Danke für die schnelle Antwort.

      Sascha

      1. Hello,

        Hello,

        Möchte eine HTML-Datei auslesen:
        $fd = fread(fopen("http://www.xxxx.asp?AdrID=5837", "r"),100000);

        fread(false) ist nicht so glücklich und da es für den Fehlerfall von fopen() zu vermeiden wäre
          solltest Du die Fehlermeldungen (rückgabe von false) auch abfragen und darauf reagieren.

        Wieso ist fread() unglücklich, was soll ich sonst verwenden?

        Ich habe nicht geschrieben, dass fread() unglücklich ist, sondern fread(false). Das ist ein Unterschied. Wenn nämlich fopen() kein gültiges Handle (in Deinem fall eben die 1) zurückgibt, dann liefert es false ( == 0) und fread(0) ist nicht gestattet. Es löst einen schweren Fehler aus.

        $fh = fopen($filename,$openmode);
        if($fh)
        {
          $filecont = fread($fh,MAXREADSIZE);  # MAXREADSIZE definiert man sich zweckmäßigerweise
          fclose($fh);
        }
        else
        {
          # Fehlerbehandlung
        }

        Wenn man nun den Inhalt der Datei, der in $filecont gespeichert ist, ausgibt an den Browser, wir das ja von dem relativen Pfad des Scriptes aus ausgegeben, und nicht von dem relativen Pfad der Originaldatei.

        Zur Probe kannst Du ja mal eine kleine HTML-Datei mit I-Frames und Bildern direkt in das Verzeichnis des Scriptes legen. Dann klappt es nämlich.

        Für fopen() wird 1 zurück ausgegeben!

        Klar, wenn man ein Handle ausgeben lässt, sieht man nicht viel.

        Problem, Datei wird nicht komplett ausgelesen, liegt aber nicht am Parameter(hier 100000), da ich den schon einige Male verändert habe.

        siehe oben...

        Komisch ist, das Script lief schon, jetzt ohne Veränderung nicht mehr.

        Nee, das ist nicht komisch sondern blöd ;-) Du hast das Ganze nur nicht aus der Sicht des Browsers betrachtet, und auch nicht aus der ses Servers, sondern aus der eines Script-Betrachterts...

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. $fh = fopen($filename,$openmode);
          if($fh)
          {
            $filecont = fread($fh,MAXREADSIZE);  # MAXREADSIZE definiert man sich zweckmäßigerweise
            fclose($fh);
          }
          else
          {
            # Fehlerbehandlung
          }

          Tut mir leid, wenn ich jetzt total auf dem Schlauch sitze, aber auch mit dem Script funzt es nicht. Das Ergebnis ist dasselbe, das ich hatte.

          Nee, das ist nicht komisch sondern blöd ;-) Du hast das Ganze nur nicht aus der Sicht des Browsers betrachtet, und auch nicht aus der ses Servers, sondern aus der eines Script-Betrachterts...

          OK, wie müsste ich es denn betrachten?
          Wie komme ich dann ans Ziel?

          Wie ist es zu erklären, dass mit array file (string filename [, int use_include_path]), die Daten korrekt ausgelesen werden?

          1. Hello,

            Tut mir leid, wenn ich jetzt total auf dem Schlauch sitze, aber auch mit dem Script funzt es nicht. Das Ergebnis ist dasselbe, das ich hatte.

            Ich hatte auch nichts anderes versprochen. Hast Du denn mal den von mir vorgeschlagenen Versuch durchgeführt?

            OK, wie müsste ich es denn betrachten?

            Immer aus der Sicht des Browsers, denn HTML-Dateien werden immer auf dem Browser ausgewertet, d.h. die Requests durchgeführt, die man per <img>, <frame> usw. auslöst.

            Wie ist es zu erklären, dass mit array file (string filename [, int use_include_path]), die Daten korrekt ausgelesen werden?

            Das tut mir leid, da stehe ich jetzt auf dem Schlauch.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau