[9] PHP - CURL 사용법

2024. 4. 18. 15:59PHP

728x90

[ 환경 ]
ㄴ php 7

 

※ CURL 이란

ㄴ PHP에서 사용하는 모듈 중 하나이며, 주로 API연결에 많이 사용이 된다. 무료이며 서버에 모듈 설치를 해야 사용이 가능하다.
ㄴ PHP를 사용하게되면 많이 사용하게 될 기술이다.

ㄴ CURL 모듈에 사용되는 함수들이 존재하며 해당함수에는 옵션이 존재하며, 함수와 옵션을 세팅해서 진행한다.


 

1. CURL 세팅

<?php 

    // curl.php페이지
    // curl 세팅페이지
    
    $ch = curl_init(); // 세션 초기화 함수.
    
    // curl_setopt (curl 옵션세팅 함수)
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_exec반환 값 설정 (1일시 문자열로 변환)
    curl_setopt($ch, CURLOPT_POST, 1); // 메서드 설정 1-post/2-get
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // post방식으로 담은 데이터 
    curl_setopt($ch, CURLOPT_URL, ???); // curl 전송할 url경로
    
    $res = curl_exec($ch); // curl 실행 함수.
    curl_close(); // curl 종료 함수.

?>

ㄴ curl.php 페이지

ㄴ curl 함수와 옵션을 기본으로 세팅하였다.

ㄴ 보통은 form태그를 사용해서 진행하지만, 오늘은 페이지에서 바로 진행하겠다.
ex) form태그에서 정보입력(action에서 정보전송) - curl.php페이지에서 받은 데이터 한번 더 다른페이지로 전송 - 최종 페이지에서 처리

 

※ 서로 다른 사이트에서 통신하여 정보를 주고 받을때 사용을 많이한다.(api통신) 

ㄴ 오늘은 한 사이트내에서 전송할 예정

 

2. 임의의 정보로 CURL 전송

    // curl.php페이지
    // curl 세팅페이지

    $data = []; // curl전송할 데이터를 담을 빈배열 생성
    $data['test1'] = 'test1'; // key - test1  value - test1
    $data['test2'] = 'test2'; // key - test2  value - test2
    $data['test3'] = 'test3'; // key - test3  value - test3

    $site_url = "curl2.php"; // curl 전송할 url변수

    $ch = curl_init(); // 세션 초기화 함수.
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_exec반환 값 설정 (1일시 문자열로 변환)
    curl_setopt($ch, CURLOPT_POST, 1); // 메서드 설정 1-post/2-get
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // post방식으로 담은 데이터 
    curl_setopt($ch, CURLOPT_URL, $site_url); // curl 전송할 url경로
    $res = curl_exec($ch); // curl 실행 함수.
    curl_close(); // curl 종료 함수.

ㄴ curl.php 페이지

ㄴ 빈 배열을 생성하여 3개의 값을 넣어서 CURLOPT_POSTFIELDS 옵션에 담기.

ㄴ url변수를 선언하고, CURLOPT_URL옵션에 담기.

 

※ 배열의 key, value는 아래 url에서 참고

ㄴ https://kuk1938.tistory.com/34

 

[1] PHP - 기본문법_1

[ 환경 ] ㄴ php 7 1. php 태그 // 종료 태그 ★ 개시태그와 종료태그 사이에서 작성하는 코드를 php 언어로 인식한다. 2. 출력문 ★ 가장 많이 사용되는 2가지 ( echo, print_r() )만 소개. ㄴ 숫자와 문자,

kuk1938.tistory.com

3. CURL 전송받은 페이지 출력문 작성

<?php 
    
    // curl2.php 페이지
    echo "[ curl 전송 받는 페이지 ]<br>";
    echo "$_POST로 전송 받은 값 출력<br>";
    print_r($_POST);

    echo "<br> 첫번째 :".$_POST['test1'];
    echo "<br> 두번째 :".$_POST['test2'];
    echo "<br> 세번째 :".$_POST['test3'];

