2012-01-18 63 views
3

我有一個WordPress博客,設置爲需要登錄才能查看其上的任何內容。這是一個內部工具,但我們希望它可以在外部訪問。這工作,沒問題。登錄到特定的WordPress頁面與捲曲

但是使用這種設置,訪問RSS提要的運氣不錯。

我想它不應該是火箭科學用curl登錄,然後請求所需的頁面並輸出它。該腳本將駐留在內部網絡服務器上,因此您可以在內部獲取RSS源(使用Outlook等用戶可以在連接到網絡時查看它)。

我已經看了一大堆輔導,並就如何做到這一點的問題,沒有運氣(hereareafewofthem)。他們似乎沒有一個完整的腳本。他們都做點小事,我不能一起工作。

這是我到目前爲止有:

$username='dummyUser'; 
$password='dummyPassword'; 
$url='http://url.wordpress.org/'; 

$postdata = 'log='. $username .'&pwd='. $password .'&wp-submit=Log%20In&redirect_to='. $url .'wp-admin/&testcookie=1'; 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url . 'wp-login.php'); 
curl_setopt ($ch, CURLOPT_HEADER, 1); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6'); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_REFERER, $url . 'wp-admin/'); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 

$end = strpos($result, 'Content-Type'); 
$start = strpos($result, 'Set-Cookie'); 
$parts = split('Set-Cookie: ',substr($result, $start, $end-$start)); 
$cookies = array(); 
foreach ($parts as $co) { 
    $cd = split(';',$co); 
    if (!empty($cd[0])) 
     $cookies[] = $cd[0]; 
} 


curl_setopt ($ch, CURLOPT_URL, $url . 'feed/'); 
curl_setopt ($ch, CURLOPT_COOKIE, implode(';',$cookies)); 
curl_setopt ($ch, CURLOPT_HEADER, 0); 
$result = curl_exec ($ch); 

echo $result; 

最終的結果我得到的只是登錄屏幕顯示,所以我猜的東西是怎麼回事怪異與餅乾(我試圖按照this example) 。任何人都可以看到我失蹤的東西將不勝感激。

回答

2

嘗試以下操作:

curl_setopt($ch, CURLOPT_COOKIESESSION, true);