亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > PHP > 正文

基于PHP和AJAX創(chuàng)建RSS聚合器

2024-05-04 22:53:40
字體:
來源:轉載
供稿:網(wǎng)友
注冊會員,創(chuàng)建你的web開發(fā)資料庫,  想象使用一個簡單html文件來把一個請求發(fā)送到一個服務器端腳本,收到一個基于該請求的定制xml文件,然后把它顯示給用戶而幾乎不需要刷新瀏覽器!本文作者將同你一起探討怎樣在普通web應用程序中聯(lián)合php和ajax技術來創(chuàng)建實時的數(shù)據(jù)傳輸而不需要進行瀏覽器刷新。

  盡管本文所使用的是php語言,但是請記住任何服務器端語言都會正常工作。為了理解本文,我假定你基本理解javascript和php或一類似服務器端語言。

  本文示例使用ajax來把一請求從一個rss饋送發(fā)送到一定制的php對象。該php對象復制一份在本地服務器上的該饋送并返回這一路徑。該請求對象收到這一路徑,分析它,并且把數(shù)據(jù)以html形式顯示給用戶。這聽起來涉及很多步驟,其實它僅由4個小文件組成。之所以使用了4個小文件,是為了平衡它們各自特定的力量而使整個系統(tǒng)的處理極富效率性。

  有些讀者可能會問,為什么你要創(chuàng)建在本地服務器上的饋送的一個副本而不是簡單分析最原始的饋送。原因是,這樣以來可以允許繞過xml http request對象所強加的跨域限制。后面,我還會解釋怎樣創(chuàng)建這個定制的php對象;但是首先,讓我們從表單創(chuàng)建開始。

  創(chuàng)建發(fā)出請求的表單

  你要做的第一事情是,在你的html的head標簽之間包括你可能想使用的javascript和任何css文件。我包括了一個式樣表來實現(xiàn)該聚合器的最后布局并用一個javascript文件來發(fā)出請求和進行饋送分析:

<link href="css/layout.css" rel="stylesheet" type="text/css" />
<script src="js/request.js"></script>
  下一步,創(chuàng)建一個表單,它針對你所選擇的一個rss饋送發(fā)出請求。我創(chuàng)建的表單只包括一個輸入字段和一個提交該請求的按鈕。該請求的查詢是一個字符串,它由饋送輸入值和一個將在服務器端被校驗的口令字組成;作為一個示例,我使用了下面形式:
"password=mypassword

  該代碼在每次頁面加載之時發(fā)出一次請求;因此,如果頁面被刷新,現(xiàn)有的在該輸入域中的饋送串將在頁面加載時被請求。下面是一個表單數(shù)據(jù)的示例,連同一些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">
?。糹nput type="submit" name="submit" value="add feed">
</form>
<div id="logo"></div>
<hr/>
<div id="copy"></div>
<div id="details"></div>
</body>
  我所創(chuàng)建的這三個div標簽是logo,copy和details,其中每一個都在布局樣式表中有一個與之相關聯(lián)的樣式。當我們分析饋送時將會用到它們,但是我們首先需要能夠存取我們所請求的饋送。這可以使用我前面所提到的php對象來完成。

  創(chuàng)建定制的php對象


  我用php創(chuàng)建了一個小型rss類,它在本地服務器上創(chuàng)建一個請求饋送的副本,這樣它可以為我們稍后要創(chuàng)建的xml http request對象所存取。典型地,你不能跨域請求一個文件,這意味著你要請求的文件需要位于本地服務器上。這個類是一種解決跨域問題的辦法,因為它創(chuàng)建該饋送的一個副本,這個副本在本地服務器上被請求并且把本地路徑返回到該饋送,然后它由該request對象來存取。

  這個類中唯一的方法是一個請求方法,它僅有一個指向所請求的rss 饋送的url的參數(shù)。然后,它通過rss的名字來檢查是否一目錄位于本地服務器上。如果不存在,就創(chuàng)建一個并把其權限模式設置為0666,這意味著該目錄可讀寫。當被設置為可讀的時,該目錄就可以在以后被存取;而當被設置為可寫的時,就可以把該饋送的一個副本寫向本地服務器上的目錄:

