>  기사  >  백엔드 개발  >  php 컬 학습 요약

php 컬 학습 요약

WBOY
WBOY원래의
2016-07-25 09:11:44719검색

설명: 컬을 사용하여 웹 페이지를 빠르게 크롤링하고, POST 및 GET 요청을 시뮬레이션하고, 물론 HTTP 프로토콜을 캡슐화할 뿐만 아니라 FTP, 프록시, HTTPS, LDAP 및 기타 애플리케이션도 지원합니다. Curl은 PHP에만 있는 것이 아니라 여러 언어로 제공됩니다. 사용하기 쉬운 것이면 몇 년 전의 log4j처럼 자연스럽게 승격될 것입니다. 처음에는 JAVA 버전이었고 그 다음에는 log4c, log4c?? 컬도 마찬가지다. Curl은 기본적으로 PHP에서 지원되지 않습니다. Linux에서는 PHP를 컴파일할 때 ./configure에 -with-curl 매개변수를 추가해야 합니다. 컬 확장이 켜져 있는지 확인하려면 phpinfo();를 통해 확인할 수 있어야 합니다.

1) 기본 사용법 (일반적인 호출 순서) 컬_init: 초기화, cur_setopt: 매개변수 옵션 설정 cur_exec: 현재 컬 객체를 실행합니다. cur_close: 현재 컬 객체를 닫습니다

예: 아래 코드가 저장된 PHP 웹페이지를 방문하면 126개의 사서함이 있는 웹페이지가 보입니다.

  1. $curl =curl_init();

  2. // 필요한 사항 설정 캡처 URL 가져오기

  3. curl_setopt($curl, CURLOPT_URL, 'http://126.com');

  4. // 헤더 정보 표시 여부 설정

  5. //curl_setopt($curl, CURLOPT_HEADER, 1);

  6. //결과를 문자열로 저장하거나 화면에 출력하도록 cURL 매개변수를 설정합니다.

  7. //curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

  8. // cURL을 실행하고 웹페이지 요청

  9. $data = cur_exec($curl);< /p> ;
  10. // URL 요청 닫기

  11. curl_close($curl);

  12. // 얻은 데이터 표시

  13. var_dump($data) ;< ;/p>
코드 복사

2) POST를 통해 데이터 보내기

  1. ﹤?php
  2. $phoneNumber = '13912345678';
  3. $message = '이 메시지는 컬과 PHP에 의해 생성되었습니다.';
  4. $curlPost = 'pNUMBER=' . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
  5. $ch = 컬_init();
  6. curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');
  7. curl_setopt($ch, CURLOPT_HEADER, 1);
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt( $ch, CURLOPT_POST, 1);
  10. curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  11. $data =curl_exec($ch);
  12. curl_close($ch);
  13. ?﹥
코드 복사

3) 프록시 서버

  1. ﹤?php
  2. $ch = cur_init();
  3. curl_setopt($ch, CURLOPT_URL, 'http://www.example. com');
  4. curl_setopt($ch, CURLOPT_HEADER, 1);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
  7. curl_setopt($ch , CURLOPT_PROXY, 'fakeproxy.com:1080');
  8. curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
  9. $data =curl_exec($ch);
  10. curl_close($ch);
  11. ?﹥
코드 복사

4) SSL 및 쿠키 정보 HTTPS 프로토콜인 SSL의 경우 CURLOPT_URL 연결에서 http://를 https://로 변경하면 됩니다. 물론 사이트 확인을 위해 설정할 수 있는 CURLOPT_SSL_VERIFYHOST라는 매개변수도 있습니다. 쿠키와 관련하여 다음 세 가지 매개변수를 이해해야 합니다. CURLOPT_COOKIE, 직접 세션 중에 쿠키를 설정합니다. CURLOPT_COOKIEJAR, 세션이 끝나면 쿠키를 저장합니다. CURLOPT_COOKIEFILE, 쿠키 파일.

5) HTTP 서버 인증

  1. ﹤?php

  2. $ch =curl_init();
  3. curl_setopt($ ch, CURLOPT_URL, 'http://www.example.com');
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  6. curl_setopt(CURLOPT_USERPWD, '[사용자 이름]:[비밀번호]')

  7. $data =curl_exec($ch);

  8. curl_close($ch);
  9. ?﹥

코드 복사

요약: 뒤에 여러 예시가 첨부되어 있지만, 상황에 따라 컬_setopt 함수가 달라지는 점만 빼면 순서는 사실 첫 번째와 동일합니다. 또한 이 함수에는 많은 매개변수가 있고 매우 유연하다는 사실도 발견했습니다.

