0

我为我的网站创建了自己的提要,并将其连接到 feedburner 和 dlvr.it 以传播到社交媒体网站。

然而,每当我在我的网站上创建一个新帖子时,它需要几分钟才能发布到 feedburner(这不是一个真正的问题)并且它不会将更新发布到我的社交媒体帐户和查看 dlvr.it 的报告时,它说'没有通过拉取找到项目'

我连接到 feedburner 的 xml的完整代码如下所示:

 <?php
include('db.php');

header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="ISO-8859-1"?>  
<rss version="2.0">  
<channel>  
<title>MindWeather Thesis</title>  
<description>Latest News from my website</description>  
<link>http://www.MySite.info</link>';  

$get_articles = "SELECT ID, NewsType, Content,   
DATE_FORMAT(DateTime,'%a, %e %b %Y %T') as formatted_date   
FROM tblnews ORDER BY DateTime DESC LIMIT 15";  

$articles = mysql_query($get_articles) or die(mysql_error());  

while ($article = mysql_fetch_array($articles)){  

    echo '  
       <item>  
          <title>'.$article['NewsType'].'</title>  
          <description><![CDATA['.$article['Content'].']]></description>  
          <link>http://www.MySite.info</link>  
          <pubDate>'.$article['formatted_date'].' GMT</pubDate>  
      </item>';  
} 
echo '</channel>
</rss>';
?>

怎么了?

4

1 回答 1

0

首先,将header()call 在你的 first 之前上移echo()。您应该始终在任何其他输出之前输出标头,因为它们将信息放入 HTTP 标头中,在实际正文开始出现之前,该标头应该始终是完整的。正如手册中所说:

请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 发送。使用 include 或 require 函数或其他文件访问函数读取代码并在调用 header() 之前输出空格或空行是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。

其次,让我们看看您正在生成的输出。您尚未提供 PHP 的输出(FeedBurner 在进行过程中进行了更改以尝试帮助使提要更有效/有用),但这大致是您正在生成的内容,假设数据库中有一个项目:

<?xml version='1.0' encoding='ISO-8859-1' ?>
<rss version='2.0'>
Mindweather
  <channel>http://www.MySite.info
    <title>MyProj</title>
    <item>
      <title>NewsType</title>
      <link>http://www.MySite.info/signin.ph</link>
      <description>Content</description>
    </item>
    <link>MyProj/link>
  </channel>
</rss> 

所以,那里有一些问题。您可以将您的输出与RSS 规范进行比较,或者通过W3 Feed Validator Service运行它以获取一些提示,或者甚至将您的提要与一个基本示例进行比较,例如Wikipedia 上的示例,但基本上:

  • “Mindweather”这个词出现在一个无效的地方。将其移除,或将其移动到需要的位置。是提要的标题吗?如果是这样,它应该是“MyProj”所在的位置,<title><channel>.

  • http://www.MySite.info ” 出现在无效位置。如果那是指向您网站的链接,则它应该位于 的<link>元素中<channel>,靠近末尾,您拥有的位置echo "<link>MyProj/link>

  • (当我在那里时,你也错过了</link>那条线上的开放尖括号。)

  • <channel>的 '<link>元素应该在您的所有项目之前。

  • <channel>需要一个<description>元素。

最重要的是,您的提要中没有 apubDate或 aguid元素。

尽管pubDate并且guid在技术上是可选的,但定期从 RSS 提要中提取内容的事物往往会寻找其中一个或两个,以查看他们以前是否看过它们。pubDate 应该是新项目的发布日期,而 guid 应该是它的唯一标识符(通常使用特定项目的 URL。)有关详细信息,请参阅RSS 2.0 规范

例如,通常从提要中提取的内容只会选取最近 30 天的项目,例如,它会查找itempubDate 比这更近的任何 s。如果您的所有项目都没有 pubDate,则它不会“看到”其中任何一个。

当我开发一个提要时,我通常会抓取一个示例作为模板,并让我的输出看起来像这样,只有我的细节在里面。

最后,请记住 mysql 扩展已被弃用,并将从 PHP 的未来版本中删除。您不应该将它用于新代码。

于 2013-12-29T18:06:32.570 回答