1

次のコードを使用して、ユーザー名/パスワード ログインで保護されたページにアクセスしています。

  //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 ドキュメントからほぼそのままコピーされます。誰かが私が間違っていることを見ることができますか?

4

3 に答える 3

2

そのページでいくつかの簡単なテストを行うと、ログインを処理するための POST データの一部として、送信ボタンの値を実際に含める必要があることがわかります (実際の値は関係ありません。存在する必要があります)。

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

ログイン試行からの応答を確認すれば、これに気付くでしょう。

于 2011-01-18T01:36:26.320 に答える
1

昨日この問題がありました。API サイトを見てください。

->setCookieJar(true)

パラメータtrueは新しいCookieJarを構築しますが、このパラメータがないとうまくいきませんでした。

于 2011-01-23T17:00:51.160 に答える
0

解決策ではありませんが、単に を使用する代わりに、->setCookieJar()手動で a をインスタンス化しZend_Http_CookieJarて渡す必要があります。これにより、ログイン Cookie を実際に受け取った場合に、より簡単にデバッグできます。

于 2011-01-18T01:39:03.683 に答える