Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php]rss
darkowski
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


Witam ściągłem z sieci czytnik rss ale jak zmieniam kanał na ten co bym chciał to nie działa

rss.php
  1. <?php
  2.  
  3.  #===========================================
  4.  # Silnik tego skryptu zapo&iquest;yczony zosta&sup3; z czytnika RSS w wersji PHP z
  5.  # oprogramowania RSS GET, oryginalna wersja programu na stronie: http://www.aarondunlap.com
  6.  #===========================================
  7.  
  8.  $czas = 1; // Co ile ma by&aelig; aktualizacja
  9.  
  10.  $folder = "rss/"; // Adres folderu, w którym znajdowa&aelig; si&ecirc; b&ecirc;d&sup1; pliki z newsami.
  11.  
  12.  $adres = "http://www.sport24.pl/feed/pilka.xml"; // Adres URL do kana&sup3;u RSS
  13.  $nazwa_kanalu = "Wiadomości sportowe"; // Tytu&sup3; kana&sup3;u RSS
  14.  $liczba = 10; // Iloœc nag&sup3;ówków newsów, które maj&sup1; by&aelig; wyswietlane
  15.  $target = "_blank"; // Opcja target="" dla newsów, mo&iquest;liwe: "_self" oraz "_blank"
  16.  $autoupdate = TRUE;
  17.  $trunc = FALSE;
  18.  $delim = FALSE;
  19.  
  20.  if (isset($_GET['rssHeadline'])) { $rssHeadline = $_GET['rssHeadline'];}
  21.  $basefile = $folder;
  22.  $folder .= md5($adres).".htm"; // Przygotowywanie nazw plików dla danego kana&sup3;u
  23.  
  24.  #==========================
  25.  # Operacje zwi&sup1;zane ze sprawdzaniem aktualnoœci nag&sup3;ówków w pliku tekstowym
  26.  #==========================
  27.  
  28.  if (($czas > 0) && (is_file($folder)) && (((time()-filemtime($folder)) < ($czas * 60)))) {
  29.   include $folder;
  30. $time = floor((time()-filemtime($folder)) / 60); // Sprawdza ile minut temu plik by&sup3; aktualizowany
  31.      
  32.  } elseif (@fopen($adres,"r")) { // Sprawdza czy ma dost&ecirc;p do kana&sup3;u RSS
  33.  
  34.     #==========================
  35.   # Operacja zwi&sup1;zane z dodawaniem nowego nag&sup3;ówka do pliku
  36.   #==========================
  37.  
  38.   $rssHandle = fopen($adres,"r") ; // Otwiera plik kana&sup3;u RSS
  39.  
  40.   while (!feof($rssHandle)) {
  41.    $rssData .= fgets($rssHandle);
  42.   }
  43.  
  44.   #==========================
  45.   # Przygotowywanie newsa do w&sup3;&sup1;czenia do pliku
  46.   #==========================
  47.   $tag = "item ";
  48.   $rssData =  preg_replace("/<" . $tag . "(.|s)*?>/","<item>",$rssData);
  49.   $rssData = chop($rssData); // Usuwanie pustych spacji z ko&ntilde;ca linijek  
  50.   $rssData = ereg_replace("[r,\n]", "", $rssData); // Usuwwanie pustych linijek
  51.   $rssData = strstr($rssData,"<item>"); // Usuwanie wszystie przez <item>.
  52.  
  53.   #==========================
  54.   # Usuwanie zb&ecirc;dnych elemntów tak aby okrojona zawartoœ&aelig; mog&sup3;a zosta&aelig; zapisana w pliku
  55.  
  56.   # Tagi <description></description> zostaj&sup1; pomini&ecirc;te
  57.   #==========================  
  58.   $tags_and_content_to_strip = Array("description");
  59.  
  60.   foreach ($tags_and_content_to_strip as $tag) {
  61.        $rssData = preg_replace("/<" . $tag . ">(.|s)*?</" . $tag . ">/","",$rssData);
  62.   }
  63.  
  64.   $rssData = str_replace("<item>","", $rssData); // usuwanie tagu <item>
  65.   $rssData = urldecode($rssData); // Zamiana wszystkich: %20 na spacje.
  66.   $rssData = str_replace(strstr("</channel>",$rssData),"",$rssData);
  67.   $rssArray = explode("</item>",$rssData); // Tworzenie tablicy z nag&sup3;ówkami
  68.  
  69.     $title = array();
  70.   $link = array();
  71.  
  72.   #==========================
  73.   # Ten mechanizm tworzy tablice dla linków oraz nag&sup3;ówków
  74.   #==========================  
  75.   $x = 0;
  76.   while($x < $liczba) {
  77.    $link[$x] = strstr($rssArray[$x],"<link>"); // usuwanie wszystkiego przed <link>
  78.  $link[$x] = ereg_replace("<link>","",$link[$x]);
  79.   $link[$x] = str_replace(strstr($link[$x],"</link>"),"",$link[$x]);
  80.   $link[$x] = trim($link[$x]);
  81.  $title[$x] = strstr($rssArray[$x],"<title>");
  82.    $title[$x] = ereg_replace("<title>","",$title[$x]); // Usuwanie <title> z cz&ecirc;œci tytu&sup3;u newsa
  83.    $title[$x] = str_replace(strstr($title[$x],"</title>"),"",$title[$x]); //  Usuwanie </title> oraz wszystkiego poza nim
  84.    $title[$x] = trim($title[$x]);
  85.  
  86.  if ($trunc != FALSE) { $title[$x] = str_replace(substr($title[$x],$trunc),"",$title[$x]); }
  87.  if ($delim != FALSE) { $title[$x] = str_replace(strstr($title[$x],$delim),"",$title[$x]); }
  88.        
  89.         if ($title[$x] == "") { $liczba = $x; break; } // Gdy ju&iquest; nie ma nag&sup3;ówków zmienna $liczba przyjmuje wartoœ&aelig; maksumaln&sup1;.
  90.  $x++;
  91.   }
  92.  
  93.   #==========================
  94.   # Zapis do pliku
  95.   #==========================
  96.   $fp = fopen($folder, "w+");
  97.   $x=0;  
  98.   fwrite($fp,"<b><span class=\"displayname\">$nazwa_kanalu</span></b> \n"); // zapisywanie do pliku
  99.  
  100.   while ($x < $liczba) { // ta p&ecirc;tla zapisuje ka&iquest;dy link osobno.
  101.    fwrite($fp,"<br>\n-<a class=\"headlinellink\" target=\"$target\" href=\"$link[$x]\">$title[$x]</a>");
  102.  $x++;
  103.   }
  104.  fclose($fp);
  105.  include $folder;
  106.  
  107. } else {
  108. #==========================
  109. # Zwracanie b&sup3;&ecirc;du gdy podany adres jest b&sup3;&ecirc;dny.
  110. #==========================
  111. echo "<b>Nie mozna po&sup3;&sup1;czy&aelig; si&ecirc; z adresem: $adres. </b>";
  112.  
  113. }
  114.  
  115. ?>