//如果不存在目錄就創(chuàng)建一個
$dir = "rss";
if(!is_dir($dir))
{
 mkdir($dir, 0666);
}
  注意

  在一臺windows機器上,對于php 4.2.0及以上版本中模式設置是不被要求的。但是,如果它存在的話,它將被忽略;因此,我保留了它,以備該工程被遷移到一臺unix或linux服務器上。

  在把饋送復制到該服務器前,我們需要一個唯一的文件名。我對這個完整的url使用了md5加密方法以確保所有饋送的名字是唯一的。通過這個新的文件名,它可以連接一個描述指向該文件的目錄的字符串;這將在創(chuàng)建該饋送的副本時使用:

//創(chuàng)建唯一的命名
$file=md5($rss_url);
$path="$dir/$file.xml";
  通過使用被定義在上面的路徑和到原始的被請求的饋送的url的參考,現(xiàn)在我們能創(chuàng)建該文件的一個副本。最后,把該路徑返回到該新文件,作為對該請求的響應:

//復制饋送到本地服務器
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 != "")
  {
   //如果不存在目錄就創(chuàng)建一個
   $dir = "rss";
   if(!is_dir($dir))
   {
    mkdir($dir, 0666);
   }
   // 創(chuàng)建一個唯一的名字
   $file = md5($rss_url);
   $path = "$dir/$file.xml";
   //復制饋送到本地服務器
   copy($rss_url, "$path");
   return $path;
  }
 }
}
?>
  為了存取該php類中的方法,需要有一個請求文件來擔當?shù)皆擃惖囊粋€接口,這也正是我們正在請求的文件。這個文件首先驗證從該請求查詢的一口令變量,或者返回一條指定該請求者不是一名經(jīng)授權的用戶的消息,或者用指向rss饋送(該饋送在由請求方法處理后被復制到本地服務器)的路徑作出響應。為了響應該rss饋送,需要包含這個rss對象并把它實例化,并且需要通過使用被請求的饋送的url作為一參數(shù)來激活請求方法:

<?
if($password == "mypassword")
{
 require_once('classes/rss.class.php');
 $rss = new rss();
 echo $rss->get($request);
}
else
{
 echo "you are an unauthorized user";
}
?>
  get/post與ajax相結合

  為了post請求,我們首先需要創(chuàng)建該請求對象。如果你沒有創(chuàng)建請求對象的經(jīng)驗,那么可以讀一下我的文章《how to use ajax》或簡單地研究一下本文的示例源代碼。一旦創(chuàng)建該請求對象,就可以調用sendfeed方法并傳遞由表單所創(chuàng)建的url:

function sendfeed(url){
 post.onreadystatechange = sendrequest;
 post.open("post", url, true);
 post.send(url);
}
  一旦收到來自于php對象的響應并被正確加載,則對與該響應相應的本地文件發(fā)出另一個請求。在這種情況中,post.responsetext提供給我們該新文件的路徑:

function sendrequest(){
 if(checkreadystate(post)){
  request = createrequestobject();
  request.onreadystatechange = onresponse;
  request.open("get", post.responsetext, true);
  request.send(null);
 }
}
  分析響應

  由于rss饋送之間的區(qū)別,分析響應具有一定的挑戰(zhàn)性。一些含有包含標題和描述結點的圖像,而其它則沒有。因此,當我們分析回饋時,我們需要做一點檢查來譯解它是否包括一圖像。如果它包括一圖像,我們就可以,與該饋送的標題和鏈接一起,在image div標簽中顯示該圖像:

var _logo = "";
var _title = response.getelementsbytagname('title')[0].firstchild.data;
var _link = response.getelementsbytagname('link')[0].firstchild.data;;
_logo += "<a href='" + _link + "' target='_blank'>" + _title + "</a><br/>";
if(checkfortag(response.getelementsbytagname('image')[0]))
{
 var _url = response.getelementsbytagname('url')[0].firstchild.data;
 _logo += "<img src='" + _url + "' border='0'><br/>"
}
document.getelementbyid('logo').innerhtml = _logo;
  我們不僅必須檢查每個圖像以顯示它,當遍歷饋送中所有的項時我們還需要對之進行檢查。因為如果存在一個圖像,那么所有另外的標題和鏈接結點索引都將無法正常工作。因此,當發(fā)現(xiàn)圖像標簽時,我們應該通過在每一次遍歷中增加索引值(+1)來調整標題和鏈接結點的索引:

