Zend_Http_Client не хранит куки - PullRequest
1 голос
/ 18 января 2011

Я использую следующий код для доступа к странице, защищенной логином / паролем.

  //Fetch homepage
  $client = new Zend_Http_Client();
  $client->setCookieJar();
  $client->setUri('https://www.yourloungelearning.co.uk/crew_trainer/login.php');
  //$client->setParameterPost( 'username', $_SESSION['username'] );
  //$client->setParameterPost( 'password', $_SESSION['password'] );
  $client->setParameterPost( 'username', '#####' );
  $client->setParameterPost( 'password', '#####' );
  $response = $client->request('POST');

  // Now we're logged in, get private area! 
  $client->setUri('https://www.yourloungelearning.co.uk/crew_trainer/index.php');
  $response = $client->request('GET');

  echo $response->getBody();

Эхо в конце всегда снова возвращает экран входа в систему (что указывает на неудачный вход в систему). Это почти точно скопировано из документов Zend. Кто-нибудь может увидеть, что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 18 января 2011

Быстрая пара тестов на этой странице показывает, что вам действительно нужно включить значение кнопки отправки (фактическое значение не имеет значения, оно просто должно присутствовать) как часть данных POST для обрабатываемого входа в систему.

$client->setParameterPost('submit', 'Login');

Вы бы заметили это, если бы проверили ответ от попытки входа в систему.

1 голос
/ 23 января 2011

У меня была эта проблема вчера, посмотрите на сайт API .

->setCookieJar(true)

Параметр true создает новый CookieJar, без этого параметра он не работал для меня.

0 голосов
/ 18 января 2011

Не решение, но: вместо использования ->setCookieJar(), вы должны вручную создать экземпляр Zend_Http_CookieJar и передать его.Таким образом, вы можете легче отлаживать, если вы действительно получили cookie для входа в систему.

...