Zend_Http_Client不存储cookie

时间:2011-01-18 01:20:15

标签: php zend-framework http cookies zend-http-client

我使用以下代码访问受用户名/密码登录保护的页面。

  //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 个答案:

答案 0 :(得分:2)

在该页面上进行的一系列快速测试表明,您确实需要包含提交按钮值(实际值无关紧要,只需要存在)作为要处理的登录的POST数据的一部分。

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

如果您检查了登录尝试的响应,您会注意到这一点。

答案 1 :(得分:1)

昨天我遇到了这个问题,看看API site

->setCookieJar(true)

参数true构造一个新的CookieJar,没有这个参数它对我不起作用。

答案 2 :(得分:0)

不是解决方案,但是:您应该手动实例化->setCookieJar()并传递它,而不是仅使用Zend_Http_CookieJar。这样,如果您实际收到登录cookie,则可以更轻松地进行调试。