【问题标题】:Zend_Http_Client not storing cookiesZend_Http_Client 不存储 cookie
【发布时间】:2011-06-10 19:36:07
【问题描述】:

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

  //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 文档中复制而来的。谁能看到我做错了什么?

【问题讨论】:

  • 确保为表单中的每个字段提交数据。您缺少提交按钮。您还可以检查登录请求 (POST) 的响应。

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


【解决方案1】:

对该页面的快速测试表明,您确实需要将提交按钮值(实际值无关紧要,它必须存在)作为 POST 数据的一部分来处理登录。

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

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

【讨论】:

  • 出于兴趣,你在说什么回应?我得到的唯一回应是再次发送登录页面(而不是我期望的用户主屏幕)。没有错误,我可以看到 =S
  • @gsteinert 来自 POST 请求的响应。如果您再次看到该表单,则表示它没有工作。
【解决方案2】:

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

->setCookieJar(true)

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 有助于添加手表,但您始终可以访问setCookieJar创建的cookie jar
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2018-10-30
    • 2023-03-29
    相关资源
    最近更新 更多