이 기능에는 다음 매개변수가 사용됩니다. bool cur_setopt (int ch, 문자열 옵션, 혼합 값) 컬_setopt() 함수는 CURL 세션에 대한 옵션을 설정합니다. option 매개변수는 원하는 설정이고 value는 이 옵션에서 제공하는 값입니다.

다음 옵션의 값은 긴 정수(옵션 매개변수에 지정됨)로 사용됩니다. * CURLOPT_INFILESIZE: 원격 사이트에 파일을 업로드할 때 이 옵션은 업로드하는 파일의 크기를 PHP에 알려줍니다. * CURLOPT_VERBOSE: CURL이 예상치 못한 모든 이벤트를 보고하도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요. * CURLOPT_HEADER: 출력에 헤더를 포함하려면 이 옵션을 0이 아닌 값으로 설정합니다. * CURLOPT_NOPROGRESS: PHP가 CURL 전송에 대한 진행률 표시줄을 표시하지 않도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요. 참고: PHP는 자동으로 이 옵션을 0이 아닌 값으로 설정하므로 디버깅 목적으로만 이 옵션을 변경해야 합니다. * CURLOPT_NOBODY: 출력에 본문 부분을 포함하지 않으려면 이 옵션을 0이 아닌 값으로 설정합니다. * CURLOPT_FAILONERROR: 오류 발생 시(HTTP 코드 반환이 300 이상일 때) PHP가 표시되지 않도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요. 기본 동작은 일반 페이지를 반환하고 코드를 무시하는 것입니다. * CURLOPT_UPLOAD: PHP가 업로드를 준비하도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요. * CURLOPT_POST: PHP가 일반 HTTP POST를 수행하도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요. 이 POST는 HTML 양식에서 주로 사용되는 일반 application/x-www-from-urlencoded 유형입니다. * CURLOPT_FTPLISTONLY: 이 옵션을 0이 아닌 값으로 설정하면 PHP는 FTP 디렉토리 이름 목록을 나열합니다. * CURLOPT_FTPAPPEND: 이 옵션을 0이 아닌 값으로 설정하면 PHP는 원격 파일을 덮어쓰는 대신 적용합니다. * CURLOPT_NETRC: 이 옵션을 0이 아닌 값으로 설정하면 PHP는 연결하려는 원격 사이트의 사용자 이름과 비밀번호를 ~./netrc 파일에서 찾습니다. * CURLOPT_FOLLOWLOCATION: 이 옵션을 0이 아닌 헤더(예: "Location: ")로 설정하면 서버는 이를 HTTP 헤더의 일부로 보냅니다(이는 재귀적이므로 PHP는 "Location: "과 같은 헤더를 보냅니다). * CURLOPT_PUT: HTTP를 사용하여 파일을 업로드하려면 이 옵션을 0이 아닌 값으로 설정합니다. 이 파일을 업로드하려면 CURLOPT_INFILE 및 CURLOPT_INFILESIZE 옵션을 설정해야 합니다. * CURLOPT_MUTE: 이 옵션을 0이 아닌 값으로 설정하면 PHP는 CURL 함수에 대해 완전히 침묵합니다. * CURLOPT_TIMEOUT: 최대 초 수로 긴 정수를 설정합니다. * CURLOPT_LOW_SPEED_LIMIT: 전송되는 바이트 수를 제어하려면 긴 정수를 설정합니다. * CURLOPT_LOW_SPEED_TIME: CURLOPT_LOW_SPEED_LIMIT에 지정된 바이트 수를 전송하는 데 걸리는 시간(초)을 제어하려면 긴 정수를 설정합니다. * CURLOPT_RESUME_FROM: 바이트 오프셋 주소(전송하려는 시작 형식)가 포함된 긴 매개변수를 전달합니다. * CURLOPT_SSLVERSION: SSL 버전이 포함된 긴 매개변수를 전달합니다. 기본적으로 PHP는 자체적으로 어려운 작업을 수행하므로 보안을 강화하려면 수동으로 설정해야 합니다. * CURLOPT_TIMECONDITION: CURLOPT_TIMEVALUE 매개변수 처리 방법을 지정하려면 긴 매개변수를 전달합니다. 이 매개변수를 TIMECOND_IFMODSINCE 또는 TIMECOND_ISUNMODSINCE로 설정할 수 있습니다. 이는 HTTP에만 해당됩니다. * CURLOPT_TIMEVALUE: 1970-1-1부터 현재까지의 초 수를 전달합니다. 이 시간은 CURLOPT_TIMEVALUE 옵션 또는 기본 TIMECOND_IFMODSINCE에 의해 지정된 값으로 사용됩니다.

