Seite 1 von 1

rss reader mit simplexml und allow_urlopen off

Verfasst: Fr 1. Aug 2008, 19:56
von mittax
Hallo Zusammen,

Ich habe das Modul RSS-Reader auf simplexml umgestellt. Nun läuft der RSS Reader auch mit abgeschaltetem apache allow_url_open.
Die Funktion get_document liest das xml per Get-Request ein.


Als RSS-Feed habe ich Heise.de verwendet. Ihr solltet also Eure Items anpassen.

Sonderzeichen etc werden utf8_decoded

OUTPUT

Code: Alles auswählen

<?php

cInclude("pear", "XML/Parser.php");
cInclude("pear", "XML/RSS.php");
  
function get_document($url) {

    $content = '';
    $is_header = TRUE;

    $base_url = parse_url($url);

    if ($fp = @fsockopen($base_url['host'], 80, $errno, $errstr, 5)) {

        if (!empty($base_url['query'])) {
            $query = '?'.$base_url['query'];
        } else {
            $query = '';
        }

        $data = 'GET '.$base_url['path'].$query." HTTP/1.0\r\n".
                        'Host: '.$base_url['host']."\r\n".
                        "Connection: Close\r\n\r\n";

        stream_set_timeout($fp, 5);

        fputs($fp, $data);

        while(!feof($fp)) {

        $line = fgets($fp, 4096);

        if (!$is_header) {

            $content .= $line;

        } else {

            if (strlen(trim($line)) == 0) {

                $is_header = FALSE;

            }

            }

        }

        fclose($fp);
        return $content;
       



    } else {

        return FALSE;

    }

} 

if ("CMS_VALUE[0]" == "")
{
  $sFeed = "http://www.contenido.org/rss/de/news";
} else {
  $sFeed = "CMS_VALUE[0]";
}

if ("CMS_VALUE[2]" == "")
{
  $FeedMaxItems = 999;
} else {
	$FeedMaxItems = intval("CMS_VALUE[2]");
} 


$sFeedContent = get_document($sFeed);
$rss_feed = simplexml_load_string($sFeedContent);
$tpl = new Template;

$i = 0;

foreach ($rss_feed->entry as $item)
{

	if ($i < $FeedMaxItems) {
	    $tpl->set("d", "TITLE", htmlentities(utf8_decode($item->title),ENT_QUOTES));
    	    $tpl->set("d", "LINK", htmlentities(utf8_decode($item->id),ENT_QUOTES));
            $tpl->set("d", "UPDATED", htmlentities(utf8_decode($item->updated),ENT_QUOTES));
    	    $tpl->set("d", "DESCRIPTION", htmlentities(utf8_decode($item->sumaray),ENT_QUOTES));
    	    $tpl->set("d", "READ_ON", mi18n("weiterlesen"));
	    $tpl->next();
	}
	$i++;
}

$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/"."CMS_VALUE[1]");
?>




Verfasst: So 3. Aug 2008, 19:11
von Mc
Hallo mittax,

danke. Ist genau das, was ich eben gesucht habe. Ich habe aus Sicherheitsgründen allow_url_open auf off gestellt und auf 4.8.7 ein upgrade durchgeführt.

Wenn ich in der Konfiguration des Artikels als url "http://www.sportgate.de/rss/handball/rss.xml" eingebe, dann wird überhaupt nichts angezeigt, wenn ich die url leer lasse, dann kommt eine Reihe von Fehlermeldungen.

Siehe http://www.webec.de

Gruß
Mc

Hallo

Verfasst: Di 23. Sep 2008, 09:56
von mittax
Hallo ,

Schau mal nach den Items, ob diese im XML vorkommen. Wenn ja mach mal ein echo auf $content und schau, ob was ankommt.

