2017-10-06 197 views
-2

我想从我的其他域获取一些字段的值。 其他域名网站有一个登录页面。我正在浏览器中成功登录,并调用了file_get_contents()函数,但它仍然返回我登录页面的HTML。CURL成功登录重定向到登录页面

我想要在URL中传递的页面的HTML。

这里是添加cookie文件

$COOKIEFILE = dirname(__FILE__) . '/cookie.txt'; 
$formFields['username'] = 'XXXXXX'; 
$formFields['password'] = 'XXXXXX'; 
$ch = curl_init(); 

// set some options on the handle 
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_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $COOKIEFILE); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $COOKIEFILE); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120); 
curl_setopt($ch, CURLOPT_URL, 'https://www.mydomain.lcl/login'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($formFields)); 
$data = curl_exec($ch); 

第二请求登录

curl_setopt($ch, CURLOPT_URL, 'https://www.mydomain.lcl/dashboard'); 
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt'); 
$result = curl_exec($ch); 

后,任何人都可以PLZ建议我如何绕过登录页面和访问页面的HTML后,我的代码。

+0

服务器上的'file_get_contents()'与浏览器中的登录/会话完全无关。您需要在服务器上使用cURL登录远程服务器,然后以登录用户身份登录页面。 – jeroen

回答

0

我做成功登录的浏览器

...所以现在浏览器可以访问登录后的页面。

和调用file_get_contents()函数

你的PHP程序不是浏览器。它无法访问登录后的页面。

您需要使用您从PHP制作的HTTP请求进行登录(然后存储任何登录系统期望您发送的每个请求......可能是cookie)。

+0

是的,有道理。我会尝试这个。谢谢 –

+0

嘿昆汀。我做了同样的PLZ看到我更新的代码。 hee在随后的请求中发送一个cookie,但仍然将它重定向到一个登录页面。 –