利用PHP和AJAX创建RSS聚合器 - php语言 -

利用PHP和AJAX创建RSS聚合器

时间:2013-04-09 12:55:17   来源:   评论:加载中...   点击:加载中...
想象使用一个简单HTML文件来把一个请求发送到一个服务器端脚本,收到一...

创建定制的PHP对象

我用PHP创建了一个小型RSS类,它在本地服务器上创建一个请求馈送的副本,这样它可以为我们稍后要创建的XML HTTP Request对象所存取。典型地,你不能跨域请求一个文件,这意味着你要请求的文件需要位于本地服务器上。这个类是一种解决跨域问题的办法,因为它创建该馈送的一个副本,这个副本在本地服务器上被请求并且把本地路径返回到该馈送,然后它由该Request对象来存取。

这个类中唯一的方法是一个请求方法,它仅有一个指向所请求的RSS 馈送的URL的参数。然后,它通过rss的名字来检查是否一目录位于本地服务器上。如果不存在,就创建一个并把其权限模式设置为0666,这意味着该目录可读写。当被设置为可读的时,该目录就可以在以后被存取;而当被设置为可写的时,就可以把该馈送的一个副本写向本地服务器上的目录:

//如果不存在目录就创建一个
$dir = "rss";
if(!is_dir($dir))
{
 mkdir($dir, 0666);
}

注意

在一台Windows机器上,对于PHP 4.2.0及以上版本中模式设置是不被要求的。但是,如果它存在的话,它将被忽略;因此,我保留了它,以备该工程被迁移到一台UNIX或Linux服务器上。

在把馈送复制到该服务器前,我们需要一个唯一的文件名。我对这个完整的URL使用了md5加密方法以确保所有馈送的名字是唯一的。通过这个新的文件名,它可以连接一个描述指向该文件的目录的字符串;这将在创建该馈送的副本时使用:

//创建唯一的命名
$file=md5($rss_url);
$path="$dir/$file.xml";

通过使用被定义在上面的路径和到原始的被请求的馈送的URL的参考,现在我们能创建该文件的一个副本。最后,把该路径返回到该新文件,作为对该请求的响应:

//复制馈送到本地服务器
copy($rss_url,"$path");
return $path;
Following is the small, yet powerful RSS class in its entirety:
<?php
class RSS
{
 function get($rss_url)
 {
  if($rss_url != "")
  {
   //如果不存在目录就创建一个
   $dir = "rss";
   if(!is_dir($dir))
   {
    mkdir($dir, 0666);
   }
   // 创建一个唯一的名字
   $file = md5($rss_url);
   $path = "$dir/$file.xml";
   //复制馈送到本地服务器
   copy($rss_url, "$path");
   return $path;
  }
 }
}
?>

为了存取该PHP类中的方法,需要有一个请求文件来担当到该类的一个接口,这也正是我们正在请求的文件。这个文件首先验证从该请求查询的一口令变量,或者返回一条指定该请求者不是一名经授权的用户的消息,或者用指向RSS馈送(该馈送在由请求方法处理后被复制到本地服务器)的路径作出响应。为了响应该RSS馈送,需要包含这个RSS对象并把它实例化,并且需要通过使用被请求的馈送的URL作为一参数来激活请求方法:

<?
if($password == "mypassword")
{
 require_once('classes/RSS.class.php');
 $rss = new RSS();
 echo $rss->get($request);
}
else
{
 echo "You are an unauthorized user";
}
?>



相关热词搜索:

 
上一篇:PHP初学者头疼问题总结
下一篇:Web开发源代码:PHP生成静态页面的类
收藏 将此文推荐给朋友
分享到: