PHP로 cURL이 뭐죠?
PHP에서는 많은 PHP 프로젝트에서 cURL이라는 단어를 볼 수 있습니다.그것은 무엇일까요?어떻게 작동합니까?
참조 링크: cURL
cURL은 PHP에서 HTTP 요청을 할 수 있는 라이브러리입니다.이것에 대해 알아야 할 모든 것(및 대부분의 다른 확장 기능)은 PHP 매뉴얼에서 찾을 수 있습니다.
PHP의 cURL 함수를 사용하려면 , 「libcurl」패키지를 인스톨 할 필요가 있습니다.PHP에서는 libcurl 7.0.2-beta 이상을 사용해야 합니다.PHP 4.2.3에서는 libcurl 버전 7.9.0 이상이 필요합니다.PHP 4.3.0부터는 7.9.8 이상의 libcurl 버전이 필요합니다.PHP 5.0.0을 사용하려면 libcurl 버전 7.10.5 이상이 필요합니다.
하지 않고HTTP .단,은 HTTP가 필요합니다.만만allow_url_fopen
하게 되다php.ini
filename을 클릭합니다.
// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');
cURL은 코드에서 URL을 눌러 html 응답을 얻을 수 있는 방법입니다.cURL은 다른 URL과 접속하여 코드에서 해당 응답을 사용할 수 있는 클라이언트 URL을 의미합니다.
PHP의 컬:
요약:.
curl_exec
는 PHP를 사용하기 입니다.curl
을 사용하면 , 및 다운로드가 .curl_exec은 GET/POST, JSON을 사용합니다.
경고, 위험:
curl
부적절하게 사용하면 사악하고 위험합니다.왜냐하면 인터넷에서 데이터를 얻는 것이 전부이기 때문입니다.가 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★rm -rf /
「」가 표시됩니다.ls -l
입니다.은 자신의자신의 서버와 대화하고 있는 경우에도 컬에서 돌아오는 어떤 것도 안전하다고 믿지 마십시오.바보들의 재산을 없애기 위해 악성 프로그램을 회수할 수도 있어
예:
Ubuntu 12.10에서 실행되었습니다.
명령줄의 기본 컬:
el@apollo:/home/el$ curl http://i.imgur.com/4rBHtSm.gif > mycat.gif % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 492k 100 492k 0 0 1077k 0 --:--:-- --:--:-- --:--:-- 1240k
그런 다음 firefox에서 gif를 열 수 있습니다.
firefox mycat.gif
톡소플라스마 곤디이를 진화시켜 여성은 고양이를 곁에 두고 남성은 여성을 곁에 두고 있다.
cURL 예: get request to hit google.com, echo to command line:
이는 phpsh 터미널을 통해 수행됩니다.
php> $ch = curl_init(); php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com'); php> curl_exec($ch);
압축된 html과 javascript(구글에서)를 출력하여 콘솔에 덤프합니다.
cURL 예에서는 응답 텍스트를 변수에 넣습니다.
이는 phpsh 터미널을 통해 수행됩니다.
php> $ch = curl_init(); php> curl_setopt($ch, CURLOPT_URL, 'http://i.imgur.com/wtQ6yZR.gif'); php> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); php> $contents = curl_exec($ch); php> echo $contents;
이제 변수는 고양이의 애니메이션 gif인 바이너리를 포함하므로 가능성은 무한합니다.
PHP 파일 내에서 컬을 수행합니다.
다음 코드를 myphp.php라는 파일에 넣습니다.
<?php $curl_handle=curl_init(); curl_setopt($curl_handle,CURLOPT_URL,'http://www.google.com'); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); $buffer = curl_exec($curl_handle); curl_close($curl_handle); if (empty($buffer)){ print "Nothing returned from url.<p>"; } else{ print $buffer; } ?>
그런 다음 명령줄에서 실행합니다.
php < myphp.php
myphp.php를 실행하고 php 인터프리터를 통해 명령어를 실행한 후 엉망진창인 html과 javascript를 스크린에 버렸습니다.
수 있다
GET
★★★★★★★★★★★★★★★★★」POST
curl이 있는 요청은 여기서 정의한 대로 파라미터를 지정하기만 하면 됩니다.HTTP 작업 자동화에 curl을 사용합니다.
위험 주의사항:
곱슬곱슬한 출력물을 주변에 버리세요. 만약 어떤 것이라도 해석되고 실행된다면, 당신의 상자는 소유되고 당신의 신용카드 정보는 제3자에게 팔리게 될 것이고, 당신은 앨라배마 원맨 플로어링 회사로부터 해외 신용카드 사기 범죄조직의 표적이 되는 900달러의 미스터리한 요금을 받게 될 것입니다.
cURL은 코드에서 URL을 눌러 HTML 응답을 얻을 수 있는 방법입니다.PHP 언어의 명령줄 cURL에 사용됩니다.
<?php
// Step 1
$cSession = curl_init();
// Step 2
curl_setopt($cSession,CURLOPT_URL,"http://www.google.com/search?q=curl");
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession,CURLOPT_HEADER, false);
// Step 3
$result=curl_exec($cSession);
// Step 4
curl_close($cSession);
// Step 5
echo $result;
?>
1을 사용하여 컬 합니다.curl_init()
.
2: 「」2: 「」의 옵션을 합니다.CURLOPT_URL
URL을 사용합니다. curl
, " " "q=
의을 합니다.CURLOPT_RETURNTRANSFER
true는 문자열을 반환하는 것입니다.「 」의 합니다.CURLOPT_HEADER
엉망이 되다
3단계: 다음 명령을 사용하여 컬 세션을 수행합니다.curl_exec()
.
4단계: 작성한 컬 세션을 닫습니다.
스텝 5: 리턴 문자열을 출력합니다.
public function curlCall($apiurl, $auth, $rflag)
{
$ch = curl_init($apiurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($auth == 'auth') {
curl_setopt($ch, CURLOPT_USERPWD, "passw:passw");
} else {
curl_setopt($ch, CURLOPT_USERPWD, "ss:ss1");
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$dt = curl_exec($ch);
curl_close($ch);
if($rflag != 1) {
$dt = json_decode($dt,true);
}
return $dt;
}
이것은 인증에도 사용됩니다.또, 인증용의 유저명과 패스워드를 설정할 수도 있습니다.
자세한 기능은 사용 설명서 또는 다음 튜토리얼을 참조하십시오.
http://php.net/manual/en/ref.curl.php
http://www.startutorial.com/articles/view/php-curl
먼저 curl, libcurl, PHP/cURL의 개념을 이해합시다.
curl : URL 구문을 사용하여 파일을 가져오거나 보내기 위한 명령줄 도구입니다.
libcurl: Daniel Stenberg가 만든 라이브러리. 다양한 유형의 프로토콜을 사용하여 다양한 유형의 서버에 연결하고 통신할 수 있습니다.libcurl은 현재 http, https, ftp, gopher, telnet, dict, file 및 ldap 프로토콜을 지원합니다.libcurl은 HTTPS 인증서, HTTP POST, HTTP PUT, FTP 업로드(이것은 PHP의 FTP 확장으로도 가능), HTTP 폼 기반 업로드, 프록시, 쿠키 및 사용자+패스워드 인증도 지원합니다.
PHP/cURL: PHP 프로그램에서 libcurl을 사용할 수 있도록 하는 PHP용 모듈입니다.
사용방법:
1단계: curl_init()를 사용하여 컬 세션을 초기화합니다.
2단계: CURLOPT_URL 옵션을 설정합니다.이 값은 요청을 보내는 URL입니다.매개 변수 "q="를 사용하여 검색어 "syslog"를 추가합니다.CURLOPT_RETURN TRANSFER 옵션을 설정합니다.true는 문자열을 인쇄하는 대신 반환하도록 명령합니다.CURLOPT_HEADER 옵션을 설정합니다.false는 반환값의 헤더를 무시하도록 컬링합니다.
스텝 3: curl_exec()을 사용하여 컬 세션을 실행합니다.
4단계: 작성한 컬 세션을 닫습니다.
스텝 5: 리턴 문자열을 출력합니다.
데모 만들기:
두 개의 PHP 파일을 생성하여 웹 서버가 PHP 파일을 제공할 수 있는 폴더에 저장해야 합니다.저 같은 경우에는 심플하게 /var/www/에 넣었습니다.
1. 헬로서비스php 및 2. 데모.php
헬로 서비스php는 매우 단순하며 기본적으로 모든 데이터를 에코백합니다.
<?php
// Here is the data we will be sending to the service
$some_data = array(
'message' => 'Hello World',
'name' => 'Anand'
);
$curl = curl_init();
// You can also set the URL you want to communicate with by doing this:
// $curl = curl_init('http://localhost/echoservice');
// We POST the data
curl_setopt($curl, CURLOPT_POST, 1);
// Set the url path we want to call
curl_setopt($curl, CURLOPT_URL, 'http://localhost/demo.php');
// Make it so the data coming back is put into a string
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Insert the data
curl_setopt($curl, CURLOPT_POSTFIELDS, $some_data);
// You can also bunch the above commands into an array if you choose using: curl_setopt_array
// Send the request
$result = curl_exec($curl);
// Get some cURL session information back
$info = curl_getinfo($curl);
echo 'content type: ' . $info['content_type'] . '<br />';
echo 'http code: ' . $info['http_code'] . '<br />';
// Free up the resources $curl is using
curl_close($curl);
echo $result;
?>
2.204.1984 페이지에는 다음과 같은 결과가 표시됩니다.
<?php
print_r($_POST);
//content type: text/html; charset=UTF-8
//http code: 200
//Array ( [message] => Hello World [name] => Anand )
?>
PHP에 대한 cURL 확장은 PHP 스크립트 내에서 다양한 웹 리소스를 사용할 수 있도록 설계되었습니다.
PHP의 cURL은 php 언어에서 명령줄 cURL을 사용하는 브리지입니다.
cURL
- cURL은 코드에서 URL을 눌러 HTML 응답을 얻을 수 있는 방법입니다.
- PHP 언어의 명령줄 cURL에 사용됩니다.
- cURL은 PHP에서 HTTP 요청을 할 수 있는 라이브러리입니다.
PHP는 Daniel Stenberg에 의해 만들어진 라이브러리인 libcurl을 지원합니다. 이 라이브러리는 다양한 유형의 프로토콜을 사용하여 다양한 유형의 서버에 연결하고 통신할 수 있도록 합니다.libcurl은 현재 http, https, ftp, gopher, telnet, dict, file 및 ldap 프로토콜을 지원합니다.libcurl은 HTTPS 인증서, HTTP POST, HTTP PUT, FTP 업로드(이것은 PHP의 FTP 확장으로도 가능), HTTP 폼 기반 업로드, 프록시, 쿠키 및 사용자+패스워드 인증도 지원합니다.
cURL을 지원하는 PHP를 컴파일하면 cURL 함수를 사용할 수 있습니다.curl_init()를 사용하여 curl_init()을 사용하여 curl_setopt()를 사용하여 curl_exec()을 사용하여 세션을 실행하고 curl_cl_close()를 사용하여 세션을 종료하는 것이 curl_close()의 기본 개념입니다.
샘플 코드
// error reporting
error_reporting(E_ALL);
ini_set("display_errors", 1);
//setting url
$url = 'http://example.com/api';
//data
$data = array("message" => "Hello World!!!");
try {
$ch = curl_init($url);
$data_string = json_encode($data);
if (FALSE === $ch)
throw new Exception('failed to initialize');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$output = curl_exec($ch);
if (FALSE === $output)
throw new Exception(curl_error($ch), curl_errno($ch));
// ...process $output now
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
자세한 내용은 다음을 참조하십시오.
PHP 컬 기능(POST, GET, DELETE, PUT)
function curl($post = array(), $url, $token = '', $method = "POST", $json = false, $ssl = true){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
if($method == 'POST'){
curl_setopt($ch, CURLOPT_POST, 1);
}
if($json == true){
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json','Authorization: Bearer '.$token,'Content-Length: ' . strlen($post)));
}else{
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, 6);
if($ssl == false){
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
// curl_setopt($ch, CURLOPT_HEADER, 0);
$r = curl_exec($ch);
if (curl_error($ch)) {
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
print_r('Error: ' . $err . ' Status: ' . $statusCode);
// Add error
$this->error = $err;
}
curl_close($ch);
return $r;
}
Php curl 클래스(GET, POST, FILES UPLOAD, SESSIONS, SEND POST JSON, Force SelfSIGNED SSL/TLS):
<?php
// Php curl class
class Curl {
public $error;
function __construct() {}
function Get($url = "http://hostname.x/api.php?q=jabadoo&txt=gin", $forceSsl = false,$cookie = "", $session = true){
// $url = $url . "?". http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$info = curl_getinfo($ch);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function GetArray($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
$url = $url . "?". http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$info = curl_getinfo($ch);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function PostJson($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
$data = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer helo29dasd8asd6asnav7ffa',
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function Post($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $files = array('ads/ads0.jpg', 'ads/ads1.jpg'), $forceSsl = false, $cookie = "", $session = true){
foreach ($files as $k => $v) {
$f = realpath($v);
if(file_exists($f)){
$fc = new CurlFile($f, mime_content_type($f), basename($f));
$data["file[".$k."]"] = $fc;
}
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // !!!! required as of PHP 5.6.0 for files !!!
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
}
?>
예:
<?php
$urlget = "http://hostname.x/api.php?id=123&user=bax";
$url = "http://hostname.x/api.php";
$data = array("name" => "Max", "age" => "36");
$files = array('ads/ads0.jpg', 'ads/ads1.jpg');
$curl = new Curl();
echo $curl->Get($urlget, true, "token=12345");
echo $curl->GetArray($url, $data, true);
echo $curl->Post($url, $data, $files, true);
echo $curl->PostJson($url, $data, true);
?>
PHP 파일: api.php
<?php
/*
$Cookie = session_get_cookie_params();
print_r($Cookie);
*/
session_set_cookie_params(9000, '/', 'hostname.x', isset($_SERVER["HTTPS"]), true);
session_start();
$_SESSION['cnt']++;
echo "Session count: " . $_SESSION['cnt']. "\r\n";
echo $json = file_get_contents('php://input');
$arr = json_decode($json, true);
echo "<pre>";
if(!empty($json)){ print_r($arr); }
if(!empty($_GET)){ print_r($_GET); }
if(!empty($_POST)){ print_r($_POST); }
if(!empty($_FILES)){ print_r($_FILES); }
// request headers
print_r(getallheaders());
print_r(apache_response_headers());
// Fetch a list of headers to be sent.
// print_r(headers_list());
?>
언급URL : https://stackoverflow.com/questions/3062324/what-is-curl-in-php
'sourcecode' 카테고리의 다른 글
MariaDB ODBC 커넥터 성능 문제 (0) | 2022.11.27 |
---|---|
MariaDB가 이 덤프 파일을 가져올 수 없습니다. (0) | 2022.11.27 |
수집이 비어 있는지 Larabel 확인 (0) | 2022.11.26 |
경로를 변경해도 새 페이지의 맨 위로 스크롤되지 않음 (0) | 2022.11.26 |
'\r' 이스케이프 시퀀스의 용도는 무엇입니까? (0) | 2022.11.26 |