Wychodzi mi takie coś:

Wiadomości sportowe
-
-
-
-
-
-
-
-

Może mi ktoś pomóc?
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zmień bibliotekę parsującą zawartość. Wynajduje koło na nowo. Spróbuj tego: http://magpierss.sourceforge.net/

Dużo łatwiejsze w użyciu, a zapisywanie linków można łatwo dodać. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
darkowski
post
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


No nie wiem czy to jest prostrze bo mi nie wychodzi

Znalazłem inny skryp tylko że wyskajuje mi taki błąd:

Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/home/neoprog/www/rss/www.sport24.pl,feed,pilka.xml_) is not within the allowed path(s): (/home/niedojeb/) in /home/niedojeb/www/bukmacherka/rss_fetch.php on line 77


i wiadomości się nie odświeżają bo albo jest za długi czas ustawiony albo przez ten błąd

example.php

  1. <!--
  2.  To include this sample on your homepage, make sure the page's extension is .php
  3.  and inside it put
  4.  include "example.php";
  5.  just make sure example is in the same folder as your main page.
  6. -->
  7.  
  8. <table style="background-color: #FFFFFF; border: solid 1px #000000;" cellpadding="2" cellspacing="1" width="70%" align="center">
  9.  <tr>
  10.    <td style="background-color: #0096D2; font-weight: bold; color: #FFFFFF; font-size: 14px; text-align: center;" width="75%" align="center">Wiadmości ze świata sportu </td>
  11.  </tr>
  12. <?php
  13. include_once "./rss_fetch.php";
  14.  
  15. $html  = "  <tr>\n";
  16. $html .= "    <td style='background-color: #DCF0FA; font-weight: bold; color: #000000; font-size: 13px;'>\n";
  17. $html .= "      <font size='+1'><a href='#{link}' target='_new'>#{title}</a></font><br />\n";
  18. $html .= "      #{description}<br />\n";
  19. $html .= "      <font size='2'>#{pubDate}<br /><br />\n";
  20. $html .= "    </td>\n";
  21. $html .= "  </tr>\n";
  22.  
  23. $rss = new rss_parser("http://www.sport24.pl/feed/pilka.xml", 5, $html, 1);
  24. ?>
  25. </table>




