Zur Navigation

RSS-Feed aus Wordpress auslesen [2]

Script bringt mich zur Verweiflung

11 Horst_M

Zitat von AndreasH
mein Provider rät mir allerdings aus Sicherheitsgründen dringend davon ab, ich sollte curl nutzen - was ich allerdings noch nie getan habe.

Dein Provider weiß vermutlich, dass Du unerfahren in Sachen Programmierung bist? Oder welche Gründe bewegen ihn zu dieser Aussage?

Ich sage mal so (so wie ich das bisher verstanden hab, kann mich auch irren, Jörg wird sich da besser auskennen), für richtig halte ich es, wenn allow-url-include auf Off gesetzt oder gar auskommentiert wird. Da aber bis PHP Version 5.2 nicht einzeln verfügbar, setzten einige Hoster stattdessen allow-url-fopen auf Off. Wenn, so müssen in der php.ini die Semikolons an entsprechender Stelle entfernt werden, sonst kann man mit ini_set() setzen was man will und nichts wird sich ändern. Vor allow_url_include könnte eventuell zusätzlich ein Semikolon gesetzt werden.

allow_url_fopen = On
allow_url_include = Off
extension=php_curl.dll

cURL ist eigentlich eine feine Sache, nach meinen bisherigen Erfahrungen aber oftmals auch nicht freigeschaltet. cURL lässt sich einfach handhaben, habe noch eine Klasse zu liegen, davon benötigst Du zwar nur die mittelste "class WieBot", doch zum Testen kannst Du ja das Formular mitbenutzen und brauchst dann nur die abschließende Verarbeitung der Tags entsprechend regeln, was zur Not auch mit DOM und XPath ginge.