if(checkfortag(response.getelementsbytagname('image')[0]) "" i>0){
 var _title=response.getelementsbytagname('title')[i+1].firstchild.data;
 var _link=response.getelementsbytagname('link')[i+1].firstchild.data;
}
else{
 var _title =response.getelementsbytagname('title')[i].firstchild.data;
 var _link = response.getelementsbytagname('link')[i].firstchild.data;
}

  你可以使用checkfortag方法來檢查是否存在特定的標簽:

function checkfortag(tag){
 if(tag != undefined) {
  return true;
 }
 else{
  return false;
 }
}
  存在許多種進行饋送分析的可能性。例如,你可以把項賦到類別上并使得該類別可折迭,這樣用戶就可以對其想觀看的內容進行選擇。作為一個示例,我使用日期來對項進行分類-這可以通過譯解是否針對一個特定項的pubdate不同于前一個項的pubdate并且相應地顯示一新的日期來實現(xiàn):

if(i>1){
 var previouspubdate = response.getelementsbytagname('pubdate')[i-1].firstchild.data;
}
if(pubdate != previouspubdate || previouspubdate == undefined){
 _copy += "<div id='detail'>" + pubdate + "</div><hr align='left' width='90%'/>";
}
_copy += "<a href=/"javascript:showdetails('" + i + "');/">" + _title + "</a><br/><br/>";
document.getelementbyid('copy').innerhtml += _copy;
  注意,上面的最后一部分是showdetails方法,它用于當一用戶從一個饋送中選擇一特定的項時進行細節(jié)顯示。這個方法有一個參數(shù)(項索引值),這個索引用于發(fā)現(xiàn)在該饋送中details結點的索引:

function showdetails(index){
 document.getelementbyid('details').innerhtml = response.getelementsbytagname('description')[index].firstchild.data;
}
  結論

  使用ajax發(fā)送查詢字符串到一個服務器端腳本并檢索一個基于該串的定制響應,這對于任何者都有實現(xiàn)的可能。這樣以來,你的下一個web應用程序也將會充滿了新的可能性。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