?>

ㄴ curl2.php 페이지 

ㄴ print_r()로 $_post로 담은 배열 출력 / 각각의 key값 출력

ㄴ curl.php페이지에서 curl이 정상적으로 전송되면 curl2.php에 있는 출력문이 페이지에 출력된다.

4. 주의사항

4-1) curl2.php 페이지가 같은 사이트에 존재하더라도 curl은 프로토콜과 인증을 다루는 도구이기에 https나 http 프로토콜 주소를 url변수에 넣어줘야한다.


4-2)  curl_close() curl종료시에서 $ch 세션초기화변수를 넣어주지 않아 오류가 생겼었다. 마지막에 꼭 넣어주도록 하자.

ㄴ 함수를 실행하려는데 실행할 값이 없어서 curl전송 자체가 되지 않았었다.

 

4-3) 현재 페이지는 http로 보안인증서가 설치되어 있지 않기 때문에 ssl인증서 유효성검사하는 옵션을 추가해주었다.

ㄴ 해당 옵션이 없어도 오류가 나지는 않으나, 미리 코드를 심어두는게 좋다.

 

    // curl2페이지 결과확인을 위해 수정한 코드와 추가한 코드.

    $site_url = "http://???.??.??/curl2.php"; // curl 전송할 url변수

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // SSL인증서 유효성검사 설정X
    echo $res; // curl 결과 출력
    curl_close($ch); // curl 종료 함수.
    return $res; // curl 결과 최종리턴

ㄴ 추가한 코드와 수정한 코드이다.

 

5. curl.php 페이지에서 최종으로 확인

※ 4번 기준으로 추가 및 수정을 완료하였다.

    // curl.php페이지
    // curl 세팅페이지

    $data = []; // curl전송할 데이터를 담을 빈배열 생성
    $data['test1'] = 'test1'; // key - test1  value - test1
    $data['test2'] = 'test2'; // key - test2  value - test2
    $data['test3'] = 'test3'; // key - test3  value - test3

    $site_url = "http://????.????.???/curl2.php"; // curl 전송할 url변수


    $ch = curl_init(); // 세션 초기화 함수.
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_exec반환 값 설정 (1일시 문자열로 변환)
    curl_setopt($ch, CURLOPT_POST, 1); // 메서드 설정 1-post/2-get
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // SSL인증서 유효성검사 설정X
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // post방식으로 담은 데이터 
    curl_setopt($ch, CURLOPT_URL, $site_url); // curl 전송할 url경로

    $res = curl_exec($ch); // curl 실행 함수.
    echo $res; // curl 결과 출력
    curl_close($ch); // curl 종료 함수.
    return $res; // curl 결과 최종리턴

ㄴ  최종 curl.php 페이지

 

<?php 
    
    // curl2.php 페이지
    echo "[ curl 전송 받는 페이지 ]<br>";
    echo "$_POST로 전송 받은 값 출력<br>";
    print_r($_POST);

    echo "<br> 첫번째 :".$_POST['test1'];
    echo "<br> 두번째 :".$_POST['test2'];
    echo "<br> 세번째 :".$_POST['test3'];

?>

ㄴ 출력문 찍어놓은 curl2.php 페이지

 

6. 최종 출력문 확인

※ curl.php 페이지를 접속하면 정상적으로 curl이 전송되어 curl2.php에 찍어둔 출력문의 결과를 가져온다.

 

728x90

'PHP' 카테고리의 다른 글

[11] PHP - $_FILES로 파일 업로드  (0) 2024.04.22
[10] PHP - $_FILES란?  (0) 2024.04.21
[8] PHP - $_GET 사용법  (0) 2024.04.16
[7] PHP - $_POST 사용법  (0) 2024.04.15
[6] PHP - 파일 불러오기(include,require)  (0) 2024.04.14