我正在使用cURL来显示登录系统后面的页面内容。我能够成功登录并显示登录系统后面的第一页,但无法显示任何后续页面。
我对问题的理解是cURL遵循登录后提供的标题。因此,如果订单是login.php - > home.php,我想去account.php,我需要另一个标题指向该页面。
这是对的吗?我可以在登录后使用cURL显示其他页面的内容吗?
答案 0 :(得分:3)
您可能需要保存和传输Cookie。这可以在PHP cURL中完成,如下所示:
$ch = curl_init();
// set your regular options
curl_setopt($ch, CURLOPT_URL, 'http://somedomain.com/login.php');
curl_setopt($ch, CURLOPT_POSTFIELDS, array('user'=>'foo', 'pass'=>'bar'));
// set where cookies are saved
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
// set where cookies are retrieved from when sent to the server
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
// execute login
curl_exec($ch);
// do another request
curl_setopt($ch, CURLOPT_URL, 'http://somedomain.com/restricted_page.php');
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_exec($ch);
答案 1 :(得分:0)
您需要处理Cookie。会话身份验证需要它们。
从第一个电话中获取Cookie标头,并将其与所有后续电话一起发送。
答案 2 :(得分:0)
您必须知道登录页面(通常)的工作方式。当您登录某个站点时,该站点将向您发送一个会话cookie,您每次请求新页面时都会再次发送该站点cookie。因此,如果您想模拟登录,您必须存储登录返回的cookie,然后将其包含在网站的每个其他请求中。