skrypt generatora rss na stronke - nie dziala

0

witam forum
mam prosbe o przegladniecie tego skryptu ma on wyswietlic na stronie kanał z podanego w kodzie url-a.
niestety efekt jest taki ze wypisuje iz nie moze sie polaczyc.
slabo sie znam na php a na pewno nie na tyle by szybko wychwicic blad.

prosba o pomoc. doswiadczonej osobie nie powinno zajac to wiecej niz 5 minut. skrypt sciagnalem ze stronki.

z gory dziekuje

<?php

  #===========================================
  # Silnik tego skryptu zapożyczony został z czytnika RSS w wersji PHP z
  # oprogramowania RSS GET, oryginalna wersja programu na stronie: http://www.aarondunlap.com
  #===========================================

  $czas = 30; // Co ile ma być aktualizacja
  
  $folder = "rss/"; // Adres folderu, w którym znajdować się będą pliki z newsami.
  
  $adres = "http://www.roob.pl/backend.php"; // Adres URL do kanału RSS
  $nazwa_kanalu = "moj wlasny kanal | Wiadomosci ze swiata IT"; // Tytuł kanału RSS
  $liczba = 10; // Ilośc nagłówków newsów, które mają być wyswietlane
  $target = "_blank"; // Opcja target="" dla newsów, możliwe: "_self" oraz "_blank"
  $autoupdate = TRUE;
  $trunc = FALSE;
  $delim = FALSE;
  
  if (isset($_GET['rssHeadline'])) { $rssHeadline = $_GET['rssHeadline'];}
  $basefile = $folder;
  $folder .= md5($adres).".htm"; // Przygotowywanie nazw plików dla danego kanału

  #==========================
  # Operacje związane ze sprawdzaniem aktualności nagłówków w pliku tekstowym
  #==========================

  if (($czas > 0) && (is_file($folder)) && (((time()-filemtime($folder)) < ($czas * 60)))) {
  	include $folder;
	$time = floor((time()-filemtime($folder)) / 60); // Sprawdza ile minut temu plik był aktualizowany
       
  } elseif (@fopen($adres,"r")) { // Sprawdza czy ma dostęp do kanału RSS

  	  #==========================
	  # Operacja związane z dodawaniem nowego nagłówka do pliku
	  #==========================

	  $rssHandle = fopen($adres,"r") ; // Otwiera plik kanału RSS

	  while (!feof($rssHandle)) {
	  	$rssData .= fgets($rssHandle);
	  }

	  #==========================
	  # Przygotowywanie newsa do włączenia do pliku
	  #==========================
	  $tag = "item ";
	  $rssData =  preg_replace("/<" . $tag . "(.|\s)*?>/","<item>",$rssData);
	  $rssData = chop($rssData); // Usuwanie pustych spacji z końca linijek   
	  $rssData = ereg_replace("[\r,\n]", "", $rssData); // Usuwwanie pustych linijek
	  $rssData = strstr($rssData,"<item>"); // Usuwanie wszystie przez <item>.

	  #==========================
	  # Usuwanie zbędnych elemntów tak aby okrojona zawartość mogła zostać zapisana w pliku

	  # Tagi <description></description> zostają pominięte
	  #==========================	  
	  $tags_and_content_to_strip = Array("description");

	  foreach ($tags_and_content_to_strip as $tag) {
	       $rssData = preg_replace("/<" . $tag . ">(.|\s)*?<\/" . $tag . ">/","",$rssData);
	  }

	  $rssData = str_replace("<item>","", $rssData); // usuwanie tagu <item>
	  $rssData = urldecode($rssData); // Zamiana wszystkich: %20 na spacje.
	  $rssData = str_replace(strstr("</channel>",$rssData),"",$rssData);
	  $rssArray = explode("</item>",$rssData); // Tworzenie tablicy z nagłówkami
  
  	  $title = array();
	  $link = array();

	  #==========================
	  # Ten mechanizm tworzy tablice dla linków oraz nagłówków
	  #==========================  
	  $x = 0;
	  while($x < $liczba) {
  		$link[$x] = strstr($rssArray[$x],"<link>"); // usuwanie wszystkiego przed <link>
		$link[$x] = ereg_replace("<link>","",$link[$x]); 
 		$link[$x] = str_replace(strstr($link[$x],"</link>"),"",$link[$x]);
	 	$link[$x] = trim($link[$x]);
		$title[$x] = strstr($rssArray[$x],"<title>");
  		$title[$x] = ereg_replace("<title>","",$title[$x]); // Usuwanie <title> z części tytułu newsa
	  	$title[$x] = str_replace(strstr($title[$x],"</title>"),"",$title[$x]); //  Usuwanie </title> oraz wszystkiego poza nim
	  	$title[$x] = trim($title[$x]);
		
		if ($trunc != FALSE) { $title[$x] = str_replace(substr($title[$x],$trunc),"",$title[$x]); }
		if ($delim != FALSE) { $title[$x] = str_replace(strstr($title[$x],$delim),"",$title[$x]); }
        
        	if ($title[$x] == "") { $liczba = $x; break; } // Gdy już nie ma nagłówków zmienna $liczba przyjmuje wartość maksumalną.
		$x++;
	  }

	  #==========================
	  # Zapis do pliku
	  #==========================
	  $fp = fopen($folder, "w+");
	  $x=0;  
	  fwrite($fp,"<b><span class=\"displayname\">$nazwa_kanalu</span></b> \n"); // zapisywanie do pliku

	  while ($x < $liczba) { // ta pętla zapisuje każdy link osobno.
  		fwrite($fp,"<br>\n-<a class=\"headlinellink\" target=\"$target\" href=\"$link[$x]\">$title[$x]</a>");
		$x++;
	  }
	 fclose($fp);
	 include $folder;

 } else { 
	#==========================
	# Zwracanie błędu gdy podany adres jest błędny.
	#==========================
	echo "<b>Nie mozna połączyć się z adresem: $adres. </b>";

}

