PHP cURL 예제


소개

PHP cURL 예제 PHP에서 cURL 모듈 사용 방법에 대해서 설명드리도록 하겠습니다.
GET 방식과 POST 방식 요청에 대해서 설명드리며, 요청시 파라미터 전달 방법도 함께 설명 드리도록 하겠습니다.

PHP cURL 예제


PHP cURL 모듈은 다양한 종류의 프로토콜을 사용하여 서버와 통신할 수 있도록 도와주는 모듈입니다. HTTPS 통신이 가능하고, HTTP GET, POST, PUT 등의 프로토콜을 사용이 가능하고 파일 업로드 Proxy, Cookie 그리고 사용자 인증 기능 또한 함께 제공합니다.

PHP cURL 설치

만약 시스템에 PHP cURL 모듈이 설치되지 않았을 경우 실행시 다음과 같은 오류가 발생할 수 있습니다.

Call to undefined function curl_init()

우분투 리눅스를 사용하는 경우, 아래의 명령어를 이용하여 먼저 PHP cURL 모듈을 설치해 주시기 바랍니다.

$ sudo apt install php-curl
PHP cURL 예제

PHP cURL GET 예제

가장 먼저 실행해 볼 예제는 서버로부터 데이터를 받아오는 예제입니다.

<?php

  $ch = curl_init(); // 리소스 초기화

  $url = "https://hiseon.me";

  // 옵션 설정
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  $output = curl_exec($ch); // 데이터 요청 후 수신

  echo $output;

  curl_close($ch);  // 리소스 해제

?>

가장 먼저 curl_init() 함수를 호출하여 리소스를 초기화 합니다. 그리고 가장 curl_setopt 함수를 호출하여 URL 등 필요한 옵션을 지정합니다.

그리고 curl_exec 함수를 실행하여, 서버로 데이터를 요청하여 응답을 받게 됩니다.

실행이 종료가 되면 마지막으로 curl_close 함수를 호출하여 리소스를 해제합니다. 위의 소스코드를 실행한 결과는 아래와 같습니다.

PHP cURL 예제

PHP cURL POST 예제

다음으로 실행해 볼 예제는 POST 형태로 요청을 보내면서, 값을 전달하는 예제입니다.
먼저 서버에서 cURL 에서 전달하는 요청을 받는 코드를 아래와 같이 작성합니다.

<?php

if (isset($_POST)) {
  print_r($_POST);
}

?>

위의 소스코드는 단순히 전달된 POST 값을 출력하는 내용으로, 서버에 요청시 제대로 값이 전달되었는지 확인 하기 위한 목적입니다. 그리고 다음과 같이 cURL 요청 코드를 작성합니다.

<?php

  $ch = curl_init(); // 리소스 초기화

  $url = "https://hiseon.me/post.php";

  // 옵션 설정
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  // post 형태로 데이터를 전송할 경우
  $postdata = array(
    "name"=>"value"
  );
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postdata));

  $output = curl_exec($ch); // 데이터 요청 후 수신

  echo $output;

  curl_close($ch);  // 리소스 해제

?>

https://hiseon.me/post.php 주소로 요청하는 내용으로, curl_setopt 함수를 호출하면서 CURLOPT_POST 와 CURLOPT_POSTFIELDS 이름으로 POST 요청과 파라미터등을 지정합니다.

위의 소스코드를 실행하면 성공적으로 POST 파라미터가 전달되어 제대로 응답 된 것을 확인 할 수 있습니다.

PHP cURL 예제

PHP cURL 헤더 설정

HTTP 요청을 보낼 때에 User-Agent, Referer, Accept 등의 헤더 정보가 포함되어 전송되게 됩니다. cURL 또한 직접 헤더 내용을 작성하는 기능이 제공됩니다. PHP의 cURL 모듈에서는 아래와 같이 curl_setopt 함수를 통해서 헤더 정보를 작성할 수 있습니다.

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'User-Agent: Mozilla/5.0',
  'Referer: https://hiseon.me/'
));

PHP를 사용하여 응답 받은 HTML를 파싱하여 처리하기 위해서는 아래의 글을 참고하시면 됩니다.

PHP HTML 파싱 예제

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)