我正在尝试从其他域中获取某些字段的值。另一个域站点具有登录页面。我在浏览器中成功登录并调用 file_get_contents() 函数,但它仍然返回我登录页面 HTML。
我想要我在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);
任何人都可以建议我如何绕过登录页面并访问页面的 HTML。
我在浏览器中成功登录
。因此,现在浏览器可以访问登录后面的页面。
和调用 file_get_contents()
您的PHP程序不是浏览器。它无权访问登录背后的页面。
您需要使用从 PHP 发出的 HTTP 请求登录(然后存储登录系统期望您在每个请求中发回的任何内容......可能是饼干)。