댓글 검색 목록

[php] PHP cURL 사용 방법 – 파일 및 JSON 예제 다운로드

페이지 정보

작성자 운영자 작성일 20-04-19 18:07 조회 1,098 댓글 0

서버 간 대화 


PHP cURL 사용법에 관한 튜토리얼에 오신 것을 환영합니다. PHP 스크립트를 사용하여 다운로드 데이터를 가져와야 합니까? 아니면 두 서버가 서로 대화하도록 하시겠습니까? 

cURL이 이에 대한 해답이며 이 튜토리얼에서는 이를 사용하는 정확한 단계, 예제가 포함되어 있습니다. – 계속 읽으십시오!

ⓘ이 튜토리얼을 시작할 때 모든 예제 소스 코드가 포함 된 zip 파일을 포함 시켰으므로 모든 내용을 복사하여 붙여 넣을 필요가 없습니다.


소스 코드 다운로드 


먼저 약속 한대로 소스 코드에 대한 다운로드 링크가 있습니다.


소스 코드 다운로드 


소스 코드를 다운로드하려면 여기를 클릭하십시오. MIT 라이센스에 따라 릴리스되었으므로 그 위에 빌드하거나 자신의 프로젝트에서 자유롭게 사용하십시오.


빠른 시작 


  • 폴더에 다운로드하여 압축을 풉니다.
  • 관련된 데이터베이스가 없으므로 포함 된 각 파일을 따라 가십시오.

기본 및 설치 


코드 예제를 살펴보기 전에 기본 사항부터 시작하겠습니다. cURL이란 무엇이며 어떻게 해야 하며 어떻게 설치합니까?


CURL이란 무엇입니까? 


cURL은 클라이언트 URL의 약자이며 공식 PHP 매뉴얼에서 간단히 인용하겠습니다.


cURL을 사용하면 다양한 유형의 프로토콜을 사용하여 다양한 유형의 서버에 연결하고 통신 할 수 있습니다. 


CURL은 무엇을 합니까? 


일반 용어로 cURL은 서버 간 통신의 스위스 군용 칼입니다. 그것은 당신이 할 수 있는 PHP 스크립트를 만들 수 있습니다 :

  • HTTP 또는 HTTPS를 통해 웹 페이지를 가져옵니다.
  • HTML 양식 (또는 Javascript)을 제출하는 것과 마찬가지로 POST 및 PUT
  • 쿠키를 수락하고 생성하며 웹 브라우저처럼 작동합니다.
  • FTP 서버와 연결하고 파일을 업로드 및 다운로드하십시오.
  • 서버에 텔넷으로 연결 한 후 명령 행을 실행하십시오.
  • 그리고 더…


설치 및 설정 


XAMPP를 설치 한 경우 cURL은 번들로 제공되고 기본적으로 활성화되어 있어야합니다. Linux를 사용하는 경우 몇 줄의 명령으로 cURL을 설치할 수 있습니다.


sudo apt-get update sudo apt-get install php-curl sudo service apache2 restart 


php.ini 파일에서 cURL 확장자가 활성화되어 있는지 확인하십시오 :


extension=curl 


물론 이것은 운영 체제에 따라 다를 수 있습니다. 따라서 컴퓨터에서 cURL을 사용할 수 없는 경우 직접 조사해보십시오.


기본 사용법 


기본 설정과 작업을 마쳤으므로 웹 페이지를 가져 와서 cURL의 기본 사항부터 시작하겠습니다.


스크립트 


<?php // (1) INIT CURL $curl = curl_init(); // (2) SET OPTIONS curl_setopt_array($curl, [ CURLOPT_URL => "https://en.wikipedia.org/wiki/Main_Page", CURLOPT_HEADER => false ]); // (3) EXECUTE CURL if (!curl_exec($curl)) { echo curl_error($curl); // Error message echo curl_errno($curl); // Error code } // (4) CLOSE CURL CONNECTION curl_close($curl); ?> 


설명 


모든 일반적인 cURL 스크립트에는 4 단계가 있습니다.


  • cURL을 초기화하십시오.
  • 옵션, 대상 URL, POST 데이터 등을 설정하십시오. 가능한 옵션이 많이 있으며 공식 PHP 매뉴얼을 확인하십시오.
  • cURL을 실행하고 오류를 처리하십시오.
  • cURL 연결을 닫습니다.

그렇기 때문에 우리는 간단히 cURL을 사용합니다. 아래에서 더 실용적인 예를 살펴 보겠습니다.


더 많은 예 


물론 cURL은 웹 페이지를 가져 와서 출력 할 수 있는 능력이 훨씬 뛰어납니다. 이 섹션에서는 더 많은 cURL 요가와 예제를 살펴 보겠습니다.


파일로 저장 및 저장 


가져온 결과를 파일로 저장해야 합니까? 우리가 하는 방법은 다음과 같습니다.


<?php // (1) INIT CURL $curl = curl_init(); // (2) OPEN FILE HANDLER - SAVE TO THIS FILE $fhandle = fopen("curl-get.html", "w"); // (3) SET CURL OPTIONS curl_setopt_array($curl, [ CURLOPT_URL => "https://en.wikipedia.org/wiki/Meme", CURLOPT_FILE => $fhandle ]); // (4) EXECUTE CURL $result = curl_exec($curl); // (4A) ERROR if ($result === false) { echo curl_error($curl); // Error message echo curl_errno($curl); // Error code } // (4B) OK else { echo "OK"; } // (5) CLOSE CURL CONNECTION + FILE HANDLER curl_close($curl); fclose($fhandle); ?> 


