仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1077|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页设计使用PHP和AJAX创立RSS聚合器

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:30:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
毕业设计作品自己个人还是觉得比较满意的,尽管有些功能考虑的不全面,也没有很好的实现。ajax|rss|创立       想象利用一个复杂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 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,这意味着该目次可读写。当被设置为可读的时,该目次就能够在今后被存取;而当被设置为可写的时,就能够把该馈送的一个正本写向当地办事器上的目次:


file://假如不存在目次就创立一个
$dir = "rss";
if(!is_dir($dir))
{
 mkdir($dir, 0666);
}
  注重

  在一台Windows机械上,关于PHP 4.2.0及以上版本中形式设置是不被请求的。然而,假如它存在的话,它将被疏忽;因而,我保存了它,以备该工程被迁徙到一台UNIX或Linux办事器上。

  在把馈送复制到该办事器前,咱们需求一个独一的文件名。我对这个完全的URL利用了md5加密办法以确保一切馈送的名字是独一的。经由过程这个新的文件名,它可以毗连一个描写指向该文件的目次的字符串;这将在创立该馈送的正本时利用:

file://创立独一的定名
$file=md5($rss_url);
$path="$dir/$file.xml";
  经由过程利用被界说在下面的途径和到原始的被恳求的馈送的URL的参考,如今咱们能创立该文件的一个正本。最初,把该途径前往到该新文件,作为对该恳求的呼应:

file://复制馈送到当地办事器
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 != "")
  {
   file://假如不存在目次就创立一个
   $dir = "rss";
   if(!is_dir($dir))
   {
    mkdir($dir, 0666);
   }
   // 创立一个独一的名字
   $file = md5($rss_url);
   $path = "$dir/$file.xml";
   file://复制馈送到当地办事器
   copy($rss_url, "$path");
   return $path;
  }
 }
}
?>
[1] [2] 下一页  

  我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:
金色的骷髅 该用户已被删除
沙发
发表于 2015-2-4 13:15:03 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
因胸联盟 该用户已被删除
板凳
发表于 2015-2-5 11:40:14 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
谁可相欹 该用户已被删除
地板
发表于 2015-2-11 14:24:28 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
分手快乐 该用户已被删除
5#
发表于 2015-3-2 13:38:48 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
飘灵儿 该用户已被删除
6#
发表于 2015-3-11 03:47:09 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
小魔女 该用户已被删除
7#
发表于 2015-3-17 19:40:53 | 只看该作者
做为1门年轻的语言,php一直很努力。
若天明 该用户已被删除
8#
发表于 2015-3-19 13:59:10 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-23 07:11:49 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
只想知道 该用户已被删除
10#
发表于 2015-3-23 17:22:29 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
再现理想 该用户已被删除
11#
发表于 2015-3-27 00:21:56 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
蒙在股里 该用户已被删除
12#
发表于 2015-3-27 14:10:04 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
13#
发表于 2015-4-4 03:46:14 | 只看该作者
当然这种网站的会员费就几十块钱。
变相怪杰 该用户已被删除
14#
发表于 2015-4-4 21:59:48 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
第二个灵魂 该用户已被删除
15#
发表于 2015-4-5 00:23:11 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
若相依 该用户已被删除
16#
发表于 2015-4-5 23:10:18 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
活着的死人 该用户已被删除
17#
发表于 2015-4-11 02:10:29 | 只看该作者
当然这种网站的会员费就几十块钱。
爱飞 该用户已被删除
18#
发表于 2015-4-12 09:56:40 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
简单生活 该用户已被删除
19#
发表于 2015-4-13 21:07:27 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
莫相离 该用户已被删除
20#
发表于 2015-4-21 10:54:55 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表