2012-01-14 4 views
0

스크립트에 로그인 정보를 보내는 cURL 스크립트가 있습니다.cURL이 setcookie를 트리거하지 않습니다

//open connection 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url; 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields1); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 
//open connection 

스크립트에는 setcookie 기능이 있습니다.

setcookie("cookie_email",$email,time()+(3600*24*$i),"/"); 
setcookie("cookie_password",$password,time()+(3600*24*$i),"/"); 

양식을 사용하여 양식에 로그인 할 때 모든 것이 예상대로 작동합니다. 어떤 이유로 cURL을 실행할 때 setcookies 함수를 건너 뜁니다.

나는 인터넷을 다 해봤고 해결책을 찾지 못했습니다. 쿠키를 설정하지 않는 이유가 확실하지 않습니다.

올바른 방향으로 걸을 때마다 큰 도움이됩니다.

감사합니다, 필

UPDATE! - 점점 더 가까워졌습니다.

좋아, 쿠키를 가져 와서 쿠키 파일에 넣는 몇 가지 변경을했습니다. 내가 설정 한 두 가지 문제.
1. 파일의 쿠키 된 비밀번호는 다음과 같습니다. deleted 2. 쿠키가 브라우저에 설정되어 있지 않습니다.

파일에 md5 ($ 비밀번호)를 가져 오는 방법은 다음과 같습니다. curl_setopt ($ ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt'); 브라우저에 쿠키를 설정 했습니까?

+1

가능한 중복 파일 자체)를 작성합니다 [ PHP와 cURL 쿠키] (http://stackoverflow.co m/questions/1625111/php-and-curl-cookies) – mario

+0

내 서버의 submit.php 스크립트를 가리키는 페이스 북 등록 양식을 사용하고 있습니다. 스크립트는 사용자를 데이터베이스에 추가 한 다음 방금 생성 한 사용자 이름과 암호를 검색하여 로그인 스크립트로 보냅니다. 로그인 스크립트가 쿠키를 설정합니다. 브라우저에서 쿠키를 설정하기 전에 사용자가 사이트를 방문해야한다는 언급이 있습니다. 그 (것)들이 나의 제출 원본을 명중하는 것은 이것을 달성하지 않는가? 또는 상품에 쿠키 변수를 설정하고 스크립트를 처리 할 수 ​​있습니까? – krazymatty

+0

'UserBrowser-> YourScript'와'YourScript-> ServerForm'은 별개의 HTTP 연결입니다. 쿠키는 건너 뛰지 않습니다. 그들을 전달하면 아마도 도움이되지 않을 것입니다. (세부 정보가 너무 적습니다.) – mario

답변

2

쿠키를 저장하고로드 할 위치를 설정하려면 curl에 CURL_COOKIEJAR 및 CURL_COOKIEFILE 옵션을 설정해야합니다.

편집은 : 귀하의 예를 다시 작성 : 이것은 가정

//open connection 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url; 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields1); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt'); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 

당신은 디렉토리 '쿠키 /'만들었으며 한 웹 서버가 쓸 수있는 ('를 Cookies.txt'라는 파일에 쿠키를 저장합니다 그 디렉토리로, 그것은) 당신은뿐만 아니라 그 요청에 대한 cookiefile을 설정 한 후 자신의 요청을 보낼 때를 Cookies.txt에 저장된 쿠키를 사용합니다

후속 요청 (가정의

+0

Thanks Majic! 어떻게해야할지 모르겠다. 나는 php.net에서 그것을 이해하지 못했다. 쿠키 파일을 만들어 서버에 저장합니까? 내가 볼 수있는 모범이 있습니까? – krazymatty

+0

업데이트 된 버전의 코드로 내 응답을 편집했습니다. CURLOPT_COOKIEJAR은 쿠키 응답이 저장되는 곳입니다. CURL_COOKIEFILE은 요청에 대한 쿠키를로드 할 위치입니다. 처음에는이 항목이 비어 있지만 후속 요청의 경우 이전에 저장된 쿠키가 포함됩니다. –

+0

필자의 첫 번째 페이지는 로그인 스크립트에 헤더()가 포함 된 제출 스크립트로 이동합니다. 그럼 두 컬 기능이 필요합니까? 나는 켜야한다 : \t curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, true); 모든 과정을 처리하기 위해서. 작성한 행을 추가했는데 대상 페이지를 통과하여 착륙했지만 아직 로그인하지 않았습니다. – krazymatty

관련 문제