FETCH 데이터 및 JSON 디코드 


아시다시피 cURL을 사용하여 지정한 주소에서 데이터를 가져올 수 있습니다. 좋은 소식은 요즘 인터넷은 날씨, 뉴스, 사전 및 임의의 개 그림과 같은 모든 종류의 흥미로운 것들을 제공한다는 것입니다.


<?php // (1) INIT CURL $curl = curl_init(); // (2) SET OPTIONS curl_setopt_array($curl, [ // Get a random dog picture! CURLOPT_URL => "https://dog.ceo/api/breeds/image/random", CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false ]); // (3) EXECUTE CURL $result = curl_exec($curl); // (3A) ERROR if ($result === false) { echo curl_error($curl); // Error message echo curl_errno($curl); // Error code } // (3B) OK else { $result = json_decode($result, true); // print_r($result); echo "<img src='" . $result['message'] . "'/>"; } // (4) CLOSE CURL CONNECTION curl_close($curl); ?> 


글쎄, 더 관심이 있다면, 더 많은 공용 API를 위해 Github 에서 이 목록을 확인할 수 있습니다.


POST DATA 


일부 데이터를 원격 서버에 POST해야 합니까? 간단히 cURL 옵션에 추가합니다.


<?php // (1) INIT CURL $curl = curl_init(); // (2) SET OPTIONS $data = [ "doge" => "Good Boy", "cate" => "Evil" ]; curl_setopt_array($curl, [ CURLOPT_URL => "https://whatever.com/xyz.php", CURLOPT_POSTFIELDS => $data, CURLOPT_POST => true, // Optional, since CURLOPT_POSTFIELDS will already imply POST CURLOPT_RETURNTRANSFER => true // Optional, if you need the remote server response ]); // (3) EXECUTE CURL $result = curl_exec($curl); // (3A) ERROR if ($result === false) { echo curl_error($curl); // Error message echo curl_errno($curl); // Error code } // (3B) OK else { echo $result; } // (4) CLOSE CURL CONNECTION curl_close($curl); ?> 


GET INSTEAD OF POST 


GET 데이터를 추가하기 위해 쿼리 문자열과 URL을 대신 추가합니다.


<?php // (1) INIT CURL $curl = curl_init(); // (2A) QUERY STRING $data = [ "doge" => "Good Boy", "cate" => "Evil" ]; $query = "?"; foreach ($data as $k=>$v) { $query .= urlencode($k) . "=" . urlencode($v) . "&"; } $query = substr($query, 0, -1); // (2B) SET OPTIONS curl_setopt_array($curl, [ CURLOPT_URL => "https://whatever.com/xyz.php" . $query, CURLOPT_RETURNTRANSFER => true // Optional, if you need the remote server response ]); // (3) EXECUTE CURL $result = curl_exec($curl); // (3A) ERROR if ($result === false) { echo curl_error($curl); // Error message echo curl_errno($curl); // Error code } // (3B) OK else { echo $result; } // (4) CLOSE CURL CONNECTION curl_close($curl); ?> 


HTTP AUTH 


예, HTTP 비밀번호로 보호 된 사이트에도 액세스 할 수 있습니다.


<?php // (1) INIT CURL $curl = curl_init(); // (2) SET OPTIONS curl_setopt_array($curl, [ CURLOPT_URL => "https://whatever.com/xyz.php", CURLOPT_HTTPAUTH => CURLAUTH_ANY, CURLOPT_USERPWD => "USERNAME:PASSWORD", CURLOPT_RETURNTRANSFER => true ]); // (3) EXECUTE CURL $result = curl_exec($curl); // (3A) ERROR if ($result === false) { echo curl_error($curl); // Error message echo curl_errno($curl); // Error code } // (3B) OK else { echo $result; } // (4) CLOSE CURL CONNECTION curl_close($curl); ?> 


COOKIES 


로그인과 물건을 추적해야 합니까? 쿠키도 지원됩니다.


<?php // (1) INIT CURL $curl = curl_init(); // (2A) COOKIE FILE $cookie = "cookie.txt"; // (2B) SET OPTIONS curl_setopt_array($curl, [ CURLOPT_URL => "https://whatever.com/xyz.php", // Where to write the cookie to CURLOPT_COOKIEFILE => $cookie, // Where to read the cookie from CURLOPT_COOKIEJAR => $cookie, CURLOPT_RETURNTRANSFER => true ]); // (3) EXECUTE CURL $result = curl_exec($curl); // (3A) ERROR if ($result === false) { echo curl_error($curl); // Error message echo curl_errno($curl); // Error code } // (3B) OK else { echo $result; } // (4) CLOSE CURL CONNECTION curl_close($curl); ?> 


유용한 비트 


이것이 이 프로젝트의 전부이며, 여기에 도움이 될만한 추가 정보에 대한 작은 섹션이 있습니다.


참고 


cURL은 HTTP에서 가져 오는 것보다 훨씬 기능이 뛰어나며 FTP 서버를 연결하고 텔넷을 수행 할 수도 있습니다. 자세한 내용은 공식 PHP cURL 매뉴얼을 확인하십시오.


CHEAT SHEET 


php-curl-basics-small.jpg 




댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.