skrypt generatora rss na stronke - nie dziala

Odpowiedz Nowy wątek
gurniksson
2006-10-19 20:22
gurniksson
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>";

}

?>

Pozostało 580 znaków

2006-10-19 22:14

Rejestracja: 13 lat temu

Ostatnio: 11 lat temu

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...


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

gurniksson
2006-10-19 22:27
gurniksson
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 ?

Pozostało 580 znaków

nav
2006-10-19 22:31
nav

Rejestracja: 16 lat temu

Ostatnio: 1 tydzień temu

Lokalizacja: Warszawa

0

@fopen($adres,"r");

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


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2006-10-19 22:34

Rejestracja: 13 lat temu

Ostatnio: 11 lat temu

0

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


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

gurniksson
2006-10-19 22:36
gurniksson
0

hmmm ;)

@fopen($adres,"r");

to jak to naprawić?

Pozostało 580 znaków

2006-10-19 22:38

Rejestracja: 13 lat temu

Ostatnio: 11 lat temu

0

Napisz dokladnie komunikat jaki wyświetla przeglądarka


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

gurniksson
2006-10-19 22:42
gurniksson
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

Pozostało 580 znaków

nav
2006-10-19 22:50
nav

Rejestracja: 16 lat temu

Ostatnio: 1 tydzień temu

Lokalizacja: Warszawa

0

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


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2006-10-19 23:30

Rejestracja: 13 lat temu

Ostatnio: 11 lat temu

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ł...


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

gurniksson
2006-10-20 00:18
gurniksson
0

dzieki juz spoko na krasnalu mi chodzi.

Pozostało 580 znaków

Odpowiedz

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

Robot: CCBot