Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Bestimmte Zeilen aus einer PHP Datei auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Bestimmte Zeilen aus einer PHP Datei auslesen

    Ein wunderschönen.

    Ich hab folgendes Problem, was vielleicht keins ist, aber ich steh gerade auf dem Schlauch.

    Ich möchte aus folgender PHP Datei bestimmte Zeilen auslesen:
    http://www.hoerzu.de/text/tv-programm/jetzt.php

    dafür verwende ich folgende PHP Abfrage:
    [PHPWIKI]
    <?php
    $lines = file('http://www.hoerzu.de/text/tv-programm/jetzt.php');
    print $lines[13];
    ?>
    [/PHPWIKI]

    und das funktioniert auch...nun zum Problem..

    Meine PHP Testseite aktualisiert nicht, auch nach 5h steht immer noch das Programm von der Zeit, an dem ich die Seite erstellt habe obwohl die ".../jetzt.php" normal aktualisiert wird und sich an der Zeilenanzahl von der sich die PHP abfrage die Daten zieht. Das einzige was sich ändert ist die Broadcast ID. Wie kann man das lösen?


  • #2
    Vielleicht spielt dir da der Browsercache einen Streich. Hast du mal versucht, mit Strg-R die Seite zu refreshen?

    Kommentar


    • #3
      Das war meine erste vermutung.
      daher hab ich die Meta tags dementsprechend angepasst. Leider besteht das problem immernoch

      Kommentar


      • #4
        Hallo,

        liegt tatsächlich am Cache aber nicht am Browsercache meines erachtens ist hier ein Serverseitiger Cache vorgeschalten.

        Ich bin auf die Seite gegangen und da stand "Es ist jetzt 00:41 Uhr ." - obowhl es bei mir schon 00:45 Uhr war. Dann hab ich es mit einem Cache-Buster versucht also eine beliebige Zeichenfolge mit "?" an die Datei gehangen und "babääm" -> "Es ist jetzt 00:45 Uhr ."!

        Also hänge via Script z.B. immer die Ausgabe von "time()" dran um den Serverseitigen Cache zu umgehen.
        Gruß,
        SebTM

        Kommentar


        • #5
          Zitat von SebTM Beitrag anzeigen
          Also hänge via Script z.B. immer die Ausgabe von "time()" dran um den Serverseitigen Cache zu umgehen.
          Ok, dann das heißt für ein neuling? Wie sollte deiner Meinung das script aussehen?

          Kommentar


          • #6
            PHP-Code:
            <?php

            $lines 
            file('http://www.hoerzu.de/text/tv-programm/jetzt.php?' time());
            var_dump($lines[13]);

            ?>
            Es wäre schön wenn du zukünftig auch die PHP-Tags des Editors nutzen könntest.
            Gruß,
            SebTM

            Kommentar


            • #7
              Da ist irgendein Cache am Werk, der an URLs (?) und IPs (?) gebunden zu sein scheint, ja.

              Mit meinem Browser aktualisiert sich das aber trotzdem alle paar (5?) Minuten auch ohne neue Parameter.

              Ich habe deshalb den Verdacht, dass da auch noch ein Request-Header-Check mit drinhängt, der vermutlich den User-Agent-Header prüft. Fehlt der, kommt so eine kaputte Seite dabei raus (Ausschnitt):

              Code:
              <H3>Es ist jetzt .</H3> 
              <a name="68785678"></a>* <a href="detail.php?broadcast_id=68785678">Das Erste , Tagesschau , seit 17:00 Uhr</a> .<br/> 
              * ZDF , heute , seit 1"
              Versuch mal so was in der Art:

              PHP-Code:
              <?php

              $opts 
              = array(
                
              'http'=>array(
                  
              'method'=>"GET",
                  
              'header'=>"Accept-language: en\r\n".
                            
              "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0\r\n"
                
              )
              );

              $context stream_context_create($opts);

              /* Sends an http request to www.example.com
                 with additional headers shown above */
              $fp fopen('http://www.hoerzu.de/text/tv-programm/jetzt.php''r'false$context);
              ob_start();
              fpassthru($fp);
              $data ob_get_clean();
              fclose($fp);


              $data str_replace(array("\r\n""\r"), "\n"$data);

              $lines explode("\n"$data);

              var_dump($lines[11]);
              var_dump($lines[12]);
              Ist leider prinzipbedingt unangenehm zu testen, weil man aufpassen muss, nicht versehentlich mit einem derzeit schon gecacheten URL zu arbeiten.

              (Code ist zusammengeschustert. Besser geht es gerade nicht.)

              Kommentar


              • #8
                Es ist doch offensichtlich, das der Seitenbetreiber nicht möchte das seine Seite von diversen Servern ständig beansprucht wird.
                Jeder sollte überlegen, ob es richtig ist hier Einsteigern noch Tipps zu geben, die Maßnahmen der jeweiligen Seitenbetreiber zu umschiffen.
                Ich hab für solch Contextklau inklusive Webseitengegrabbele nichts übrig.

                LG jspit
                PHP-Klassen auf github

                Kommentar


                • #9
                  Es ist doch offensichtlich, das der Seitenbetreiber nicht möchte das seine Seite von diversen Servern ständig beansprucht wird.
                  User-Agent-Checks macht zum Beispiel auch die Wikipedia.

                  - http://meta.wikimedia.org/wiki/User-Agent_policy

                  Das ist nicht als Abwehrmaßnahme erkennbar. Der Server versucht ja vermutlich auch, eine korrekte Seite auszuliefern, schafft es nur nicht.

                  Eine unnötige Traffic-Belastung will im Web wohl niemand.

                  Jeder sollte überlegen, ob es richtig ist hier Einsteigern noch Tipps zu geben, die Maßnahmen der jeweiligen Seitenbetreiber zu umschiffen.
                  Besondere Schutzmaßnahmen, die wir bewusst umgehen würden, sehe ich hier nicht. Ich finde grundsätzlich nichts falsch daran, darüber zu reden, wie das HTTP in Anwendungen genutzt werden kann.

                  Pauschal zu sagen, dass wir damit Leuten ermöglichen, Missbrauch zu betreiben, finde ich extrem schwierig, weil wir damit einfach mal ein technisches Themenfeld tabuisieren. Du kannst, etwas weiter gedacht, auch bei jeder entsprechenden XPath-Frage annehmen, dass da fremder HTML-Code ausgewertet werden soll. Das ist überhaupt nicht unwahrscheinlich, weil man an die eigenen Daten üblicherweise geschickter drankommt.

                  Ich hab für solch Contextklau inklusive Webseitengegrabbele nichts übrig.
                  Wenn du eine Seite mit einem Browser abrufst und vielleicht sogar lokal abspeicherst, ist das okay, aber wenn jemand ein Script schreibt, das eine Zeile aus einer öffentlich zugänglichen HTML-Seite ausliest, ist das sofort Contentklau?

                  Man kann das Urheberrecht bei so was natürlich erwähnen. Aber… Na ja… Eigentlich versteht sich das auch von selbst (hoffentlich) und wirkt sich vor allem nicht wesentlich auf die technischen Aspekte aus, weil wir sonst wieder bei der Tabuisierung kompletter Themenfelder wären.

                  - https://de.wikipedia.org/wiki/Screen...liche_Probleme

                  In diesem Thread spricht niemand davon, Urheberrechte zu verletzen.

                  PS: Auch wenn ich hier sehr für einen Standpunkt argumentiere, ist das wirklich kein ganz einfaches Thema.

                  Kommentar


                  • #10
                    @mermshaus

                    Danke. Es funktioniert perfekt. Auch wenn es nur zusammengeschustert ist
                    Genauso hatte ich es mir vorgstellt. Fettes Danke!!

                    An sich hat jspit Recht, ob Urheberrecht oder nicht.
                    Hörezu.de stellt die Seite, von der das Script die daten zieht, frei zur Verfügung. Zum Einbinden in die eigene HP oder sonst wo, aber ich brauchte nur ein paar Infos, nicht alles. Daher mein Post hier

                    Kommentar


                    • #11
                      Zitat von mermshaus Beitrag anzeigen
                      Der Server versucht ja vermutlich auch, eine korrekte Seite auszuliefern, schafft es nur nicht.
                      Ja, warum nur nicht?

                      Zitat von mermshaus Beitrag anzeigen
                      Eine unnötige Traffic-Belastung will im Web wohl niemand.
                      ++

                      Zitat von mermshaus Beitrag anzeigen
                      Besondere Schutzmaßnahmen, die wir bewusst umgehen würden, sehe ich hier nicht.
                      Vom Server aus dem Gegenüber per Header einen Webbrowser vorzugaukeln oder die URL zu modifizieren sehe ich als solche Tricks an.

                      Zitat von mermshaus Beitrag anzeigen
                      Pauschal zu sagen, dass wir damit Leuten ermöglichen, Missbrauch zu betreiben, finde ich extrem schwierig, weil wir damit einfach mal ein technisches Themenfeld tabuisieren.
                      Ist schwierig, Ja. Pauschal möchte ich auch niemanden unterstellen Mißbrauch zu betreiben, und das einzuschätzen ist mit Sicherheit nicht einfach. Oftmals stehen hinter solchen Fragen auch gar keine bösen Absichten. Aber da kann man ja mal vorsichtig nachfragen, was der Fragesteller denn mit den Informationen so anstellen möchte bevor aus den Nähkästchen geplaudert wird.

                      Zitat von mermshaus Beitrag anzeigen
                      Wenn du eine Seite mit einem Browser abrufst und vielleicht sogar lokal abspeicherst, ist das okay, aber wenn jemand ein Script schreibt, das eine Zeile aus einer öffentlich zugänglichen HTML-Seite ausliest, ist das sofort Contentklau?
                      Nicht sofort. Aber wenn ich Teile daraus dann ohne Einverständnis des Seitenbetreibers auf "meiner" Webseite darstelle ohne dies kenntlich zu machen, dann ja.

                      Edit: @Decay
                      Hab nicht aktualisiert und deine Antwort erst jetzt gelesen.
                      Ich weis nicht, wie oft deine Seite so am Tag aufgerufen wird.
                      Versuche dennoch die Informationen für einen sinnvollen Zeitraum bei dir zu cachen und nicht bei jeden Seitenaufruf den fremden Server zu belasten.
                      PHP-Klassen auf github

                      Kommentar


                      • #12
                        Zitat von jspit Beitrag anzeigen
                        Edit: @Decay
                        Hab nicht aktualisiert und deine Antwort erst jetzt gelesen.
                        Ich weis nicht, wie oft deine Seite so am Tag aufgerufen wird.
                        Versuche dennoch die Informationen für einen sinnvollen Zeitraum bei dir zu cachen und nicht bei jeden Seitenaufruf den fremden Server zu belasten.
                        Ja da pass ich schon auf. Ich hab ein Refresh von 10 min eingestellt, dass sollte den Traffic im Rahmen halten

                        Kommentar

                        Lädt...
                        X