Flatnux CMS

Open Source Content Management System

Login



 stay connected
Password recovery
Register

Search

Search:
Make a donation to the project:

Newsletter

To get our newsletter please enter your email and click on ”subscribe”. If you want to cancel the newsletter please enter your email and click on ”remove”

Forum->Flatnux->blocco lettura file RSS
  
Welcome Unknown Register Help383 Users

User Message


francob

0 Level 0 10

levellevellevellevellevellevellevellevellevellevel
profile  home
Tuesday 20 March 2012 - 10:30

blocco lettura file RSS:
Mi interesserebbe inserire in un sito realizzato con flatnux un blocco per aggregare files rss provenienti da un altro sito.

in rete ho trovato diversi script, ma non vorrei creare problemi di sicurezza al sito.

è possibile trovare uno script sicuro in php che non crei problemi?

grazie
Franco


Ho provato a utilizzare questo:

<script language="JavaScript" src="http://feed2js.org//feed2js.php?src=http%3A%2F%2Fwww.flatnux.altervista.org%2Fmisc%2Frss%2Fnews%2Fit%2Fbackend.xml&chan=y&num=5&desc=1&utf=y" charset="UTF-8" type="text/javascript"></script>

<noscript>
<a href="http://feed2js.org//feed2js.php?src=http%3A%2F%2Fwww.flatnux.altervista.org%2Fmisc%2Frss%2Fnews%2Fit%2Fbackend.xml&chan=y&num=5&desc=1&utf=y&html=y">View RSS feed</a>
</noscript>

--------------------
Funziona perfettamente; un solo dubbio: può creare problemi di sicurezza???




speleoalex

0 Level 10 10

levellevellevellevellevellevellevellevellevellevel
profile mail
Thursday 29 March 2012 - 12:42

Re: blocco lettura file RSS:
In php ce ne sono molti.

uno è questo:
http://magpierss.sourceforge.net/


Alessandro


Oppure c'è la vecchia funzione presa da Flatnux 2011:



function parse_RSS($url)
{
$url = getparam($url, PAR_NULL, SAN_FLAT);
if ( $url != "" )
{
if ( !preg_match("/http:\\/\\//i", $url) )
{
$url = "http://$url";
}
$rdf = parse_url($url);
$errno = $errstr = null;
$fp = fsockopen($rdf['host'], 80, $errno, $errstr, 15);
if ( !$fp )
{
print(_NORSS);
return "";
}
if ( $fp )
{
$remotecontents = "";
@ fputs($fp, "GET " . $rdf['path'] . "?" . $rdf['query'] . " HTTP/1.0\r\n");
@ fputs($fp, "HOST: " . $rdf['host'] . "\r\n\r\n");
while ( !feof($fp) )
{
$pagetext = fgets($fp, 228);
$remotecontents .= chop($pagetext);
}
fputs($fp, "Connection: close\r\n\r\n");
fclose($fp);
//-----------------ricava e converte l' encoding----------->
$encoding = 'UTF-8';
$arr_got = array();
if ( preg_match('/encoding="([^"]+)"/iUs', $remotecontents, $arr_got) )
$encoding = strtoupper($arr_got[1]);
$string = $remotecontents;
$remotecontents = htmlentities($remotecontents, ENT_QUOTES, $encoding);
$remotecontents = html_entity_decode($remotecontents, ENT_QUOTES, _CHARSET);
if ( $remotecontents != "" )
$string = $remotecontents;
echo "<br />";
//-----------------ricava e converte l' encoding-----------<
$string = xmldb_removexmlcomments($string);
$description = "";
$tmp = explode("</title>", $string);
$title = preg_replace("/.*<title>/si", "", $tmp[0]);
$tmp = explode("</description>", preg_replace("/<item>.*<\/item>/si", "", $string));
if ( isset($tmp[1]) )
$description = preg_replace("/.*<description>/si", "", $tmp[0]);
$items = explode("</item>", $string);
$content = "" . "<strong>$title</strong><br /><em>$description</em><hr /><div>";
for ( $i = 0; $i < sizeof($items) - 1; $i++ )
{
$link = preg_replace("/.*<link>/si", "", $items[$i]);
$link = preg_replace("/<\\/link>.*/si", "", $link);
$title2 = preg_replace("/.*<title>/si", "", $items[$i]);
$title2 = preg_replace("/<\\/title>.*/si", "", $title2);
// some feeds are exposed with CDATA format
$title2 = str_replace("<![CDATA[", "", $title2);
$title2 = str_replace("]]>", "", trim($title2));
if ( strcmp($link, $title2) and $items[$i] != "" )
{
$content .= "<b><big>·</big></b> <a style=\"font-size: 12px;\" href=\"$link\" target=\"new\">" . $title2 . "</a><br />\n";
}
}
$content .= "</div>";
}
}
return $content;
}


 [1]

Last news