oraz drugi plik

rss_fetch.php
  1. <?php
  2. /************************************************************
  3. RSS Fetch 0.4.1
  4. RSS Feed Reader
  5. Author: Drew Phillips
  6. Copyright 2005 Drew Phillips
  7.  
  8. This program is free software; you can redistribute it and/or
  9. modify it under the terms of the GNU General Public License
  10. as published by the Free Software Foundation; either version 2
  11. of the License, or (at your option) any later version.
  12.  
  13. This program is distributed in the hope that it will be useful,
  14. but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. GNU General Public License for more details.
  17.  
  18. You should have received a copy of the GNU General Public License
  19. along with this program; if not, write to the Free Software
  20. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  21.  
  22.  
  23.  
  24. ************************************************************/
  25.  
  26.  
  27.  
  28. class rss_parser {
  29.  var $update_interval = 60;    
  30.  /* How often to fetch the rss file
  31.      A cached version will be used between updates    */
  32.  
  33.  var $data_directory = "/home/neoprog/www/rss";
  34.  /* Where to store the rss data from the feeds
  35.      Note: an absolute path is better than a relative path here
  36.      unless you plan on keeping the script to display the feeds
  37.      in the same folder as this file and the feeds.   */
  38.  
  39.  
  40.  
  41.  /* NO NEED TO EDIT BELOW HERE UNLESS YOU KNOW WHAT YOU ARE DOING  */
  42.  
  43.  
  44.  var $rss_url;
  45.  var $num_to_show;
  46.  var $do_update;
  47.  var $tags = array();
  48.  var $content;
  49.  var $rss = array();
  50.  
  51.  var $feed_title;
  52.  var $feed_link;
  53.  var $feed_description;
  54.  
  55.  var $my_html;
  56.  
  57.  function rss_parser($url, $numtoshow = 10, $html = "", $update = 0)
  58.  {
  59.    $this->rss_url = $url;
  60.    $this->num_to_show = $numtoshow;
  61.    $this->do_update = $update;
  62.    $this->my_html = preg_replace("/(#{.*?):(.*?})/", "1__2", $html); //xx:xx tag workaround
  63.  
  64.    $this->content = $this->fetch_feed();
  65.    $this->parse_feed();
  66.    $this->show();
  67.  }
  68.  
  69.  
  70.  /* string */
  71.  function fetch_feed()
  72.  {
  73.    $url_parts = parse_url($this->rss_url);
  74.  
  75.    $filename = $url_parts['host'] . str_replace("/", ",", $url_parts['path']) . "_" . @$url_parts['query'];
  76.    if(file_exists($this->data_directory . "/$filename")) {
  77.      $last = filemtime($this->data_directory . "/$filename");
  78.      if(time() - $last > $this->update_interval * 60 || $this->update_interval == 0) {
  79.        $update = 1;
  80.      }
  81.    } else {
  82.        $create= 1;
  83.    }
  84.  
  85.    if($create == 1 || ($this->do_update == TRUE && $update == 1)) {
  86.      $fp = @fsockopen($url_parts['host'], 80, $errno, $errstr, 5);
  87.      if (!$fp) {
  88.        echo "Couldn't open rss feed {$this->feed_url} in {$_SERVER['PHP_SELF']}<br />\n";
  89.        return;
  90.      }
  91.  
  92.      fputs($fp, "GET " . $url_parts['path'] . "?" . @$url_parts['query'] . " HTTP/1.0r\n"
  93.                ."Host: " . $url_parts['host'] . "r\n"
  94.                ."User-Agent: Drew's RSS Reader 0.1r\n"
  95.                ."Connection: Closer\nr\n");
  96.  
  97.      while(!feof($fp)) {
  98.        $rss_data .= @fgets($fp, 1024);
  99.      }
  100.  
  101.      list(, $rss_data) = explode("r\nr\n", $rss_data, 2);
  102.  
  103.      $output = @fopen($this->data_directory . "/$filename", "w+");
  104.      if(!$output) {
  105.        return $rss_data;
  106.      } else {
  107.        flock($output, LOCK_EX);
  108.        fputs($output, $rss_data);
  109.        flock($output, LOCK_UN);
  110.        fclose($output);
  111.      }
  112.    } //update
  113.  
  114.    return file_get_contents($this->data_directory . "/$filename");
  115.  }
  116.  
  117.  /* void */
  118.  function parse_feed()
  119.  {
  120.    preg_match("/<title>(.*?)</title>/", $this->content, $title);
  121.    $this->feed_title = @$title[1];
  122.  
  123.    preg_match("/<link>(.*?)</link>/", $this->content, $link);
  124.    $this->feed_link = @$link[1];
  125.  
  126.    preg_match("/<description>(.*?)</description>/", $this->content, $description);
  127.    $this->feed_description = @$description[1];
  128.  
  129.    preg_match_all("/<item[^>]*>(.*?)</item>/s", $this->content, $items);
  130.    if (sizeof($items[0]) == 0) {
  131.      echo "No item elements found in rss feed.<br />\n";
  132.    }
  133.  
  134.    for($i = 0; $i < sizeof($items[0]); ++$i) {
  135.      preg_match_all("/(?:<([w:]*)[^>]*>(?:<![CDATA[)?(.*?)(?:]]>)?</1>)+?/si", preg_replace("/<item[^>]*>/", "", $items[0][$i]), $elements);
  136.      for($j = 0; $j < sizeof($elements[0]); ++$j) {
  137.        $elements[1][$j] = str_replace(":", "__", $elements[1][$j]);  //regex fix for items with : like dc:date
  138.        $this->rss[$i][$elements[1][$j]] = trim(html_entity_decode($elements[2][$j]));
  139.      }
  140.    }
  141.  }
  142.  
  143.  
  144.  /* void */
  145.  function show()
  146.  {
  147.    if($this->my_html == "") {
  148.      $this->show_html();
  149.    } else {
  150.      $this->show_user_html();
  151.    }
  152.  }
  153.  
  154.  function show_html()
  155.  {
  156.    $show = (sizeof($this->rss)  > $this->num_to_show ? $this->num_to_show : sizeof($this->rss));
  157.    for($i = 0; $i < $show; ++$i) {
  158.      echo "- <a href=\"{$this->rss[$i]['link']}\" target=\"_new\">{$this->rss[$i]['title']}</a><br />\n";
  159.    }
  160.  }
  161.  
  162.  function show_user_html()
  163.  {
  164.    $show = (sizeof($this->rss) > $this->num_to_show ? $this->num_to_show : sizeof($this->rss));
  165.    for($i = 0; $i < $show; ++$i) {
  166.      extract($this->rss[$i]);
  167.      $item = preg_replace("/#{([^}]+)}/e", "$1", $this->my_html);
  168.      echo $item;
  169.    }
  170.  }
  171.  
  172. } // end class
  173.  
  174.  
  175. ?>
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
i wiadomości się nie odświeżają bo albo jest za długi czas ustawiony albo przez ten błąd