다음 옵션의 값은 문자열로 처리됩니다: * CURLOPT_URL: PHP를 사용하여 검색하려는 URL 주소입니다. 컬_init() 함수를 사용하여 초기화하는 동안 이 옵션을 설정할 수도 있습니다. * CURLOPT_USERPWD: [사용자 이름]:[비밀번호] 형식으로 문자열을 전달하고 PHP를 사용하여 연결합니다. * CURLOPT_PROXYUSERPWD: HTTP 프록시에 연결하려면 [사용자 이름]:[비밀번호] 형식의 문자열을 전달합니다. * CURLOPT_RANGE: 지정하려는 범위를 전달합니다. X 또는 Y가 제외된 'X-Y' 형식이어야 합니다. HTTP 전송은 쉼표(X-Y,N-M)로 구분된 여러 간격도 지원합니다. * CURLOPT_POSTFIELDS: 모든 데이터가 포함된 문자열을 HTTP "POST" 작업으로 전달합니다. * CURLOPT_REFERER: HTTP 요청에 "referer" 헤더가 포함된 문자열입니다. * CURLOPT_USERAGENT: HTTP 요청에 "user-agent" 헤더가 포함된 문자열입니다. * CURLOPT_FTPPORT: ftp "POST" 명령에 사용되는 IP 주소가 포함된 IP 주소를 전달합니다. 이 POST 명령은 원격 서버에 우리가 지정한 IP 주소에 연결하도록 지시합니다. 이 문자열은 IP 주소, 호스트 이름, 네트워크 인터페이스 이름(UNIX의 경우) 또는 '-'(시스템 기본 IP 주소 사용)일 수 있습니다. * CURLOPT_COOKIE: HTTP 쿠키가 포함된 헤더 연결을 전달합니다. * CURLOPT_SSLCERT: PEM 형식의 인증서가 포함된 문자열을 전달합니다. * CURLOPT_SSLCERTPASSWD: CURLOPT_SSLCERT 인증서를 사용하기 위해 필요한 비밀번호가 포함된 비밀번호를 전달합니다. * CURLOPT_COOKIEFILE: 쿠키 데이터가 포함된 파일 이름이 포함된 문자열을 전달합니다. 이 쿠키 파일은 Netscape 형식일 수도 있고 파일에 저장된 HTTP 스타일 헤더 스택일 수도 있습니다. * CURLOPT_CUSTOMREQUEST: HTTP 요청 시 GET 또는 HEAD에서 사용할 문자를 전달합니다. HTTP 요청을 수행할 때 GET 또는 HEAD 대신 사용할 문자열을 전달합니다. 이는 더 모호한 다른 HTTP 요청을 수행하는 데 유용합니다. 참고: 아직 수행하지 않으려면 서버가 Order를 지원하는지 확인하세요. 다음 옵션에는 파일 설명(fopen() 함수를 사용하여 얻음)이 필요합니다. * CURLOPT_FILE: 이 파일은 배치하고 전송하는 출력 파일이 됩니다. 기본값은 STDOUT입니다. * CURLOPT_INFILE: 이 파일은 귀하가 보낸 입력 파일입니다. * CURLOPT_WRITEHEADER: 이 파일에는 출력의 헤더 부분이 포함되어 있습니다. * CURLOPT_STDERR: 이 파일에는 stderr 대신 오류가 기록되었습니다. 로그인이 필요한 페이지를 얻는 방법은 매번 로그인하는 것입니다.

자주 사용하는 기능: cur_close — 컬 세션을 닫습니다. cur_copy_handle — 컬 연결 리소스의 모든 내용과 매개변수를 복사합니다. cur_errno — 현재 세션에 대한 오류 정보가 포함된 숫자를 반환합니다. cur_error — 현재 세션에 대한 오류 정보가 포함된 문자열을 반환합니다. cur_exec — 컬 세션 실행 cur_getinfo — 컬 연결 리소스 핸들에 대한 정보 가져오기 cur_init — 컬 세션 초기화 cur_multi_add_handle — 컬 배치 세션에 개별 컬 핸들 리소스를 추가합니다. cur_multi_close — 배치 핸들 리소스 닫기 cur_multi_exec — 컬 배치 핸들을 구문 분석합니다. cur_multi_getcontent — 가져온 출력의 텍스트 스트림을 반환합니다. cur_multi_info_read — 현재 구문 분석된 컬의 관련 전송 정보를 가져옵니다. cur_multi_init — 컬 배치 핸들 리소스 초기화 cur_multi_remove_handle — 컬 배치 핸들 리소스에서 핸들 리소스를 제거합니다. cur_multi_select — cURL 확장과 관련된 모든 소켓을 가져온 다음 "선택"할 수 있습니다. cur_setopt_array — 컬의 세션 매개변수를 배열로 설정합니다. cur_setopt — 컬에 대한 세션 매개변수 설정 cur_version — 컬 관련 버전 정보 가져오기



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