Stefan: PHP als Newsfeed?

Hallo zusammen,

ich habe folgendes Problem und hoffe, dass mir hier jemand helfen kann, dass es mir so vorkommt als hätte ich bereits das ganze Internet durchgegooglet um eine Lösung zu finden, jedoch ohne Erfolg. Also:

Ich benutze eine ziemlich alte Forensoftware und möchte nun von dieser einen RSS-Newsfeed erzeugen lassen. Das funktioniert auch schon ein bisschen so wie ich mir das vorstelle und mein Feedreader NetNewsWire liest die Daten tatsächlich aus. Damit ist das Programm jedoch alleine, da es von anderen - auch nicht vom Feedvalidator als XML-Datei anerkannt wird und ich bekomme folgende Meldung:

Feeds should not be served with the "text/html" media type

Wenn ich nun versuche an die erste Stelle meines Pseudo-Feeds ein Encoding zu stellen, also ?xml version="1.0" encoding="iso-8859-1"? , damit's als XML-Datei anerkannt wird, bekomme ich von PHP folgende Fehlermeldung:

Parse error: parse error, unexpected T_STRING in /.../rss.php on line 1

Hat also jemand eine Idee, wie ich diese PHP-Datei so zurechtbastel, dass sie von allen gängen Feedreadern gelesen werden kann?

Die Datei befindet sich übrigens hier:
http://www.eayz.net/board/rss.php?f=1

Aber der Quelltext offenbahrt wohl mehr.

Vielen Dank im vorraus, MfG
Stefan

  1. Moin,

    Feeds should not be served with the "text/html" media type

    ohne den Code zu sehen, ist es natürlich schwer, aber vielleicht hilft es ja schon bei der Ausgabe den Content-Type von text/html auf text/xml umzustellen...

    Diese Angabe ist ohne Gewähr :-)

    MfG,
      Juan

    1. Ach so, klar. Der Code wäre natürlich sinnvoll. Und der sieht derzeit so aus:

      <rss version="2.0">
      <channel>
      <title>eayzlog</title>
      <link>http://www.eayz.net/board/</link>
      <description></description>
      <language>de</language>
      <copyright>Copyright 2006</copyright>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs>

      <?
      $f=1;
      chdir("../board/");
      include "common.php";

      $number=10; // number of messages to show.

      $SQL="select id, thread, author, subject, datestamp from $ForumTableName order by datestamp desc limit $number";
      $q->query($DB, $SQL);
      $rec=$q->getrow();
      while(is_array($rec)){
      echo "
      <item>
      <title>$rec[subject] by $rec[author]</title>
      <description>Weiterlesen im Forum!</description>
      <link>$forum_url/$read_page.$ext?f=$num&i=$rec[id]&t=$rec[thread]</link>
      <guid>$forum_url/$read_page.$ext?f=$num&i=$rec[id]&t=$rec[thread]</guid>
      </item>\n";
      $rec=$q->getrow();
      }
      ?>

      </channel>
      </rss>

      Den Content-Type umstellen - wie mach ich denn das? (Sorry, mit PHP kenn ich mich nur wenig bis überhaupt gar nicht aus.)

      1. Moin,

        Den Content-Type umstellen - wie mach ich denn das? (Sorry, mit PHP kenn ich mich nur wenig bis überhaupt gar nicht aus.)

        dazu solltest du dir die Header-Funktion angucken, vor allem das letzte Beispiel sollte dir weiter helfen. Und am Besten generell alles per PHP ausgeben, statt mittendrin auf PHP umzuschalten.

        MfG,
          Juan

  2. Hi

    Wenn ich nun versuche an die erste Stelle meines Pseudo-Feeds ein Encoding zu stellen, also ?xml version="1.0" encoding="iso-8859-1"? , damit's als XML-Datei anerkannt wird, bekomme ich von PHP folgende Fehlermeldung:

    Also die Sache aus der Antwort von Juan, mit der Umstellung auf text/xml würde ich auch mal weiter verfolgen. Das Problem mit der Fehlermeldung liegt schlichtweg darin, dass auf deinem Server die ShortTags an sind, also <? als Beginn eines PHP-Blocks erkannt wird. Wenn du keine Möglichkeit hast das umzustellen (was auch schlecht ist, da dein Code sich ebenfalls darauf verlässt), dann solltest du diese Processing-Instruction mit PHP schreiben, also per echo, dann müsste es hinhauen.

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(