使用cURL登录远程网页后,如何访问其他网页并将其作为字符串返回?

时间:2010-09-11 19:04:37

标签: php curl

好的,我对cURL很新。我已经设法使用cURL登录网页并发送POST数据,但是一旦我登录,我希望它在相同的SESSION下加载各种网页并将数据提取为字符串,这样我可以检查网页是否包含特定的字符串。

我将如何做到这一点?

例如:

登录http://example.com/login.php

但登录后,我需要它访问http://example.com/site.php?page=news并将该页面的内容作为字符串返回。

1 个答案:

答案 0 :(得分:2)

通常取决于远程站点如何处理状态管理。

在大多数情况下,这将通过cookie,因此您需要指示curl跟踪cookie。

类似的东西:

curl_setopt($curl, CURLOPT_COOKIEJAR, '/tmp/cookies');  //where to write cookies received from server
curl_setopt($curl, CURLOPT_COOKIEFILE, '/tmp/cookies'); //where to read cookies to send in requests.

应该让你从那里开始。

修改 公然复制/粘贴示例(from here - 用大约20秒的谷歌搜索“php curl登录”找到。这看起来是正确的:

<?php 
$url ="http://login.yahoo.com/config/login?.src=ym&.intl=us&.partner=&.done=http%3A%2F%2Fmail.yahoo.com%2F"; 
$ch = curl_init();      
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/cookie.txt'); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, "login=emailid&passwd=password&&submit=Sign In"); 
ob_start();      
curl_exec ($ch); 
ob_end_clean();  
curl_close ($ch); 
unset($ch); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "/temp/cookie.txt"); 
curl_setopt($ch, CURLOPT_URL,"http://us.f515.mail.yahoo.com/ym/login?"); 
$result = curl_exec ($ch); 

curl_close ($ch); 
echo $result;