?>
0

:| Skrypt działa bez zarzutu, nie musisz go rozumieć, wystarczy, że przeczytasz komentarze...

gurniksson napisał(a)

$folder = "rss/"; // Adres folderu, w którym znajdować się będą pliki z newsami.

musisz tylko utworzyć w katalog "rss" w katalogu w którym masz plik z tym skryptem...

0

folder mam utworzony, zastanawiam sie czy to cos z moim serwerem moze jest nie tak, moze ma jakies ograniczenia w obsludze php, albo zle prawa dostepu do pliku. nie wiem troche cieszy fakt ze komus to chodzi :). przeniose plik na jakis inny serwerek i sprawdze. przy okazji chodzilo Ci przy tym samym kanale : jakimś: http://www.roob.pl/backend.php ?

0

@fopen($adres,"r");

Prawdopodobnie zablokowana funkcja fopen dla adresów zewnętrznych (safe_mode).

0

Tak, chodziło mi na tym kanale...

0

hmmm ;)

@fopen($adres,"r");

to jak to naprawić?

0

Napisz dokladnie komunikat jaki wyświetla przeglądarka

0

dokladny komunikat:

Nie mozna połšczyć się z adresem: http://www.roob.pl/backend.php.

mozliwe ze Nav ma racje tylko niewiem jak udostepnic te adresy zewnetrzne

0

w ustawieniach php. Usuń @ sprzed tej funkcji i sprawdz czy wyrzuci błąd php.

0

Możliwe, że nav ma racje, ale to chyba nie ten komunikat.
W każdym razie, jeżeli to twój serwer, możesz w php.ini zmienic safe_mode:safe_mode=offjednak ja myśle, że nie oto chodzi...

Taki komunikat wyskakuje jak scieżka do pliku jest błędna, spróbuj podać zamiast tego kanału swój kanał...

0

dzieki juz spoko na krasnalu mi chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1