Menü

  Login

  Shoutbox

  Forum » Fragen zu Ilch » Andere Dinge » RSS-Feed-Script für PHP 5.4


RSS-Feed-Script für PHP 5.4
MiBo73
Jungspund

User Pic

Posts: 45
# 05.12.2012 - 07:27:55
    zitieren



Da mein Provider die Unterstüzung für PHP4 in 3 Monaten abschaltet, benötige ich ein RSS-Modul, welches auf PHP5 läuft.
Das aktuelle von der ILCH-Seite ist dazu nicht in der Lage. Dort kommt die Meldung:

 Zitat
Warning: file() [function.file]: URL file-access is disabled in the server configuration in /homepages/37/d218871940/htdocs/verein/include/boxes/rss_news_box.php on line 30

Warning: file(http://www.dvg-hundesport.de/dvg/xml/rss) [function.file]: failed to open stream: no suitable wrapper could be found in /homepages/37/d218871940/htdocs/verein/include/boxes/rss_news_box.php on line 30

Warning: join() [function.join]: Invalid arguments passed in /homepages/37/d218871940/htdocs/verein/include/boxes/rss_news_box.php on line 30


WO kann ich ansetzen, oder gibt es ein Rwapper, den ich in die Datei integrieren kann?

Gruß
Michael
MiBo73
Jungspund

User Pic

Posts: 45
# 05.12.2012 - 07:37:41
    zitieren



Habe selber was gefunden.
In dem Verzeichniss wo die index.php aufgerufen wird muss ein Datei php.ini mit dem folgenden Inhalt rein, schon klappt es:
 Zitat
allow_url_fopen=1
MiBo73
Jungspund

User Pic

Posts: 45
# 23.01.2013 - 08:38:55
    zitieren



Leider doch nicht gelöst.
Der Feed wird zwar aufgebaut, aber der Link funktioniert nicht.

Seite: http://www.dvg-mv-oberhausen-buschhausen.de

Link der zum Feed erstellt wird:
 Code
1:
 http://www.dvg-hundesport.de/file/d7ea771b3b7f46be013c482321891c33.de.0/unser_rassehund.pdfhttp://www.dvg-hundesport.de/file/d7ea771b3b7f46be013c482321891c33.de.0/unser_rassehund.pdfDie%20VDH-Zeitung,%20Unser%20RASSEHUND,%20Kann%20künftig%20preisgünstig%20über%20den%20DVG%20.e.V.%20bezogen%20werden]]%3EThu,%2017%20Jan%202013%2011:53:14%20+0100info@dvg-hundesport.de%20(DVG)


Enden sollte der Link hinter http://www.dvg-hundesport.de/file/d...c33.de.0/unser_rassehund.pdf´

Woher kommt das?
Gibt es eine andere RSS-News-Box für PHP5 schon?


Zuletzt modifiziert von Mairu am 23.01.2013 - 22:13:15
Mairu
Administrator

User Pic

Posts: 1908
# 23.01.2013 - 19:10:17
    zitieren



Das hat nix mit der PHP Version zu tun.

Das liegt dann eher an dem verwendeten rss reader oder dem rss feed, den du liest.
Was verwendest du denn?
MiBo73
Jungspund

User Pic

Posts: 45
# 23.01.2013 - 21:09:33
    zitieren



Ich nutze die rss_news_box von der Ilch-Seite. mit PHP4 ging aslles, da der Provider aber kein PHP4 mehr unterstützt, muste ich eine lösung für PHP5 finden. mit dem EIntrag in der php.ini wird der Feed zumindest schoin mal ausgelesen, aber halt der Link nicht richtig gesetzt.
Mairu
Administrator

User Pic

Posts: 1908
# 23.01.2013 - 23:18:13
    zitieren



Wenn etwas unklar sein sollte, einfach schreiben.

 Php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
  <?php
/**
 * RSS Box
 * 
 * @copyright Mairu
 */
defined('main') or die('no direct access');

//Konfiguration

// Gibt den Pfad zum RSS Feed an
$rssLink 'http://www.dvg-hundesport.de/dvg/xml/rss';
// Trennzeichen zwischen einzelnen Links
$delimiter '<br />-----------<br />';
// Anzahl angezeigter Feeds
$feedsToShow 5;
// Caching sollte, wenn möglich aktiviert werden!
$caching true;
// Datei (im boxes Ordner, benötigt Schreibrechte)
$cacheFile 'rss_cache.tmp';
// Vorhaltezeit in Sekunden
$cacheDuration 300;

// Konfiguration Ende

// Nichts unter der Zeile ändern, wenn man nicht weiß, was man macht
$cacheFile dirname(__FILE__) . DIRECTORY_SEPARATOR $cacheFile;
$writeCache false;
$readRSS true;
if (
$caching) {
    if (!
is_writeable($cacheFile)) {
        echo 
'Fehler: Cachedatei nicht schreibbar.<br />';
    } else {
        if (
filemtime($cacheFile) < (time() - $cacheDuration)) {
            
$writeCache true;
        } else {
            
readfile($cacheFile);
            
$readRSS false;
        }
        
    }
}

if (
$readRSS) {
    
$xml = new SimpleXMLElement($rssLinknulltrue);
    if (empty(
$xml->item)) {
        
$items $xml->channel->item;
    } else {
        
$items $xml->item;
    }
    
$x 0;
    
$output '';
    foreach (
$items as $item) {
        
$output .= '<a href="' $item->link '" title="'
            
htmlspecialchars(utf8_decode($item->description), ENT_COMPAT'ISO-8859-1')
            . 
'">'
            
htmlspecialchars(utf8_decode($item->title), ENT_COMPAT'ISO-8859-1') . '</a>';
        
$x++;
        if (
$x) {
            if (
$x == $feedsToShow) {
                break;
            }
            
$output .= $delimiter;
        }
    }
    echo 
$output;
    
    if (
$writeCache) {
        
file_put_contents($cacheFile$output);
    }

}
MiBo73
Jungspund

User Pic

Posts: 45
# 24.01.2013 - 04:48:10
    zitieren



die rss_cache.tmp hat die Rechte 777 bekommen. Leider werden keine Feeds angezeigt.
ICh habe nun das Caching auf false gesetzt, nun zeigt er mir die Feeds an, aber ohne Trennzeichen. als Trennzeichen habe ich " - "gesetzt.
Unter Echo habe ich das Logo vom Verband eingetragen, daher habe ich das auch geändert.

Ich habe in der Datei nun folgendes:

 Php von Datei rss_news_box.php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
  <?php 

/** 
 * RSS Box 
 *  
 * @copyright Mairu 
 */ 
defined('main') or die('no direct access'); 

   
//Konfiguration 

// Gibt den Pfad zum RSS Feed an 
$rssLink 'http://www.dvg-hundesport.de/dvg/xml/rss'
// Trennzeichen zwischen einzelnen Links 
$delimiter ' - '
// Anzahl angezeigter Feeds 
$feedsToShow 5
// Caching sollte, wenn möglich aktiviert werden! 
$caching false
// Datei (im boxes Ordner, benötigt Schreibrechte) 
$cacheFile 'rss_cache.tmp'
// Vorhaltezeit in Sekunden 
$cacheDuration 300

// Konfiguration Ende 

// Nichts unter der Zeile ändern, wenn man nicht weiß, was man macht 
$cacheFile dirname(__FILE__) . DIRECTORY_SEPARATOR $cacheFile
$writeCache false
$readRSS true
if (
$caching) { 
    if (!
is_writeable($cacheFile)) { 
        echo 
'Fehler: Cachedatei nicht schreibbar.<br />'
    } else { 
        if (
filemtime($cacheFile) < (time() - $cacheDuration)) { 
            
$writeCache true
        } else { 
            
readfile($cacheFile); 
            
$readRSS false
        } 
         
    } 


if (
$readRSS) { 
    
$xml = new SimpleXMLElement($rssLinknulltrue); 
    if (empty(
$xml->item)) { 
        
$items $xml->channel->item
    } else { 
        
$items $xml->item
    } 
    
$x 0
    
$output ''
    foreach (
$items as $item) { 
        
$output .= '<a href="' $item->link '" title="' 
            
htmlspecialchars(utf8_decode($item->description), ENT_COMPAT'ISO-8859-1')
             . 
'">' 
            
htmlspecialchars(utf8_decode($item->title), ENT_COMPAT'ISO-8859-1') . '</a>';
         
$x++; 
        if (
$x) { 
            if (
$x == $feedsToShow) { 
                break; 
            } 
            
$output .= $delimiter
        } 
    } 
    echo 
'<table>
          <tr>
          <td><center /><a href="http://www.dvg-hundesport.de/" title="DVG Hundesport" target="_blank" /><img src="include/images/news/dvg.gif" border="0" align="top" alt="DVG" /></a /></center /></td>
          <td>'
.$output.'</td>
          </tr>
          </table>'
;

     
    if (
$writeCache) { 
        
file_put_contents($cacheFile$output); 
    }




Zuletzt modifiziert von MiBo73 am 24.01.2013 - 04:49:00
Mairu
Administrator

User Pic

Posts: 1908
# 24.01.2013 - 07:07:24
    zitieren



Das mit dem Caching ist etwas verzwickt, wenn man es installiert, da die letzte Änderung der Datei, wenn man sie anlegt keine 5 Minuten zurück liegt, wird der Cache als neu genug erkannt und ausgegeben, ist aber noch leer. (Aber nur in den ersten 5 Minuten, ggf. die Cachezeit für den Augenblick mal auf 1 Sekunde veringern).

Das Trennzeichen wird im Code ausgegeben, allerdings hast du dort die Farbe auf weiß gesetzt. (müsste in der index.htm)

Und wegen deinem HTML, statt es bei dem Echo zu machen, müsstest du es so machen.

$output = '<deinhtml1>' . $output . '</deinhtml1>';
echo $output;

damit der Cache auch dein hinzugefügtes HTML enthält.
MiBo73
Jungspund

User Pic

Posts: 45
# 24.01.2013 - 10:10:00
    zitieren



Danke, das wars, nun geht es wieder.
Cache ist auch wieder aktiviert, da die Datei heute morgen schon angelegt wurde...