>웹 프론트엔드 >JS 튜토리얼 >PHP_javascript 기술에서 CURL의 몇 가지 고전적인 응용 프로그램 예

PHP_javascript 기술에서 CURL의 몇 가지 고전적인 응용 프로그램 예

WBOY
WBOY원래의
2016-05-16 16:18:221536검색

1. cURL 요청 기본 단계:

(1)초기화
(2) URL을 포함한 옵션 설정
(3) HTML 문서 콘텐츠 실행 및 획득
(4) cURL 핸들 해제

코드 복사 코드는 다음과 같습니다.

//1. 초기화
$ch = 컬_init();

//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"가 사용됩니다.

코드 복사 코드는 다음과 같습니다.

$output = 컬_exec($ch);

If ($output === false) {
              echo "cURL 오류:".curl_error($ch);
}

curl_getinfo() 함수는 cURL이 실행된 후 이 요청과 관련된 정보를 반환하며, 이는 디버깅 및 문제 해결에 유용합니다.

코드 복사 코드는 다음과 같습니다.

컬_exec($ch);
$info = 컬_getinfo($ch);
echo '
';<br>
          print_r($info);                                                      
echo '
';

반환된 데이터


배열
(
[URL] => http://www.cnblogs.com/it-cen/
[content_type] => 문자세트=utf-8
[http_code] =>200
[header_size] =>312
[요청_크기] =>61
[파일 시간] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[총_시간] => 0.172
[namelookup_time] => 0.016
[연결_시간] => 0.063
[이전_시간] => 0.063
[크기_업로드] => 0
[size_download] => 14658   //요청한 데이터 크기
[speed_download] => 85220 
[속도_업로드] => 0
[다운로드_콘텐츠_길이] => 14658
[업로드_콘텐츠_길이] => 0
[starttransfer_time] => 0.125
[리디렉션_시간] => 0
[인증서] => 배열
(
)

[redirect_url] =>
)


2. 이 정보는 디버깅에 매우 유용합니다

. 예를 들어, cURL이 크롤링되는 경우 네트워크 및 기타 이유로 인해 크롤링된 데이터가 불완전할 수 있습니다. 파일 크기를 계산한 후 이를 컬_getinfo()로 얻은 크기와 비교합니다. 크기가 같으면 다운로드가 올바른 것으로 간주되고, 그렇지 않으면 다운로드가 반복됩니다. 이미지 캡처의 예를 살펴보겠습니다.


코드 복사 코드는 다음과 같습니다.

header("콘텐츠 유형: 이미지/png");

//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로 데이터 전송

코드 복사 코드는 다음과 같습니다.

$ch = 컬_init();

$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을 사용하여 파일 업로드

코드 복사 코드는 다음과 같습니다.

//업로드된 데이터 요청
$data = array('name'=>'beauty', "upload"=>"@a.zip");

$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 예제를 연구하여 뭔가를 얻을 수 있기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.