2011-12-18 11 views
1

이것은이 포럼에 대한 나의 첫 번째 질문이지만, 그것에 대한 답변을 찾으면 이전에 도움이되었습니다. 그래서 PHP와 CURL을 사용하여 내 계정에 자동으로 로그인하려고합니다.PHP CURL 자동 로그인

저는 PHP에 익숙하지 않지만 지금까지는 웹 페이지에 연결할 때마다 게시물을 올리거나 얻거나 리다이렉트를 따라 모든 일을했습니다.

문제는 로그인하려는 계정에 기억할만한 단어 페이지가있는 사용자/암호 페이지가 있고 기억할만한 단어의 일부 문자를 입력해야한다는 것입니다.

이제는 첫 페이지를 전달하고 기억할만한 단어 문자를 입력해야하는 두 번째 페이지를 가져 오지 만 그럴 때 (두 번째 게시물) 작동하지 않을 때 - 로그인으로 리디렉션됩니다. 다시.

이제 문제가 무엇인지 알아보기 위해 노력했지만 여전히 작동하지 않는 이유는 무엇인지 잘 모릅니다. 나는 JSESSIONID가 정상적인 로그인에서 서버에 의해 전달되는 것을 관찰했다. 내 스크립트를 실행할 때 JSESSIONID가 변경된다.

curl_setopt($this->curl, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt($this->curl, CURLOPT_COOKIEJAR, 'cookie.txt'); 

을하지만 파일을 확인할 때 그것은 비어 있으며이 생성 된 이후 수정되지 않은 : 내가 사용하고 있습니다. Amd 예. 파일을 쓸 수 있습니다 (권한은 777 개입니다).

이것이 문제가되는지 다른지는 모르겠지만 답변을 찾았지만 다른 것들을 시도했지만 아무 것도 효과가 없었습니다. 따라서 어떤 아이디어라도 감사 할 것입니다.

는 여기

+0

당신이 생각하는 작업 디렉토리에서 스크립트가 실행되고 있음을 확인한 적이 있습니까? ['getcwd()'] (http://php.net/manual/en/function.getcwd.php)로 다시 확인하고 PHP가'var_dump (is_writable ('cookie.txt) '));'. 또한 응답의 헤더를 받고 실제로 쿠키를 받았는지 확인하기 위해'curl_setopt ($ this-> curl, CURLOPT_HEADER, TRUE); '를 수행해야합니다. – DaveRandom

+0

쓰기가 가능하고 테스트가 가능하면 명령을 실행했습니다. 그것은 사실을 반환합니다. 헤더에 관해서는 Firefox에서 Live Http Headers 플러그인을 사용하고 있기 때문에 서버에 요청할 때 쿠키가 사용됩니다. 파일 크기는 여전히 0 B이며 수정 된 마지막 날짜는 생성 된 시점입니다. 내가 secons 게시 할 때 헤더를 인쇄하면 얻을 수 있습니다 : Array ([0] => HTTP/1.1 302 Set [1] => Set-Cookie : iApply-PROD-COOKIE = R1294003214 – user1104866

+0

그래서 @DaveRandom 어떻게 할 수 있습니까? 일부 쿠키가 설정되어 있지만 모든 쿠키를 볼 수 있습니다. 내가 정상적으로 로그인 할 때 JSESSIONID는 두 번째 POST를 수행 할 때 여기에 그대로 남아 있으며이를 찾지 못하고 새로운 요청을 생성하는 것처럼 보입니다. – user1104866

답변

0

것은 내가 작품을 확인할 수있는 예입니다 감사합니다. 그것은 당신에게 cookieJar 파일의 전체 경로를 보여주고 스크립트의 실행 위치로부터 전체 경로를 얻습니다. 그래서 대부분의 OS에서 작동 할 것입니다.

<?PHP 
$cookiepath = __DIR__.DIRECTORY_SEPARATOR.'cookieJar.txt'; 
echo "Saving cookies to: $cookiepath\n"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0'); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiepath); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiepath); 
curl_setopt($ch, CURLOPT_HEADER ,1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
$data = curl_exec($ch); 
?>