Podejrzewam, że właśnie przez ten błąd. Zapisuj pliki na swoim koncie.
Go to the top of the page
+Quote Post
darkowski
post
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


Odświeżają się tylko jest długi czas ustawiony a błąd dalej jest i nie wiem jak go usunąć
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
a błąd dalej jest i nie wiem jak go usunąć

Wyłącz safe_mode w php.ini, a jeśli nie możesz tego osiągnąć - zmień hosting.
Go to the top of the page
+Quote Post
darkowski
post
Post #7





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


A innego sposobu nie ma? może jakieś chmody zmienić albo coś
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie da się, gdyż safe_mode sprawdza za każdym razem właściciela pliku: http://pl.php.net/features.safe-mode

Wniosek: Tylko i wyłącznie wyłączenie trybu bezpiecznego lub zmiana miejsca przechowywania plików.
Go to the top of the page
+Quote Post
darkowski
post
Post #9





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


Safe_mode jest wyłączone na serwerze ale nadal jest błąd
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. ini_set('open_basedir', '');
  3. ?>
Go to the top of the page
+Quote Post
darkowski
post
Post #11





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


Dobra tylko gdzie mam to wrzucić?
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Gdzieś na początku skryptu. Lub zmienić tę wartość w php.ini, jeśli masz możliwość go zmodyfikować.
Go to the top of the page
+Quote Post
darkowski
post
Post #13





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


