首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | linux相关 | linux认证 | 下载中心 | 专题
oklinux
 系统管理:中文环境 系统管理 桌面应用 内核技术 Linux基础:安装配置 常用命令 经验技巧 软件应用 Linux数据库:Mysql POSTGRE
 网络管理:网络安全 网络应用 Linux服务器 编程开发:PHP CC++ Python Perl SHELL 嵌入式开发 | PHP基础 PHP技巧 PHP应用 PHP文摘
 首页 linux资讯动态 Linux专题 | 其他Unix Linux解决方案 硬件相关 Linux认证 企业应用 Apache | 相关下载:资料 参考手册 服务器
 → 当前位置:首页>编程开发>php>php应用>正文

用PHP和AJAX创建RSS聚合器

OKLinux www.oklinux.cn 2006-08-29 来源:oklinux收集整理 会员收藏 游客收藏

【导读】想象使用一个简单HTML文件来把一个请求发送到一个服务器端脚本,收到一个基于该请求的定制XML文件,然后把它显示给用户而几乎不需要刷新浏览器!本文作者将同你一起探讨怎样在普通Web应用程序中联合PHP和AJAX技术来创建实时的数据传输而不需要进行浏览器刷新。

尽管本文所使用的是PHP语言,但是请记住任何服务器端语言都会正常工作。为了理解本文,我假定你基本理解JavaScript和PHP或一类似服务器端语言。

本文示例使用AJAX来把一请求从一个RSS馈送发送到一定制的PHP对象。该PHP对象复制一份在本地服务器上的该馈送并返回这一路径。该请求对象收到这一路径,分析它,并且把数据以HTML形式显示给用户。这听起来涉及很多步骤,其实它仅由4个小文件组成。之所以使用了4个小文件,是为了平衡它们各自特定的力量而使整个系统的处理极富效率性。

我想,有些读者可能会问,为什么你要创建在本地服务器上的馈送的一个副本而不是简单分析最原始的馈送。原因是,这样以来可以允许绕过XML HTTP Request对象所强加的跨域限制。后面,我还会解释怎样创建这个定制的PHP对象;但是首先,让我们从表单创建开始。

创建发出请求的表单

你要做的第一事情是,在你的HTML的head标签之间包括你可能想使用的JavaScript和任何CSS文件。我包括了一个式样表来实现该聚合器的最后布局并用一个JavaScript文件来发出请求和进行馈送分析:

<link href=css/layout.css rel=stylesheet type=text/css />

<script src=js/request.js></script>

下一步,创建一个表单,它针对你所选择的一个RSS馈送发出请求。我创建的表单只包括一个输入字段和一个提交该请求的按钮。该请求的查询是一个字符串,它由馈送输入值和一个将在服务器端被校验的口令字组成;作为一个示例,我使用了下面形式:

password=mypassword

该代码在每次页面加载之时发出一次请求;因此,如果页面被刷新,现有的在该输入域中的馈送串将在页面加载时被请求。下面是一个表单数据的示例,连同一些div标签用来显示已分析的馈送的特定结点:

<body onload=javascript:makeRequest('request.php?request=' + document.feedForm.feed.value + 'password=mypassword');>

<form name=feedForm method=post action=javascript:makeRequest('request.php?request=' + document.feedForm.feed.value + 'password=mypassword');>

Enter a feed: <input type=text name=feed id=feed size=20>

<input type=submit name=submit value=Add Feed>

</form>

<div id=logo></div>

<hr/>

<div id=copy></div>

<div id=details></div>

</body>

我所创建的这三个div标签是logo,copy和details,其中每一个都在布局样式表中有一个与之相关联的样式。当我们分析馈送时将会用到它们,但是我们首先需要能够存取我们所请求的馈送。这可以使用我前面所提到的PHP对象来完成。

创建定制的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作为一参数来激活请求方法:

上一篇:PHP编制搜索引擎的一些思路   下一篇:PHP+MySQL应用中使用XOR运算加密算法

收藏于收藏夹】 【评论】 【推荐】 【投稿】 【打印】 【关闭

相关文章
·PHP编制搜索引擎的一些思路
·PHP4中实现动态代理
·PHP使用者状态管理功能的应用
·在PHP5中使用DOM控制XML(2)
·在PHP5中使用DOM控制XML(1)
·PHP生成静态页面详解
·在debian下用eaccelerator加速php性能
·集JSP、PHP和JAVA于一体的开发环境
·php中rename()函数的妙用
·在php中使用sockets:从新闻组中获取文章
发表评论
密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。)
站内搜索
阅读排行榜
·Linux系统上把PHP编译进Ap
·Linux编程之提升PHP执行速
·用PHP编程语言开发动态WAP
·Windows服务器安装多套PHP
·PHP也可以当成Shell Scrip
·如何使用动态共享对象的模
·PHP应用分页显示制作详细
·用php或js获取图片大小,高
·教您如何应用PHP开发出安
·为什么PHP令人不爽(对于
最新文章
·Linux系统上把PHP编译进Ap
·关于PHP逗点连接符与引号
·php有关于正则表达式的详
·通过gd库为图片添加透明水
·第二节--PHP5 的对象模型
·用php对文件上传处理过程
·PHP分页显示制作详细讲解
·Linux主机重编译PHP支持GD
·php+ImageMagick+imagick
·php抓取和分析
·第一节--面向对象编程
·php的预定义变量
·PHP/MySQL三日通(8)
·正则表达式在UBB论坛中的
·PHP5 的异常处理机制(2)

设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2007 All rights reserved OKLinux.Cn 版权所有