利用PHP和AJAX創(chuàng)建RSS聚合器(2)_PHP教程
推薦:PHP初學(xué)者頭疼問題總結(jié) 文本關(guān)鍵字:程序設(shè)計/PHP/技巧 【1】頁面之間無法傳遞變量 get,post,session在最新的php版本中自動全局變量是關(guān)閉的,所以要從上一頁面取得提交過來得變量要使用$_GET['foo'],
創(chuàng)建定制的PHP對象
我用PHP創(chuàng)建了一個小型RSS類,它在本地服務(wù)器上創(chuàng)建一個請求饋送的副本,這樣它可以為我們稍后要創(chuàng)建的XML HTTP Request對象所存取。典型地,你不能跨域請求一個文件,這意味著你要請求的文件需要位于本地服務(wù)器上。這個類是一種解決跨域問題的辦法,因為它創(chuàng)建該饋送的一個副本,這個副本在本地服務(wù)器上被請求并且把本地路徑返回到該饋送,然后它由該Request對象來存取。
這個類中唯一的方法是一個請求方法,它僅有一個指向所請求的RSS 饋送的URL的參數(shù)。然后,它通過rss的名字來檢查是否一目錄位于本地服務(wù)器上。如果不存在,就創(chuàng)建一個并把其權(quán)限模式設(shè)置為0666,這意味著該目錄可讀寫。當(dāng)被設(shè)置為可讀的時,該目錄就可以在以后被存��;而當(dāng)被設(shè)置為可寫的時,就可以把該饋送的一個副本寫向本地服務(wù)器上的目錄:
//如果不存在目錄就創(chuàng)建一個
$dir = "rss";
if(!is_dir($dir))
{
mkdir($dir, 0666);
}
注意
在一臺Windows機(jī)器上,對于PHP 4.2.0及以上版本中模式設(shè)置是不被要求的。但是,如果它存在的話,它將被忽略;因此,我保留了它,以備該工程被遷移到一臺UNIX或Linux服務(wù)器上。
在把饋送復(fù)制到該服務(wù)器前,我們需要一個唯一的文件名。我對這個完整的URL使用了md5加密方法以確保所有饋送的名字是唯一的。通過這個新的文件名,它可以連接一個描述指向該文件的目錄的字符串;這將在創(chuàng)建該饋送的副本時使用:
//創(chuàng)建唯一的命名
$file=md5($rss_url);
$path="$dir/$file.xml";
通過使用被定義在上面的路徑和到原始的被請求的饋送的URL的參考,現(xiàn)在我們能創(chuàng)建該文件的一個副本。最后,把該路徑返回到該新文件,作為對該請求的響應(yīng):
//復(fù)制饋送到本地服務(wù)器
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";
//復(fù)制饋送到本地服務(wù)器
copy($rss_url, "$path");
return $path;
}
}
}
?>
為了存取該PHP類中的方法,需要有一個請求文件來擔(dān)當(dāng)?shù)皆擃惖囊粋接口,這也正是我們正在請求的文件。這個文件首先驗證從該請求查詢的一口令變量,或者返回一條指定該請求者不是一名經(jīng)授權(quán)的用戶的消息,或者用指向RSS饋送(該饋送在由請求方法處理后被復(fù)制到本地服務(wù)器)的路徑作出響應(yīng)。為了響應(yīng)該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";
}
?>
分享:Php高手帶路--問題匯總解答 1:為什么我得不到變量 我在一網(wǎng)頁向另一網(wǎng)頁POST數(shù)據(jù)name,為什么輸出$name時卻得不到任何值? 在PHP4.2以后的版本中reGISter_global默認(rèn)為off 若想取得從另一頁面
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時間
- PHP中獎概率的抽獎算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運算符優(yōu)先級介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-利用PHP和AJAX創(chuàng)建RSS聚合器(2)
。