Von meiner begonnenen Variante wird heute noch eine Version fertig, ist bereits unter dem ersten Linkverweis (http://www.coder-welten.de/projekte/feedreader.htm) weiter oben zu sehen, nun gleich für RSS und Atom-Feeds. Eine ausführliche Beschreibung wird aber erst dann folgen, wenn ich mir die Spezifikationen von RSS und Atom noch einmal gründlicher besehen habe. Bei den Feed-Tags könnte aber ohnehin ein Wildwuchs existieren.

29.05.2013 13:32

12 AndreasH (Gast)

Dein Provider weiß vermutlich, dass Du unerfahren in Sachen Programmierung bist? Oder welche Gründe bewegen ihn zu dieser Aussage?

Unerfahren ist der falsche Ausdruck - ich bin einfach nicht mehr bei der Zeit.

Ich werde die Funktion aber nun einfach mal auf "on" schalten lassen und es erstmal testen - prinzipiell verwende ich keine scripts, die in meinen Augen da einen Gefahrenpunkt darstellen könnten.

30.05.2013 13:52

13 Horst_M

Wenn ich ehrlich bin, so richtig verstehe ich nicht, wozu Du was benötigst. Du möchtest den Feed von www.voelklingen-im-wandel.de laden, gleichzeitig ist jedoch auch die Testseite unter dieser Domain erreichbar und im Impressum steht Deine Anschrift weit oben. Wenn Du aber für oder bei www.voelklingen-im-wandel.de arbeitest, so brauchst Du den eigenen Feed nicht über HTTP zu laden und könntest übers Filesystem auf einzelne Dateien zugreifen. Um zum Beispiel die neusten Schlagzeilen auf einer Seite auszugeben, würde in diesem Fall eine kleine Datenbankabfrage bereits genügen. Somit würdest Du weder cURL noch allow_url_fopen = On benötigen.

Das erste von Dir gepostete Listing und ebenso meins, beide sind doch dafür gedacht, dass die unter einer entfernten Domain, wie www.example.com/lesefeed.php eingebunden werden, damit www.voelklingen-im-wandel.de etwas im Bekanntheitsgrad steigt und auf diese Weise noch den einen oder anderen Link von einer anderen Seite erhält. Und da liegt es eigentlich im Verantwortungsbereich des Inhabers/Webmasters der entfernten Domain, dass der nur Feeds aus sicheren Quellen einbindet, insofern die Herausgeber der Feeds die Einbindung gestatten.

Nur, da ich mein Script voraussichtlich gepackt als Zip-Archiv zum Download bereitstellen werde und genau weiß, wenn das Script jemand einbindet, so könnte es sich durchaus um einen unerfahrenen Webmaster handeln. Und wenn dieser dann halt Feeds aus unterschiedlichen Quellen einbindet, dann könnte sich darunter auch eine weniger vertrauenswürdige Quelle befinden. Es wäre somit möglich, dass der Webmaster von Domain A sich Feeds von Domain B, C, D, E usw. einbindet und im Feed von Domain D ein pixelgroßer iFrame versteckt vom Webmaster von Domain D eingebunden wird, der Schadcode nachladet oder Links, die zu einer nicht jugendfreien Seite weiterleiten.

Gegen Links zu fragwürdigen Seiten, da ist mein Script auch nicht gewappnet, doch gegen iFrames oder ähnlichen Dingen schon mehr oder weniger. Eine hundertprozentige Sicherheit gibt es nicht, doch erst einmal alle erlaubten Tags aus CDATA-Abschnitten in BBCode umwandeln, die restlichen entfernen, um dann wieder BBC in HTML zu verwandeln, halte ich gegenwärtig noch für akzeptabel.

Mein Script ist, wenn ich die CSS mitrechne, auf 3 Seiten angewachsen, jedoch noch nicht online in der Version, weil ich erst meine alte Lizenz überarbeiten möchte, die ich bei meinen ersten Scripts verwendete, doch seither keine neuen mehr schrieb, weil außer einem Amazon Script, wollte eh kaum jemand eins.

31.05.2013 10:44 | geändert: 31.05.2013 10:49

14 Horst_M

Was ich noch sagen wollte, für einen Feed und auch in einer normalen Webseite müssen keine Bilder in der Größe ausgeliefert werden:

3.260,94 KB (3.339.204 Byte)
1.000px × 2.816px (Skaliert zu 89px × 250px)

Im Feed, bei meiner Testeinstellung, werden die Bilder zwar ohnehin skaliert, doch die Ladezeit erhöht sich dennoch und beträgt, wie es ausschaut im Firebug,

5 Anfragen 3,5 MB (3,5 MB vom Cache) 16.65s (onload: 16.64s)

was irgendwie unakzeptable ist. Ein einfacher Feed von der Tagesschau, ohne Bilder und nur ein paar Zeilen Text, ist mit 343ms (onload: 419ms) kein Vergleich, doch wenn ich meinen eigenen mit einem kleinen Bild nehme 561ms (onload: 657ms), ich sage mal so, unter 2 Sekunden müssten erreichbar sein, wenn man nur Anrisse als Deskription verwendet und beim Content auch keine ganzen Artikel und Vorschaubilder / Thumbnails. In den Artikeln ebenfalls kleinere Bilder, mit einem Verweis auf größere Bilder. Da würde ich jetzt auch noch Handlungsbedarf sehen.

31.05.2013 15:42

15 AndreasH (Gast)

Hallo Horst,
die Webseite ist ein Projekt aus meiner tiefsten Jugend ;)

Da ich den Nachrichtenfeed gerne z.B. auch auf der Webseite meines Vereins nutzen wollte, versuche ich es eben gleich auf diese Art.

Klar könnte ich unter der Projektdomain einfach auf die Datenbank zugreifen, aber mit der Seite des Vereins eben schon nicht mehr - deshalb wollte ich zuerst den feed zum laufen bringen.
Allerdings zieht sich soetwas bei mir aus berufsgründen immer hin - und bis ich wieder dazu komme, verliere ich den faden....

Ab und an schleichen sich große Bilder in die Nachrichten, weil ich auf diese nur Verlinke und sie selbst nicht mehr über WP hochlade - daher kommt es ab und zu zu größeren Dateien - was ich zZ eben in kauf nehme.

Gruß

02.06.2013 21:01

16 Horst_M

Ja gut, etwas verstehe ich das nun. Habe noch eine Variante mit cURL gefertigt und bin jetzt mit meinen Scripts soweit fertig.

