Не удается войти в систему между поддоменом и доменом (используя goutte или cUrl

#php #curl #goutte

#php #curl #goutte

Вопрос:

Я использую goutte для входа в закрытую область с целью извлечения файлов. Логин находится в поддомене, и это работает, я также могу переходить по ссылкам на странице после входа в систему. Но мне нужно использовать другой адрес для поиска данных, и именно там я больше не авторизован.

Код, который я использую:

 $client = new Client();
$client->getClient()->setDefaultOption('config/curl/'.CURLOPT_SSL_VERIFYHOST, FALSE);
$client->getClient()->setDefaultOption('config/curl/'.CURLOPT_SSL_VERIFYPEER, FALSE);
$crawler = $client->request('GET', 'https://subdomain.domain.com/subfolder/addr.jsp');
// this section works fine
$form = $crawler->selectButton('login')->form();
$crawler = $client->submit($form, array('j_username' => 'XXXX', 'j_password' => 'YYYY'));
$error = $crawler->filter('td > font > strong')->count();
if ($error > 0){
  echo $crawler->filter('td > font > strong')->eq(0)->text();
} else {
  echo "no errors here<br />";
}

// this section shows I'm no longer logged in when I get the page
$addr = 'https://www.domain.com/portal/restricted_area';
$crawler = $client->request('GET', $addr);
// I use this to verify that the page shows the username = I'm logged in, but I always get the page that says I have to login
$loginProof = $crawler->filter('li.arearis > a')->count();
if ($loginProof > 0){
  echo 'We are logged in';
  // crawl more pages
} else {
  echo 'Not logged in';
}
  

Перед использованием goutte я пробовал cURL, но с теми же результатами. Сохранялись файлы cookie. Я не понимаю, что я мог делать неправильно. Та же операция работает нормально, если я делаю это вручную в браузере, конечно.

Ответ №1:

Я отвечу на это сам, поскольку мне удалось решить проблему. В самом коде нет ничего плохого, мне просто нужно было добавить некоторые параметры к адресу страницы входа. Таким образом, после входа в систему сервер перенаправлял меня в нужную область веб-сайта, и оттуда я мог оставаться в системе для выполнения дальнейших запросов.