我只是不明白发生了什么,我几个月没有改变任何东西,但现在突然rss feed不再起作用了。
我使用以下代码创建一个php文件:
header('Content-type: text/xml');
include("config/config.inc.php");
$result = mysqli_query($link, "SELECT * FROM tutorials ORDER BY tutorial_id DESC LIMIT 50");
?>
<rss version="2.0">
<channel>
<title>CMS tutorial site</title>
<description>Bringing you the best CMS tutorials from the web</description>
<link>http://cmstutorials.org</link>
<?php
while($row = mysqli_fetch_object($result))
{
$user = mysqli_fetch_object(mysqli_query($link, "SELECT * FROM user_extra WHERE userid=".$row->user_id.""));
?>
<item>
<title><?php echo $row->title; ?></title>
<author><?php echo $user->username; ?></author>
<description><?php echo $row->description; ?></description>
<pubDate><?php echo $row->date; ?></pubDate>
<link>http://cmstutorials.org/view_tutorial.php?tutorial_id=<?php echo $row->tutorial_id; ?></link>
</item>
<?php
}
?>
</channel>
</rss>
我通过在phpmyadmin中执行它来检查查询并且它有效,不会给出任何错误。当我删除标题内容类型和rss标记时,它将打印出查询中的每一行,但Feed不会显示任何内容
这是Feed [{3}}(或http://cmstutorials.org/rss)
的链接答案 0 :(得分:4)
有趣的是,IE8是一个给出详细错误消息的消息,其中Firefox没有说什么改变。它说“由于错误而无法显示此Feed”,并指向第229行第32行。
<description>We
这是编码问题的99.9999%。 (验证器抱怨非UTF-8字符。)很可能,您的数据库内容存储在与utf-8不同的字符集中。
您将通过validator获得更详细的信息。
答案 1 :(得分:1)
您的文件是有效的UTF-8,但不是有效的XML。我认为您可能需要通过htmlentities函数传递所有数据。
<title><?php echo htmlentities($row->title,ENT_QUOTES,"utf-8"); ?></title>
<author><?php echo htmlentities($row->username,ENT_QUOTES,"utf-8"); ?></author>
<description><?php echo htmlentities($row->description,ENT_QUOTES,"utf-8"); ?></description>
<pubDate><?php echo htmlentities($row->date,ENT_QUOTES,"utf-8"); ?></pubDate>
如果不起作用,请尝试将“utf-8”更改为“cp1252”或“iso-8859-1”等其他编码。