Wrzuciłem na początek skryptu i nic to nie dało
Go to the top of the page
+Quote Post
erix
post
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A w phpinfo" title="Zobacz w manualu PHP" target="_manual wstawionym zaraz po ini_set" title="Zobacz w manualu PHP" target="_manual dalej to samo?

Najlepiej by było, gdybyś po prostu zmienił ścieżki.
Go to the top of the page
+Quote Post
darkowski
post
Post #15





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


Na jakie ścieżki? A po drugie to ty piszeszo rss_fetch.php, example.php czy rss.php bo troch tego tu podałem i sam się już motam
Go to the top of the page
+Quote Post
erix
post
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Sam przecież podałeś treść błędu:
Cytat
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/home/neoprog/www/rss/www.sport24.pl,feed,pilka.xml_) is not within the allowed path(s): (/home/niedojeb/) in /home/niedojeb/www/bukmacherka/rss_fetch.php on line 77

Kubuś developer: debuguj, debuguj, debuguj - ~nospor (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
darkowski
post
Post #17





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


No czyli rss_fetch ale niestety chyba sobie z tym nie poradzimy bo błąd cały czas jest

A może ma ktoś jakiś inny czynik rss( w miare prosty) który mógłbym umieścić na swojej stronie bo gdyby nie ten błąd to ten byłby ok
Go to the top of the page
+Quote Post
erix
post
Post #18





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie możesz po prostu zmienić
  1. <?php
  2. var $data_directory = "/home/neoprog/www/rss";
  3. ?>
?
Go to the top of the page
+Quote Post
darkowski
post
Post #19





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 28.04.2008
Skąd: Auschwitz

Ostrzeżenie: (0%)
-----


Nie uwieżysz ale ZROBIŁEM, Twoja ostatnia podpowiedź była rewelacyjna błędu nie ma wszysko git!!

Poradziliśmu już sobie z błędem ale wymyśliłem jeszcze coś tzn. na tym kanale http://www.sport24.pl/feed/pilka.xml zauważyłem że są zdjęcia do newsów a moje pytanie brzmi czy da się żeby w moim rssie były widozne te zdjęcia a jak tak to jak to zrobić
Go to the top of the page
+Quote Post
erix
post
Post #20





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
newsów a moje pytanie brzmi czy da się żeby w moim rssie były widozne te zdjęcia a jak tak to jak to zrobić

Da się. Bardzo ciężko podejrzeć pierwszy lepszy RSS ze zdjęciami i zobaczyć, jak jest realizowane? Wykaż odrobinę samodzielności.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:22