av高清在线观看| 一本一道久久a久久精品逆3p| 欧美日韩在线影院| 亚洲天堂五月天| 一区二区三区在线观看av| 美国毛片一区二区三区| 奇米影视777在线欧美电影观看| 欧美激情精品久久久久久| 中出一区二区| 欧美激情一级二级三级在线视频| 久久99久久久精品欧美| 天天操天天干天天爽| 无码精品一区二区三区在线| 久久精品成人| 粉嫩av一区二区三区免费观看| 伊人亚洲精品| 久久久夜色精品| 爱情岛论坛vip永久入口| 日韩欧美国产1| av不卡一区二区| www.黄色一片| 在线视频 日韩| 天堂av一区二区三区在线播放| 国产99久久九九精品无码| 亚洲成人自拍| 亚洲免费网站在线观看| 秋霞综合在线视频| 日韩精品一区在线观看| 色哟哟精品观看| 在线观看午夜看亚太视频| 国产免费一区二区三区在线观看| 欧美黄色免费网站| 99精品国产在热久久下载| 色婷婷综合久久久久久| 国产裸体无遮挡| 九色91视频| 日韩欧美视频一区| 超碰在线中文| 精品一区二区免费看| 四虎5151久久欧美毛片| 亚洲日本伊人| 人人超碰91尤物精品国产| 中文字幕中文在线不卡住| 在线国产1区| 日本a在线免费观看| 在线观看网站黄不卡| 麻豆视频在线看| 日韩av片专区| 中文字幕一区二区三区人妻电影| 717成人午夜免费福利电影| 91香蕉嫩草影院入口| 亚洲精品第一国产综合精品| 成人爽a毛片一区二区免费| 欧美国产精品一区| 久草中文在线视频| 中文字幕三区| 国产日韩视频在线播放| 国产精品视频一区二区三区麻豆| 亚洲一区二区三区视频在线播放| 亚洲欧洲美洲在线综合| 老熟妇高潮一区二区高清视频| 偷拍国模大尺度视频在线播放| 亚洲午夜激情在线| 日本免费中文字幕在线| 都市激情国产精品| 成年人国产在线观看| 91国语精品自产拍在线观看性色| 自拍自偷一区二区三区| 欧美日韩在线免费| 91香蕉国产视频| 亚洲蜜桃av| 亚洲国产精品毛片av不卡在线| 嫩草影院发布页| 国产精品91xxx| www.91av视频.com| 日韩成人午夜电影| 日本黄色一区二区三区| 69国产精品成人在线播放| 久久久日本电影| 青青青草网站免费视频在线观看| 正在播放亚洲| 亚洲欧美精品一区二区三区| 国内自拍视频一区二区三区| 68精品久久久久久欧美| 国产黄色片在线免费观看| 亚洲大胆人体视频| 高清成人免费视频| 韩漫成人漫画| 国产 欧美 日本| 久久久久久久尹人综合网亚洲| 激情综合电影网| 亚洲激情中文| 免费观看四虎精品成人| 视频在线观看免费影院欧美meiju| 免费观看一级特黄欧美大片| av资源免费观看| 可以看污的网站| 日韩精品一区二区三区丰满| 蜜桃在线一区二区| 99热精品久久| 亚洲天堂免费电影| 日韩1区2区| 久久精品日产第一区二区| 亚洲综合激情网| 调教视频免费在线观看| 久久久av网站| 国产精品国产国产aⅴ| 中文字幕国语官网在线视频| av动漫在线播放| 国产一区二区三区免费看| 国产在线一区二区三区| 香蕉视频黄色片| 欧美一级成年大片在线观看| 日韩欧美国产成人一区二区| 日韩成人中文电影| 日本中文字幕视频一区| 亚洲精品资源| 在线观看中文字幕av| 欧美一级播放| 8x8x拔插拔插影库永久免费| 国产亚洲精品美女| 日韩av免费在线| 免费在线一区观看| 四虎精品一区二区免费| 国产精品99免视看9| 欧美片第一页| 色婷婷国产精品免| 伊人久久大香线蕉av超碰演员| 风流少妇一区二区三区91| 日本一区二区三区四区| 美女的奶胸大爽爽大片| 日本大胆在线观看| 999在线观看视频| 亚洲最大色综合成人av| av丝袜天堂网| 亚洲精品资源美女情侣酒店| 久久综合色鬼综合色| 伊人色综合久久| 91超碰国产精品| 亚洲男人av电影| 毛片av一区二区三区| 亚洲bt欧美bt精品777| 欧美国产成人在线| 国产精品免费久久久久影院| 91九色视频在线| 快she精品国产999| 美女av免费在线观看| 欧美日本韩国一区二区| 成人影视亚洲图片在线| 91午夜理伦私人影院| 一级视频在线观看| 国产精品v日韩精品v欧美精品网站| 亚洲妇熟xxxx妇色黄| 秋霞午夜一区二区| 亚洲日韩成人| av伊人久久| 亚洲高清免费观看| 国产女教师bbwbbwbbw| 久久久久久亚洲精品不卡4k岛国| 国产99久久久久久免费看农村| 久久9999免费视频| 青春有你2免费观看完整版在线播放高清| 天堂av在线播放| 少妇高潮 亚洲精品| 日韩久久综合| 精品嫩草影院久久| 一区三区自拍| 一卡二卡三卡在线| 粉嫩av性色av蜜臀av网站| 欧美日韩三级| 国产成人精品男人的天堂538| 凹凸精品一区二区三区| 欧美在线999| 十八禁一区二区三区| 欧美一卡二卡| 91丨九色丨尤物| 久久久久久久| 亚洲天堂一区| www.大网伊人| 卡一精品卡二卡三网站乱码| 高清欧美性猛交xxxx| 日韩电影免费观看在线观看| 蜜桃福利入口| 欧美国产日韩在线观看成人| 一级黄色特级片| 久久99国产精品久久99小说| 免费看污视频的网站| 欧美自拍小视频| 国内视频精品| 亚洲国产成人av好男人在线观看| 精品欧美一区二区精品少妇| 国产精品视频黄色| 国产亚洲欧美日韩精品| 美女的诞生在线观看高清免费完整版中文| 97超碰欧美中文字幕| 免费黄色片在线观看| 97人妻精品一区二区三区动漫| 无码久久精品国产亚洲av影片| 德国一级在线视频| 久蕉在线视频| 久久久久久婷| 欧美色国产精品| 男人天堂视频在线观看| 一个人www视频在线免费观看| 欧美极品欧美精品欧美图片| 中文字幕永久视频| 国产成人亚洲精品青草天美| 国内精品久久久久久99蜜桃| 精品乱码一区| 91麻豆成人精品国产免费网站| 91久久夜色精品国产按摩| 欧美午夜久久| 国产精品亚洲欧美一级在线| 成人h动漫精品一区| 91免费观看| 蜜臀尤物一区二区三区直播| ...中文天堂在线一区| 丰满人妻一区二区三区四区| 国产成人精品在线视频| 三年片观看免费观看大全视频下载| 在线播放国产一区二区三区| 91ts人妖另类精品系列| 成人国产一区| 中文字幕42页丝袜| 69国产精品视频免费观看| 国产www在线| 亚洲男人的天堂在线播放| a级影片在线| 91精品国产乱码久久久久久久久| 欧美乱大交xxxxx另类| 国产精品九九九九九九| av一区二区三区四区| 欧美国产高潮xxxx1819| 国产在线高潮| 欧美剧在线免费观看网站| 视色,视色影院,视色影库,视色网| 国产在线视频在线观看| 蜜桃免费在线视频| 波多野结衣av在线免费观看| 色又黄又爽网站www久久| 中国一级片黄色一级片黄| 成人国产在线观看| 超碰在线中文字幕| 右手影院亚洲欧美| 久久精品电影| 日本亚洲视频在线| 高清一区二区三区| 国产三级在线观看视频| 在线观看网站黄不卡| 欧美色视频一区二区三区在线观看| 激情内射人妻1区2区3区| 成人性生生活性生交12| 欧美tk丨vk视频| 国产精品久久久久久久久久白浆| 亚洲婷婷国产精品电影人久久| 私人高清影院 强乱中文字| 99pao成人国产永久免费视频| 日韩大片免费观看| 青青草原在线免费观看视频| 亚洲精华国产精华精华液网站| 久久精品国产亚洲AV熟女| 精品无码人妻一区二区三区| 国产欧美日韩综合精品一区二区| 欧美日韩第一| 国产精品免费一区二区三区| 91网站视频在线观看| www.日本久久| 欧美另类极品videosbest视频| 欧美无乱码久久久免费午夜一区| 91人妻一区二区三区| 嫩草视频在线免费观看| 欧美精品欧美精品| 亚洲一区 中文字幕| 图片区亚洲欧美小说区| 精品无人区无码乱码毛片国产| 亚洲小视频在线播放| 午夜视频免费在线| av成人免费在线| 最新国产成人在线观看| 柠檬在线导航福利| 78m国产成人精品视频| 精品国产一区二区三区久久久蜜月| 欧美国产日韩一区二区| 国产亚洲一区二区三区在线播放| 国产av国片精品| 91久久久久久| 91亚洲国产成人精品一区二三| 天天摸夜夜添狠狠添婷婷| 日韩中文字幕视频| 亚洲一区二区三区四区五区午夜| 在线观看亚洲欧美| 精品国产99久久久久久宅男i| 国产精品久久在线| 精品色蜜蜜精品视频在线观看| 青青草影院在线观看| 欧美日韩不卡在线| 日韩电影在线观看一区二区| 91精品国产色综合久久| 日韩av成人| 日韩精品一区二区三区四区| 国产在线观看无码免费视频| 亚洲一区二区人妻| 亚洲精品久久久北条麻妃| 色综合久久中文综合久久牛| 91网站在线观看免费| 国产精品久久久久久一区二区| 四虎成人永久地址| 亚洲午夜精品在线| 国模吧精品人体gogo| 尤物视频免费观看| 农村老熟妇乱子伦视频| 天天草天天操| 免费中文日韩| 久久精品国产免费| 欧美熟妇另类久久久久久不卡| 老司机性视频| 亚洲精品综合在线观看| 男女羞羞视频在线观看| 欧美18—20岁hd第一次| 亚洲精品一区二区三区香蕉| 成人免费aaa| 夫妇露脸对白88av| 国产精品稀缺呦系列在线| 蜜桃视频欧美| 99久久综合狠狠综合久久| 成人听书哪个软件好| 成人激情五月天| 想看黄色一级片|