2011-01-18 13 views
1

다음 코드를 사용하여 username/password login으로 보호되는 페이지에 액세스하고 있습니다.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 문서에서 거의 정확하게 복사됩니다. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니?

+0

양식의 모든 입력란에 데이터를 제출했는지 확인하십시오. 제출 버튼이 없습니다. 로그인 요청 (POST)의 응답을 확인할 수도 있습니다. – Phil

답변

2

해당 페이지에 대한 빠른 테스트를 통해 실제로 로그인 값을 처리하기위한 POST 데이터의 일부로 제출 버튼 값 (실제 값은 존재하지 않아야 함)을 포함시켜야한다는 것을 알 수 있습니다 .

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

로그인 시도에서 응답을 확인한 경우이를 알았을 것입니다.

+0

관심 없어, 무슨 소리 야? 내가 가진 유일한 응답은 로그인 페이지가 (사용자의 홈 화면 대신에) 예상 한대로 다시 전송된다는 것입니다. 내가 볼 수있는 오류가 없습니다 = S – gsteinert

+0

@gsteinert POST 요청의 응답입니다. 다시 양식을 본다면 그 양식이 효과가 없었 음을 의미합니다. – Phil

0

해결 방법 : ->setCookieJar()을 사용하는 대신 Zend_Http_CookieJar을 수동으로 인스턴스화하고 전달해야합니다. 이렇게하면 실제로 로그인 쿠키를받은 경우보다 쉽게 ​​디버깅 할 수 있습니다.

+0

시계를 추가하는 데 유용하지만'setCookieJar'에 의해 생성 된 쿠키 항아리에는 항상 접근 할 수 있습니다 – Phil

1

어제이 문제가 있었는데 API site을 확인하십시오.

->setCookieJar(true) 

매개 변수 true는 새 매개 변수를 생성하며,이 매개 변수 없이는 작동하지 않습니다.

관련 문제