2012-04-26 71 views
2

不可否認,我是新手,只知道危險。如何使用CURL而不是file_get_contents重寫此RSS閱讀器?

由於安全考慮,主機服務器不允許file_get_contents。我如何使用curl而不是file_get_contents來重寫下面的代碼?

這是一個jQuery手機網站上的RSS閱讀器。該代碼是基於一個教程,我發現在這裏:nets.tutplus.com/rssreader

<?php 
$siteName = empty($_GET['siteName']) ? 'Website' : $_GET['siteName']; 
$siteList = array(
'Website2', 
'Website3', 
'Website4', 
'Website5', 
'Website6', 
); 
// For security. 
if (!in_array($siteName, $siteList)) { 
$siteName = 'Website'; 
} 
$location = "http://query.yahooapis.com/v1/public/yql?q="; 
$location .= urlencode("SELECT * FROM feed where url='http://feeds.feedburner.com/$siteName'"); 
$location .= "&format=json"; 
$rss = file_get_contents($location, true); 
$rss = json_decode($rss); 
?> 

編輯:將這項工作?

$location = "http://query.yahooapis.com/v1/public/yql?q="; 
$location .= urlencode("SELECT * FROM feed where url='http://feeds.feedburner.com/$siteName'"); 
$location .= "&format=json"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $location); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, trim($request)); 
$rss = curl_exec($ch); 
curl_close($ch); 

$rss = json_decode($rss); 
+0

如果您的託管服務提供商不允許file_get_contents,他們肯定不會允許PHP cURL(它需要與PHP分開安裝)。 – honyovk 2012-04-26 18:08:47

+0

謝謝你的擡頭。 – James 2012-04-26 18:23:20

+0

您可能只需打開一個php.ini文件就可以打開file_get_contents(搜索您的提供商的詳細信息) – 2012-04-26 18:28:55

回答

1

您可以完全刪除CURLOPT_POST...行。 $request未設置,並且您不需要在此示例中發出發送請求來執行GET請求。您可能需要也可能不需要使用CURLOPT_FOLLOWLOCATION - 如果捲曲尚未根據需要運行,請將其打開。

+0

感謝您的幫助。我相信,現在我已經掌握了所有上面的代碼。我是否也應該取出CURLOPT_POSTFIELDS? – James 2012-04-26 18:42:05

+0

如果不需要,你可以。 'file_get_contents'沒有發佈任何內容。 – 2012-04-26 18:45:08

+0

我沒有信譽upvote,但你絕對幫助!只是一個fyi:我試圖拿出file_get_contents,並沒有奏效。我能夠取出CURLOPT_FOLLOWLOCATION – James 2012-04-26 18:56:50