2011-10-27 2 views
11

메신저 URL을 가져 오기 위해 PHP를 통해 컬 사용. 나는 페이지, 머리말 및 모두를 성공적으로 다운로드 할 수있다. 그러나 모든 페이지에서 반환 된 쿠키는 지정된 파일에 저장되지 않습니다. 권한 등을 확인했는데 아무 것도 평범하지 않은 것 같습니다. 나는 내 코드에서 무언가가 꺼져 있다고 생각하기 시작했다.php를 사용하여 cURL 요청에 대한 응답의 쿠키를 어떻게 저장합니까?

$get_cookie_page = 'http://www.google.ca'; 
echo curl_download($get_cookie_page); 

function curl_download($Url){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $Url); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
    $http_headers = array(
        'Host: www.google.ca', 
        'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2', 
        'Accept: */*', 
        'Accept-Language: en-us,en;q=0.5', 
        'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
        'Connection: keep-alive' 
       ); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $http_headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    $output = curl_exec($ch); 
    curl_close($ch); 
    return $output; 
} 

도움을 주시면 감사하겠습니다.

+0

코드가 좋을 것 같습니다. 저장할 쿠키가 1000 % 확실합니까? – DaveRandom

+0

Curl은 세션 쿠키를 파일에 기록하지 않고 영구적 인 쿠키 만 기록합니다. –

+0

@DaveRandom : 예 쿠키를 저장할 수 있습니다. –

답변

19

감사합니다 여러분. 그러나 문제는 완전히 다른 것이 었습니다. Windows 서버에서 작업 중이며 cURL이 cookie.txt의 경로를 읽을 수 없다고 언급 했어야합니다.

사용 :

curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt'); 

대신 :

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 

문제를 해결했다.

+0

'FILE'을'__FILE__'으로 대체하십시오. 대답 해 주셔서 감사합니다. 정말 도움이되었습니다. –

+0

@Andrew 원래 답변을 수정했습니다. 실수를 포착 해 주셔서 감사합니다. –

4

쿠키 jar 파일의 절대 경로를 사용하여 저장 위치를 ​​확인하고 거기에 쓸 수있는 권한이 있음을 알 수 있습니다.

컬 매장은 (만료 시간없이입니다) 소위 세션 쿠키를 포함한 파일을 알고 모든 쿠키의 모든 도움을

관련 문제