Da scheint sich in den letzten Jahren etwas getan zu haben, doch jeder handhabt es anders. Der eine bindet Image-Tags einfach wie gewohnt in die CDATA-Abschnitte ein, die dann mit dem restlichen Content in den Elementen description, content oder summary eingefügt werden, ein anderer Anbieter benutzt enclosure, um die URL des Images gesondert zu übermitteln und wieder andere nutzen beide Möglichkeiten.
Damit scheint der IE klar zu kommen, der Firefox ladet die Image-URL aus enclosure hingegen nicht, sondern zeigt nur die URL der innerhalb von <enclosure> </enclosure> referenzierten Medien an. Habe es jetzt genauso gemacht, sonst müsste ja der ganze Feed ein zweites Mal durchlaufen werden, nur um erst einmal zu schauen, ob nicht in den CDATA-Abschnitten bereits dieselben URLs auftauchen, was mal der Fall ist und mal nicht.

Bei description und content ist genauso ein Durcheinander, der eine benutzt als Anriss für Description denselben Text wie für Content, ein anderer macht als Anriss halt einen eigenständigen Text verfassen, und fügt die Bilder dann erst unter Content mit ein. Ladet man beides, erhält man zuweilen einige Zeilen doppelt, ladet man nur die Description, was eigentlich für einen Feed genügen sollte, fehlen oftmals die Thumbnails. Nun gut, die Spezifikationen habe ich bisher nur überflogen, dafür habe ich einige Feeds von größeren Online-Zeitschriften zerpflückt.

Der Feedreader mit cURL ist insoweit fertig, eventuell für Deine Belange ein wenig überdimensioniert. Für andere Belange ist er jedoch wiederum noch reichlich unterdimensioniert, da er längst nicht alles berücksichtig.

03.06.2013 23:27

... 1 Monat später ...

17 AndreasH (Gast)

Endlich habe ich es geschafft mich mal wieder mit dem Thema zu beschäftigen - dein Skript ist schonmal klasse und funktioniert bis auf den unten beschriebenen Fehler prima ---> KOMPLIMENT und danke!

Meine Seite ist komplett auf ISO-8859-1 ausgelegt, dein Script aber auf UTF-8.
Könntest du mir eine Hilfestellung geben, wie ich den Ausgabe bereich entsprechend anpassen könnte? Das wäre genial!

Meine Testseite ist weiter hier zu finden: http://www.voelklingen-im-wandel.de/indextest.php

28.07.2013 16:31

18 Horst_M

Zitat von AndreasH
Meine Seite ist komplett auf ISO-8859-1 ausgelegt, dein Script aber auf UTF-8.
Könntest du mir eine Hilfestellung geben, wie ich den Ausgabe bereich entsprechend anpassen könnte? Das wäre genial!

Ich sehe jetzt keinen Fehler bei Deiner Ausgabe. Eventuell sollte es ansonsten bereits genügen, wenn Du die Header-Zeile in ISO-8859-1 änderst oder besser in:

header("Content-Type: text/html; charset=windows-1252");

Dürfte dann aber auch nicht als UTF-8 im Editor gespeichert werden und falls das allein noch nicht genügen sollte, habe bei mir immer alle Ausgaben mit

echo  utf8_decode("Hier die ursprüngliche Ausgabe");

gerichtet, da ich ja auch in allen Seiten noch ISO-8859-1 verwende und irgendwie einfach schöner finde.

Nun wollte ich vor 4 Wochen oder so, daraus nur noch schnell ein Plugin für WordPress machen, da ich bislang jedoch mit WordPress nur sehr wenig zu tun hatte (nur als Testblog unter Localhost), musste ich erst einmal einen Testblog unter einer neuen Domain einrichten.
Eigentlich lässt der sich ja schon nur mit einen kleinen Short-Tag [feadlesershorts feedseite = "feed_01"] einfach in eine beliebige WP-Seite einbinden (nachdem der im Plugin-Verzeichnis abgelegt und das Plugin im Dashboard aktiviert wurde), nur habe ich da nicht gleich den Unterschied zwischen site_url und home_url und noch ein paar anderen Kleinigkeiten begriffen, jetzt schon. Falls nichts dazwischen kommt, so werde ich den wohl in spätestens einer Woche oder so als Plugin für WP mit zum Download anbieten.

Edit: Mir fällt gerade noch ein, bei der Funktion mit mb_convert_encoding müsste der Zeichensatz dann wohl auch noch in windows-1252 geändert werden. Alles nur auf Verdacht, habe nichts getestet.

28.07.2013 17:35 | geändert: 28.07.2013 17:49

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]