if ($i < $FeedMaxItems) {
$tpl->set("d", "TITLE", htmlentities(utf8_decode($item->title),ENT_QUOTES));
$tpl->set("d", "LINK", htmlentities(utf8_decode($item->id),ENT_QUOTES));
$tpl->set("d", "UPDATED", htmlentities(utf8_decode($item->updated),ENT_QUOTES));
$tpl->set("d", "DESCRIPTION", htmlentities(utf8_decode($item->sumaray),ENT_QUOTES));
$tpl->set("d", "READ_ON", mi18n("weiterlesen"));
$tpl->next();
}
$i++;

Gruss

mittax

Verfasst: Mo 3. Nov 2008, 12:03
von hohorstmann
Da ich auch mit dem RSS-Reader "rumkämpfe", habe ich Dein Output-Modul eingesetzt und bei mir auch Dein letztes Posting überprüft. Angezeigt wird nichts. Kann es sein, dass trotzdem 1&1 noch das Problem ist?
Contenido 4.8.8. bei 1&1
im RSS-Reader gibt es folgende Einstellungen:
URL: http://rss.feedsportal.com/c/728/f/9463/index.rss (das ist vom STERN, ich habe aber auch zig andere eingestellt)
rss-Template: rss_template.html
Anzahl Einträge: 10

Gebe ich keine URL ein, dann gibt´s im Front-End den Fehler: /homepages/40/d..../htdocs/cms/templates/
Gruß, Ho

Verfasst: Fr 7. Nov 2008, 14:32
von Andreas
Hallo zusammen,

gibt es zu dem Problem eine Lösung?
Bei mir ist es ähnlich:
- Demoseite funktionierte
- Neues Layout... nichts wird mehr angezeigt.

Es kann doch kein 1&1 Problem sein, wenn es zuvor in der Demoversion geklappt hat.

Verfasst: Fr 7. Nov 2008, 15:25
von hohorstmann
Na ja, wir berühren dort sensible Stellen im Zusammenspiel von CONTENIDO und dem Provider, die Sicherheitslücken betreffen (Stichwort Code Injection).
Nach dem Lesen von zig Threads hier im Forum und viel "ausprobieren" habe ich keine Lösung gefunden, obwohl eine solche hier und da veröffentlicht wird. Da ich mir nicht sicher bin, ob es ein CONTENIDO-Thema ist, wollte ich es hier im Forum nicht weiter behandeln. Es ist ja auch umfangreich beschrieben.
Da ich nicht der PHP-Spezi bin, verstehe ich zwar den Inhalt und habe mich auch an der Umsetzung probiert, aber wie gesagt ..
Also gebe ich auf und muss meinem Kunden erklären, warum ich das jetzt mit CONTENIDO doch nicht kann". So´n Sch...

Resümee: RSS-Reader bei 4.8.8 geht nicht !??

Verfasst: Fr 7. Nov 2008, 15:48
von Andreas
hohorstmann hat geschrieben: Also gebe ich auf und muss meinem Kunden erklären, warum ich das jetzt mit CONTENIDO doch nicht kann". So´n Sch...

Resümee: RSS-Reader bei 4.8.8 geht nicht !??
Das kann es doch aber nicht sein!
Eine neue Contenido-Version und eine so wichtige Funktion kann nicht mehr genutzt werden???
Das kann man dem Kunden doch nicht wirklich erklären.

Zumal es ja bei der Demo-Version klappt!
Gibt es denn wirklich niemand, der sich mit dem Problem schon befasst und eine Lösung hat?

Re: rss reader mit simplexml und allow_urlopen off

Verfasst: Mi 6. Mai 2009, 12:45
von MakD42
Hy,

habe die Änderung eingebaut! Dabei habe ich festgestellt, dass nur "ATOM" RSS wie z.B. von Heise laufen.
Alle anderen (RSS 2.0 o.ä.) funktionieren nicht.

Könnte das ein Anhalt für die finale Lösung mit dem RSS Modul geben?

Re: rss reader mit simplexml und allow_urlopen off

Verfasst: Di 20. Okt 2009, 11:14
von funomat
Gibt es für dieses Problem wirklich keine Lösung?? Wie kann es sein, dass im Contenido Backend die Contenido-Eigenen RSS-Nachricht gelesen werden können, das selbe im Modul aber nicht funktioniert?