2016-09-26 5 views
0

사이트에 자동 로그인하여 리디렉션하려고합니다. 나는 여기에 컬을 사용하여 이것을하고 있지만 내 코드는 그게 나를 위해 일하지 않는다. 자동 로그인을하지 않아도 내 로그인 정보가 정확하다. 직접 로그인 할 수 있지만 PHP는 컬을 통과 할 수 없다.PHP 자동 로그인 및 컬을 사용하여 리디렉션

function login($url,$data){ 
    $fp = fopen("cookie.txt","w"); 
    fclose($fp); 
    $login = curl_init(); 
    curl_setopt($login,CURLOPT_COOKIEJAR,"cookie.txt"); 
    curl_setopt($login,CURLOPT_COOKIEFILE,"cookie.txt"); 
    curl_setopt($login,CURLOPT_TIMEOUT, 40000); 
    curl_setopt($login,CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($login,CURLOPT_URL,$url); 
    curl_setopt($login,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); 
    curl_setopt($login,CURLOPT_FOLLOWLOCATION,TRUE); 
    curl_setopt($login,CURLOPT_POST,TRUE); 
    curl_setopt($login,CURLOPT_POSTFIELDS,$data); 
    ob_start(); 
    return curl_exec($login); 
    ob_end_clean(); 
    curl_close($login); 
    unset($login); 

    } 
function grab_page($site){ 
    $ch= curl_init(); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); 
    curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); 
    curl_setopt($ch,CURLOPT_TIMEOUT,40); 
    curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt"); 
    curl_setopt($ch,CURLOPT_URL,$site); 
    ob_start(); 
    return curl_exec($ch); 
    ob_end_clean(); 
    curl_close($ch); 
    unset($ch); 
     } 
function post_data($site,$data){ 
    $datapost = curl_init(); 
    $headers=array("Expect:"); 
    curl_setopt($datapost,CURLOPT_URL,$site); 
    curl_setopt($datapost,CURLOPT_TIMEOUT,40000); 
    curl_setopt($datapost,CURLOPT_HEADER,TRUE); 
    curl_setopt($datapost,CURLOPT_HTTPHEADER,$headers); 
    curl_setopt($datapost,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); 
    curl_setopt($datapost,CURLOPT_POST,TRUE); 
    curl_setopt($datapost,CURLOPT_POSTFIELDS,$data); 
    curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt"); 
    ob_start(); 
    return curl_exec($datapost); 
    ob_end_clean(); 
    curl_close($datapost); 
    unset($datapost); 

    } 
echo login("https://www.jollywallet.com/api/aff","token=00D3A9E8-A9F4-F21B-122E-54AF4B00A0E8&captcha%5Binput%5D=&captcha%5Bid%5D=&type=login&[email protected]&dist_id=0&dist_sub_id=0&password=4704e86d0ea8a20752a9b882b9a2a5f9&reg_option=2"); 

echo grab_page("https://www.jollywallet.com/jollywallet/storelist"); 

답변

0

당신이 당신의 오류가 무엇인지 설명하지 않습니다 다음은 내 코드입니다.

당신이 로그인하고 서버에서 올바른 응답을 얻지 만 웹 리디렉션을 사용하거나 다른 컬을 사용하여 다른 페이지로 이동하지만 두 번째 컬의 응답이 쿠키에 다시 로그인 페이지 인 경우. 예 쿠키를 저장하지만 일부 사이트는 쿠키를 설정하기 위해 자바 스크립트를 사용합니다. 그러면 브라우저가 페이지를로드하여 쿠키가 제대로 작동하지 못하게합니다.

잘못 다시 로그인하는 데 사용하는 첫 번째 컬 응답을 보내면 일부 데이터가 전송되지 않습니다. 일부 사이트는 숨겨진 입력을 사용하여 보내야하며 어떤 경우에는 숨겨진 입력 값의 값을 자바 스크립트로 채워야하며 사용자가 직접 입력해야합니다.