서버 간 대화
PHP cURL 사용법에 관한 튜토리얼에 오신 것을 환영합니다. PHP 스크립트를 사용하여 다운로드 데이터를 가져와야 합니까? 아니면 두 서버가 서로 대화하도록 하시겠습니까?
cURL이 이에 대한 해답이며 이 튜토리얼에서는 이를 사용하는 정확한 단계, 예제가 포함되어 있습니다. – 계속 읽으십시오!
ⓘ이 튜토리얼을 시작할 때 모든 예제 소스 코드가 포함 된 zip 파일을 포함 시켰으므로 모든 내용을 복사하여 붙여 넣을 필요가 없습니다.
소스 코드 다운로드
먼저 약속 한대로 소스 코드에 대한 다운로드 링크가 있습니다.
소스 코드 다운로드
소스 코드를 다운로드하려면 여기를 클릭하십시오. MIT 라이센스에 따라 릴리스되었으므로 그 위에 빌드하거나 자신의 프로젝트에서 자유롭게 사용하십시오.
빠른 시작
기본 및 설치
코드 예제를 살펴보기 전에 기본 사항부터 시작하겠습니다. cURL이란 무엇이며 어떻게 해야 하며 어떻게 설치합니까?
CURL이란 무엇입니까?
cURL은 클라이언트 URL의 약자이며 공식 PHP 매뉴얼에서 간단히 인용하겠습니다.
cURL을 사용하면 다양한 유형의 프로토콜을 사용하여 다양한 유형의 서버에 연결하고 통신 할 수 있습니다.
CURL은 무엇을 합니까?
일반 용어로 cURL은 서버 간 통신의 스위스 군용 칼입니다. 그것은 당신이 할 수 있는 PHP 스크립트를 만들 수 있습니다 :
설치 및 설정
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의 기본 사항부터 시작하겠습니다.
스크립트
// (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을 사용합니다. 아래에서 더 실용적인 예를 살펴 보겠습니다.
더 많은 예
물론 cURL은 웹 페이지를 가져 와서 출력 할 수 있는 능력이 훨씬 뛰어납니다. 이 섹션에서는 더 많은 cURL 요가와 예제를 살펴 보겠습니다.
파일로 저장 및 저장
가져온 결과를 파일로 저장해야 합니까? 우리가 하는 방법은 다음과 같습니다.
// (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을 사용하여 지정한 주소에서 데이터를 가져올 수 있습니다. 좋은 소식은 요즘 인터넷은 날씨, 뉴스, 사전 및 임의의 개 그림과 같은 모든 종류의 흥미로운 것들을 제공한다는 것입니다.
// (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 옵션에 추가합니다.
// (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을 대신 추가합니다.
// (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 비밀번호로 보호 된 사이트에도 액세스 할 수 있습니다.
// (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
로그인과 물건을 추적해야 합니까? 쿠키도 지원됩니다.
// (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
등록된 댓글이 없습니다.