2012-03-19 6 views
0

글쎄, 일부 페이지에서 cURL을 사용하여 로그인하고 싶습니다. 브라우저의 해당 양식에 주소 표시 줄에이 데이터를 붙여 넣을 때 http://mywebpage.net/login.php?username=HERESMYUSERNAME&password=dded0102f44e7e0809520eb93055cb16 페이지로 이동하면 http://mywebpage.net/user.php 페이지로 이동합니다. 모든 것이 작동합니다. 이제 cURL을 사용하여 동일한 효과를 얻으려고하지만 무언가가 작동하지 않습니다.cURL이 작동하지 않습니다.

$url="http://mywebpage.net/login.php"; 
$cookie="cookie.txt"; 

$postdata = "username=cow&password=ass"; 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 

if (!$result) { 
     $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     curl_close($ch); // make sure we closeany current curl sessions 
     die($http_code.' Unable to connect to server. Please come back later.'); 
    } 
echo $result; 
curl_close($ch); 

것은 나에게 빈 입력의와 로그인 페이지를 보여주는 것 그리고 그것은 나를 로그인하고 올바른 주소로 이동하지 않습니다.

$url="http://mywebpage.net/login.php?username=user&password=ddad0102f44e7f0800354eb11155cb16"; 
$cookie="cookie.txt"; 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 

if (!$result) { 
     $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     curl_close($ch); // make sure we closeany current curl sessions 
     die($http_code.' Unable to connect to server. Please come back later.'); 
    } 
echo $result; 
curl_close($ch); 

내가 지금 /all.php 자신을 리디렉션 할 수 있습니다 방법 : 나는 쇼를 www.mywebpage.net/user.php 입력 여기

작동 코드 "401 ERR"?

+0

당신은 GET' 방법'로 데이터를 전송하고 그것을 작동합니다. 코드에서 시도해보십시오.'curl_setopt ($ ch, CURLOPT_POST, 0);로 변경하여 GET으로 전송하십시오. – safarov

+0

'CURLOPT_FOLLOWLOCATION'을 0으로 설정하여 curl * not *에 올바른 주소로 이동하도록 명시 적으로 지시하십시오. 코드가 다른 곳에서 복사하여 붙여 넣은 것이라면, 한 줄씩 살펴보고 각 옵션의 의미를 문서에서 확인하십시오. – JJJ

답변

1

나는 인증이 당신이 될 것 작동하는 경우에도, 당신은 CURL POST를 사용하는 대신

  • CURLOPT_FOLLOWLOCATION false로 설정 GET하지만 로그인 스크립트가 리디렉션 user.php합니까된다

    1. 잘못된 3 가지를 참조 빈 응답 받기. 나는 CURLOPT_FOLLOWLOCATION을 true로 설정해야한다고 생각합니다.
    2. URL이 유효하지 않거나 작동하지 않습니다. 이것이 실제 URL인지 아니면 단지 예제인지 확실하지 않습니다.

    감사합니다 첫 번째 예에 :

  • +0

    작동합니다! 고마워요! :) haha, 나는 지금 매우 행복하다! ; D – breq

    +0

    마지막 질문. 이제는 www.mywebpage.net/all.php로 돌아갈 수 있습니다. 로그인 후 user.php로 리디렉션되고 all.php 파일을보고 싶습니다. – breq

    +0

    간단하게 세션과 쿡 정보를 사용합니다. 그냥 all.php를 가져 오면 로그인 정보를 다시 보낼 필요가 없습니다. – Baba

    관련 문제