我有一个WordPress博客,其设置要求登录才能查看其中的任何内容。这是一个内部工具,但我们希望它可以在外部访问。这有效,没问题。
但是通过这种设置,访问RSS提要会很幸运。
我认为用curl登录不应该是火箭科学,然后请求所需的页面并输出它。此脚本将存在于内部Web服务器上,因此您可以在内部获取RSS源(因此使用Outlook的用户(如所有者)可以在连接到网络时查看它。)
我已经查看了大量有关如何执行此操作的教程和问题,但没有运气(here are a few of them)。他们似乎都没有完整的脚本。他们都做点点滴滴,我只是不能一起工作。
这是我到目前为止所拥有的:
$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)。任何能够看到我所缺少的人都将不胜感激。
答案 0 :(得分:2)
请尝试以下操作:
curl_setopt($ch, CURLOPT_COOKIESESSION, true);