PHP RSS未发布到社交媒体网站



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

然而,每当我在我的网站上创建一个新的帖子时,它都需要几分钟的时间才能发布到feedburner(这并不是一个真正的问题),而且它不会在我的社交媒体账户上发布更新,也不会在查看dlvr时发布更新。它的报告说,">通过pull没有找到任何项目">

连接到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>';
?>

怎么了?

首先,将header()调用移动到第一个echo()之前。您应该始终在任何其他输出之前输出标头,因为它们将信息放入HTTP标头中,而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运行它来获得一些提示,甚至可以把你的Feed与一个基本的例子进行比较,比如维基百科上的例子,但基本上是:

  • "心理天气"一词出现在无效位置。删除它,或者将它移动到需要的位置。它是提要的标题吗?如果是,它应该在<channel><title>中的"MyProj"所在的位置。

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

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

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

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

除此之外,您的提要中没有pubDateguid元素。

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

例如,通常从提要中提取的内容只会提取过去30天的项目,因此它会查找pubDate比这更新的任何item。如果您的项目都没有pubDate,它将不会"看到"任何项目。

当我开发提要时,我通常会获取一个示例作为模板,并使我的输出看起来像这样,只包含我的详细信息

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

相关内容

  • 没有找到相关文章

最新更新