1. cURL 요청 기본 단계:
(1)초기화
(2) URL을 포함한 옵션 설정
(3) HTML 문서 콘텐츠 실행 및 획득
(4) cURL 핸들 해제
//2. URL을 포함한 옵션을 설정합니다
cur_setopt($ch, CURLOPT_URL, "http://www.cnblogs.com/it-cen/");
//curl_exec()에서 얻은 정보를 직접 출력하는 대신 파일 스트림 형태로 반환
컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//시작 시 헤더 파일 정보가 데이터 스트림으로 출력됩니다.
컬_setopt($ch, CURLOPT_HEADER, 1);
//3. HTML 문서의 내용을 실행하고 가져옵니다
컬_exec($ch);
//4. 해제 핸들
컬_닫기($ch);
에코 $ch;
?>
참고: 두 번째 단계는 가장 중요한 컬_setopt() 함수입니다.
오류를 확인하는 문을 추가할 수 있습니다. 여기서는 빈 출력과 부울 값 false를 구별하기 위해 "===false"가 사용됩니다.
curl_getinfo() 함수는 cURL이 실행된 후 이 요청과 관련된 정보를 반환하며, 이는 디버깅 및 문제 해결에 유용합니다.
';<br> print_r($info); echo '';
. 예를 들어, cURL이 크롤링되는 경우 네트워크 및 기타 이유로 인해 크롤링된 데이터가 불완전할 수 있습니다. 파일 크기를 계산한 후 이를 컬_getinfo()로 얻은 크기와 비교합니다. 크기가 같으면 다운로드가 올바른 것으로 간주되고, 그렇지 않으면 다운로드가 반복됩니다. 이미지 캡처의 예를 살펴보겠습니다.
//1. 초기화
$ch = 컬_init();
//2. URL을 포함한 옵션을 설정합니다
cur_setopt($ch, , CURLOPT_URL, "http://img04.taobaocdn.com/tfscom/TB1omaTHXXXXXajXVXXtKXbFXXX.png");
컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
컬_setopt($ch, CURLOPT_HEADER, 1);
//3. 콘텐츠 실행 및 획득
$res = 컬_exec($ch);
//정보 얻기
$info = 컬_getinfo($ch);
//4. 리소스 공개
컬_닫기($ch);
file_put_contents("d:/aa.png", $res);
$size = 파일 크기("d:/aa.png");
if ($size != $info['size_download']) {
echo "다운로드한 데이터가 불완전합니다. 다시 다운로드해 주세요.";
} 그 밖의 {
echo "데이터 다운로드가 완료되었습니다";
}
?>
3. POST 메소드를 사용하여 cURL로 데이터 전송
$data = array('name'=>'kelly', 'age'=>27, 'sex'=>1);
컬_setopt($ch, CURLOPT_URL, "http://localhost.post.php");
컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//포스팅으로 설정
컬_setopt($ch, CURLOPT_POST, 1);
//post 변수에
추가
컬_setopt($ch, CURLOPT_POSTFIELDS,$data);
$res = 컬_exec($ch);
컬_닫기($ch);
에코 $res;
?>
이 방법을 사용하여 메시지 남기기를 시뮬레이션하거나 물을 채우는 로봇에 앉을 수도 있습니다.
4. cURL을 사용하여 파일 업로드
$ch = 컬_init();
컬_setopt($ch, CURLOPT_URL, "http://127.0.0.1/Socket/upload_file.php");
컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
컬_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = 컬_exec($ch);
컬_닫기($ch);
에코 $res;
?>
참고: 파일을 보낼 때 파일 이름 앞에 @를 붙이고 전체 경로를 사용하세요
5. cURL 설정 항목
사실 cURL에는 많은 구성 옵션이 있습니다. 이러한 옵션은 setopt()를 통해 설정됩니다. 다음은 독자에게 도움이 될 수 있는 몇 가지 공통적이고 중요한 구성 항목입니다. 앞으로는 cURL을 사용하세요. 도움말:
CURLOPT_AUTOREFERER: 위치를 기준으로 리디렉션할 때 헤더에 Referer: 정보를 자동으로 설정합니다.
CURLOPT_COOKIESESSION: 활성화되면 cURL은 세션 쿠키를 엄격하게 전달하고 다른 쿠키는 무시합니다
CURLOPT_HEADER: 헤더 파일 정보를 데이터 스트림으로 출력
CURLOPT_INFILESIZE: 업로드된 파일의 크기를 바이트 단위로 설정
CURLOPT_MAXCONNECTS: 허용되는 최대 연결 수
CURLOPT_MAXREDIRS: 최대 HTTP 리디렉션 수 지정
CURLOPT_COOKIE: HTTP 요청의 "쿠키:" 부분의 내용을 설정합니다. 여러 쿠키 뒤에는 세미콜론이 오고 세미콜론 뒤에 공백이 있습니다.
CURLOPT_POSTFIELDS: 모든 데이터는 HTTP 프로토콜의 "POST" 작업을 사용하여 전송됩니다. 파일을 전송하려면 파일 이름 앞에 @ 접두사를 추가하고 전체 경로를 사용하세요.
......
자세한 구성 항목은 PHP 매뉴얼을 참고하세요
cURL은 매우 강력하며 PHP에만 국한된 것이 아닙니다.
독자들이 이 블로그 게시물의 몇 가지 고전적인 cURL 예제를 연구하여 뭔가를 얻을 수 있기를 바랍니다.