Hallo zusammen,
ein Freund von mir hat ein Modul geschrieben, mit dem man RSS-News in die eigene Seite einbinden kann. Ich weiss, dass es hier im Downloadbereich auch so etwas gibt, aber ehrlich gesagt, war mir das Modul hier zu umstaendlich, denn bei Updates muss auch wieder die config-Datei z.B. geaendert werden etc. Wie dem auch sei, das ist auch nicht das Thema hier.
INPUT:
Code: Alles auswählen
// pick newsfeed
// (c) 2004 m. schwarz
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr>
<td>RDF Url:</td>
<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\"></td>
</tr><tr>
<td>powered by:</td>
<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\"></td>
</tr><tr>
<td>powered by link:</td>
<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\"></td>
</tr></table>";
OUTPUT:
Code: Alles auswählen
<?php
$feed = 'CMS_VALUE[0]';
//examples:
//$file = 'http://www.heise.de/newsticker/heise.rdf';
//$file = 'http://www.silicon.de/feed/security.rdf';
//$file = 'http://www.n24.de/rss/?rubrik=home';
$f = fopen($feed,'r');
$ff = fread($f,65535);
fclose($f);
$parser = xml_parser_create();
xml_parse_into_struct($parser,$ff,$values,$index);
xml_parser_free($parser);
//print_r($index);echo "<br><br>";
//print_r($values);
$pointer = 0;
for ($i=0;$i<=sizeof($values);$i++) {
if ($values[$i][tag]=='TITLE') {
$linktitle[$pointer] = $values[$i][value];
}
if ($values[$i][tag]=='LINK') {
$linkurl[$pointer] = $values[$i][value];
$pointer++;
}
}
?>
<table cellspacing="0" cellpadding="5" border="0" width="290" style="border: 1px; border-color: #4779a0; border-style: solid">
<tr>
<td style="border: 1px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px" class="headline">
<?php echo "CMS_HEAD[0]";
?></td>
</tr>
<?php
for ($i=1;$i<=sizeof($linktitle)-1;$i++) {
echo '
<tr><td class="text" style="border: 1px; border-top:0px; border-color: #4779a0; border-style: solid; padding-left:10px">
<a href="' . $linkurl[$i] . '" target=_blank>' . $linktitle[$i] .'</a></td></tr>';
}
?>
<tr><td class="small" style="border: 1px; border-top:0px; border-color: #4779a0; border-style: solid; padding-left:10px; background-color: #D5E6F5">Diese News werden von <a class="klein" href="<?php echo "CMS_VALUE[3]"; ?>" target=_blank><?php
echo "CMS_VALUE[2]"; ?></a> zur Verfügung gestellt.</td></tr>
</td></tr>
</table>
Ich weiss, man kann es auch schoener machen
, aber es wuerde mir so reichen, wenn es so funktionieren wuerde.
Meine Domain ist bei profihost.com, besagter Freund hat einen root-Server bei Strato. Bei ihm funktionieren die News von
http://www.n24.de/rss/?rubrik=home ohne Probleme, bei mir funktionieren sie nur sporadisch, soll heissen: Wenn ich die Seite lade, erscheinen die ersten zwei Schlagzeilen, wenn ich reload mache, erscheinen manchmal auch vier Schlagzeilen, manchmal bleibt es bei zwei. Bei erneutem Reload sind dann wieder zwei, wenn es vorher vier waren. Dieses Verhalten ist leider nicht reproduzierbar. Ich habe die Kommentarzeichen am Anfang der Debug-Zeile 'print_r($values);' entfernt, und so stellten wir fest, dass die Daten nicht vollstaendig uebetragen werden, aber wir haben keine Ahnung, woran das liegen koennte. Wir hatten schon der Verdacht, dass mein Provider irgendwelche merkwuerdigen Einschraenkungen bezueglich PHP haben koennte, die z.B. die Laenge der Variablen begrenzen o.ae.
Was mich jetzt interessiert ist, ob jemand das vielleicht bei einem anderen Provider ausprobieren kann und mir sagt, ob es dort mit oder ohne Probleme funktioniert. Wir haben auf den beiden Servern allerdings unterschiedliche PHP- (bei mir 4.3.3, bei ihm 4.2.2) und MySQL-Versionen (bei mir 4.0.16-standard, bei ihm 3.23.52-log), koennte es auch am unterschiedlichen PHP liegen? Vielleicht sieht auch jemand im Code eine Stelle, wo ein PHP-Experte gleich sagen kann 'was ist das fuer ein Bloedsinn? Der Fehler liegt daran!'
Wir sind leider ratlos.
Ich weiss auch nicht, ob das Thema hier richtig untergebracht ist, aber im Augenblick habe ich den Verdacht, dass es am Provider liegt, auch wenn irgendwelche dummen Seiteneffekte nicht auszuschliessen sind.