Archief - PHP: RSS feed: html code tonen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Le Roy Landis

Legacy Member
Hallo,

Ik heb een php script geinstalleerd dat'k gevonden heb op't internet om nieuws te posten, zijnde CzarNews v1.20 (resultaat: http://www.schizoidman.com). Daarbij zit ook een rss.php document waarmee ik m'n data kan feeden uit mijn database. Als ik deze feed laad in mijn reader toont die ie echter alles met <img src=" ... > tags ipv gewoon de images te tonen.
(voorbeeld: http://www.schizoidman.com/image_library/rss_feed.JPG )

heeft iemand een idee hoe ik dit kan verhelpen?? Ik dacht toch dat dit toch mogelijk was aangezien ik het wel goed kreeg bij een ander rss.php scriptje (maar dat kon dan enkel mijn content2 tonen en had problemen met content).

http://www.schizoidman.com/news/rss.php
dit is m'n rss feed document.

Ik zeg al meteen dat ik nagenoeg niets weet van php of mysql en dat ik maar aan't puzzelen ben en terwijl probeer te leren waarover het gaat. Ik heb niet meteen het geduld om een programmeer taal te leren om enkel een rss feed te kunnen maken... maar ik doe wel moeite. alleen duurt het soms veel te lang tegen dat ik de oplossing vind.

Ook nog, weet ik niet of mijn feed wel minimaal beveiligd is. Zet ik bepaalde documenten zoals database connection php file ergens verborgen op mijn webserver? (ik had hier ergens iets van gelezen maar begreep niet welk bestand precies werd bedoeld).

Vriendelijke groeten en bedankt voor de help.

Tyfius

Legacy Member
Ik vermoed dat je in je tabel de gegevens hebt opgeslagen door er htmlentities() rond te zetten alvorens ze weg te schrijven. De RSS maker zal die htmlentities() niet ongedaan maken en bijgevolg gewoon de HTML code tonen in plaats van ze te parsen.
Wat jij gaat moeten in de RSS maker aanpassen is de content door html_entity_decode() halen.

Le Roy Landis

Legacy Member
BEdankt voor de hulp! Ik heb wat aangepast en het toont al wat beter nu.
ik heb
<description> <?=htmlentities echo(strip_tags($r['content'],'ENT_QUOTES'));?></description>
vervangen door
<description> <?php echo $r['content'];?></description>


Nu ik krijg ik op z'n slechtst enkele links die naar nergens leiden... maar ik kan wel deftig mijn description lezen! goed genoeg dus.

azerty_2006

Legacy Member
ik haal gewoon mijn html door een str_replace(array("<",">"),array("&lt;","&gt;"),$html) en dat werkt perfect hier :)

azerty_2006

Legacy Member
rss.php
PHP:
<?
### rss.php - added [v1.21] 

// Automatically get $tpath to avoid possible security holes
$tpath = realpath(__FILE__);
$tpath = substr($tpath,0,strrpos($tpath,DIRECTORY_SEPARATOR)+1);
// Check if the file exists on local server and include it
if(file_exists($tpath . "cn_config.php")) {
	require_once($tpath . "cn_config.php");
} else {
	die("Could not include required configuration file");
}

// Check if a connection to the database was established
if(!isset($link)) {
	die("Please make sure the \"\$tpath\" variable is the root path to where 'rss.php' is on your server.");
}

// Page URL to link the news items 
if(!isset($page)) { $page = "/index.php"; }
// Set limit for number of items displayed 
if(!isset($lim)) { $lim = "5"; }
// Number of characters to cut news titles at 
if(!isset($charnum)) { $charnum = "35"; }

// Get news items from database, and order them from newest to oldest 
if($c != "") { $t_news .= " WHERE cat = '$c'"; }
$q['info'] = mysql_query("SELECT * FROM $t_news ORDER BY date DESC LIMIT 0, $lim", $link);


### Print XML RSS feed ###
header('Content-type: application/xhtml+xml');
echo '<?xml version="1.0"?>';
// Edit the XML code below (between the dashed lines) for the output of your rss feed 
// ------------------------------------------------------------------
?>

<rss version="2.0">
<channel>
<title><?php echo $set['sitename']; ?> RSS News Feed powered by CzarNews</title>
<description><?php echo $set['sitename']; ?> RSS News Feed powered by CzarNews</description>
<link><?php echo $set['siteurl']; ?></link>
<copyright>All Content copyright <?php echo date('Y'); ?> <?php echo $set['sitename']; ?></copyright>

<?php
while($r = mysql_fetch_array($q['info'], MYSQL_ASSOC)) {
	// Edit the XML code below for the output of your rss feed 
	// Edit the XML code between the dashed lines
	// ------------------------------------------------------------------
	?>
	<item> 
        <title> <? echo str_replace(array("<", ">"), array("&lt;", "&gt;"), $r['subject']); ?></title> 
        <description> <? echo str_replace(array("<", ">"), array("&lt;", "&gt;"), $r['content']);?></description> 
        <link><?php echo $set['siteurl']; ?><? echo $page; ?>?a=<? echo $r['id']; ?></link>
		<guid><?php echo $set['siteurl']; ?><? echo $page; ?>?a=<? echo $r['id']; ?></guid>  
        <pubDate> <?=strftime( "%a, %d %b %Y %T %Z" , $r['date']); ?></pubDate> 
     </item>
	 
	<?
	// ------------------------------------------------------------------
}
?>

</channel>
</rss>

Probeer dees eens.

Edit: content-type was ook fout (text/xml).

Le Roy Landis

Legacy Member
Die doet het ook heel goed, maar het resultaat is hetzelfde als wanneer ik
=htmlentities echo(strip_tags( weglaat bij <description>.

Maar ik ga deze versie toch nemen omdat ik denk dat ie minder validation errors geeft. Bedankt dus!

edit: de validator raadt application/rss+xml aan. Ik heb dat dan maar gebruikt.

azerty_2006

Legacy Member
oops ja das juist, was vergeten dat het om rss ging ^^.
Als de fouten blijven dan ligt het aan de data die erdoor gestuurd word (mss word het crapy opgeslagen in mysql, no idea).

In ieder geval dit is niet echt een script die ik zou aanraden. vanwege de opmaak alleen al :p.

Le Roy Landis

Legacy Member
Ik zoek al een alternatief. Ik vrees alleen dat mijn nieuws script niet volstaat voor goede feeds op te maken.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan