Что такое CURL в PHP?

220

В PHP я вижу слово cURL во многих проектах PHP. Что это? Как это работает?

Ссылка Ссылка: cURL

Аакаш Чакраварти
источник
1
Пожалуйста, проверьте ниже ссылку 2, я думаю, что это поможет вам понять, что такое cURL. phpsense.com/2007/php-curl-functions blog.unitedheroes.net/curl
Dhaval

Ответы:

245

cURL - это библиотека, которая позволяет вам делать HTTP-запросы в PHP. Все, что вам нужно знать об этом (и большинстве других расширений), можно найти в руководстве по PHP .

Чтобы использовать функции PHP cURL, вам необходимо установить пакет »libcurl. PHP требует, чтобы вы использовали libcurl 7.0.2-beta или выше. В PHP 4.2.3 вам понадобится libcurl версии 7.9.0 или выше. Начиная с PHP 4.3.0 вам потребуется версия libcurl 7.9.8 или выше. PHP 5.0.0 требует libcurl версии 7.10.5 или выше.

Вы также можете делать HTTP-запросы без cURL, хотя это необходимо allow_url_fopenвключить в вашем php.iniфайле.

// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');
Йоханнес Горсет
источник
1
@Johannes, возможны ли HTTP-запросы без cURL?
Pacerier
2
это означает, что если на сервере 'allow_url_fopen' не включен, то мы не можем использовать функцию file_get_contents (), но в этом случае мы можем использовать функцию curl для той же цели? я прав?
ARUN
3
@Arun Да, если 'allow_url_fopen' не включен, вы можете использовать curl для той же задачи вместо функции file_get_contents (). Curl позволяет вам установить дополнительные параметры, такие как данные POST, файлы cookie и т. Д., Которые file_get_contents () не предоставляет.
Динеш Нагар
157

cURL - это способ, с помощью которого вы можете нажать URL из своего кода, чтобы получить от него ответ в формате html. cURL означает клиентский URL, который позволяет вам соединяться с другими URL и использовать их ответы в вашем коде.

сушил бхарвани
источник
3
в Javascript это так же, как вы делаете AJAX в своем коде. Разные вещи с PHP вы делаете синхронно, а в Javascript вы делаете асинхронно.
Фарис Райхан
68

CURL в PHP:

Резюме:

Команда curl_execв PHP является мостом для использования curlиз консоли. curl_exec позволяет легко и быстро выполнять запросы GET / POST, получать ответы от других серверов, таких как JSON, и загружать файлы.

Предупреждение, опасность:

curlявляется злым и опасным, если используется ненадлежащим образом, потому что это все о получении данных оттуда в Интернете. Кто-то может встать между вашим curl и другим сервером и rm -rf /вставить a в ваш ответ, а затем, почему я брошен на консоль иls -l даже больше не работает? Потому что вы недооценили опасную силу скручивания. Не доверяйте ничему, что возвращается из curl, чтобы быть в безопасности, даже если вы разговариваете со своими собственными серверами. Вы могли бы отбросить вредоносные программы, чтобы освободить дураков от их богатства.

Примеры:

Это было сделано на Ubuntu 12.10

  1. Базовый локон из командной строки:

    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

    Затем вы можете открыть свой GIF в Firefox:

    firefox mycat.gif

    Славные кошки, развивающие Toxoplasma gondii, заставляют женщин держать кошек вокруг себя, а мужчины - и женщин вокруг.

  2. Пример cURL получить запрос на попадание на google.com, повторить в командной строке:

    Это делается через терминал phpsh:

    php> $ch = curl_init();
    
    php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
    
    php> curl_exec($ch);

    Который печатает и выводит беспорядок сжатого HTML и JavaScript (из Google) в консоль.

  3. Пример 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-файл кота, возможности безграничны.

  4. Сделайте завиток из файла 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, все, что вам нужно сделать, это указать параметры, как здесь: Использование curl для автоматизации заданий HTTP

Напоминание об опасности:

Будьте внимательны при выводе локонов, если какой-либо из них будет интерпретирован и исполнен, ваша коробка будет принадлежать, а информация о вашей кредитной карте будет продана третьим лицам, и вы получите таинственную плату в размере 900 долларов США от компании по производству напольных покрытий из Алабамы, которая является фронт за рубежом мошенничество с кредитными картами преступности кольцо.

Эрик Лещинский
источник
2
Можете ли вы предоставить ссылку, подтверждающую упомянутую здесь опасность?
плавающийЛомас
1
@floatingLomas Эрик пытается объяснить проблему, которая присутствует во всем предоставленном пользователем контенте: вы не можете никому доверять. Как и с предоставленным пользователем контентом, можно использовать cURL с помощью простого MITM для внедрения вредоносного кода в ваше приложение. Конечно, это проблема, только если ее «интерпретировать и выполнить», как правильно сказал Эрик. Просто поиск по eval - это зло, и вы обнаружите множество возможных угроз безопасности (например, stackoverflow.com/questions/951373/when-is-eval-evil-in-php )
Фабио Полони
7
@floatingLomas ... также у Эрика, похоже, паранойя о компаниях по производству напольных покрытий из Алабамы, которые берут с него 900 долларов.
Фабио Полони
Есть ли альтернатива, кроме iframe?
Дженнифер Мишель
1
Это не паранойя, если они действительно хотят продать вам паркет.
Piersb
24

cURL - это способ, с помощью которого вы можете нажать URL-адрес из своего кода, чтобы получить от него HTML-ответ. Он используется для командной строки cURL из языка PHP.

<?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, используя curl_init().

Шаг 2: Установите опцию для CURLOPT_URL. Это значение является URL-адресом, на который мы отправляем запрос. Добавить поисковый термин, curlиспользуя параметр q=. Установите опцию для CURLOPT_RETURNTRANSFER. True сообщит curl, что нужно вернуть строку, а не выводить ее. Установите опцию для CURLOPT_HEADER, false скажет curl игнорировать заголовок в возвращаемом значении.

Шаг 3: Выполните сеанс curl, используя 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

Неха Синха
источник
16

Во-первых, давайте разберемся с понятиями curl, libcurl и PHP / cURL.

  1. curl : инструмент командной строки для получения или отправки файлов с использованием синтаксиса URL.

  2. libcurl : библиотека, созданная Дэниелом Стенбергом, которая позволяет вам подключаться и взаимодействовать с множеством разных типов серверов с множеством разных типов протоколов. В настоящее время libcurl поддерживает протоколы http, https, ftp, gopher, telnet, dict, file и ldap. libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку по FTP (это также можно сделать с расширением ftp в PHP), загрузку на основе форм HTTP, прокси-серверы, файлы cookie и аутентификацию пользователя + пароль.

  3. PHP / cURL : модуль для PHP, позволяющий программам PHP использовать libcurl.

Как это использовать:

Шаг 1 : Инициализируйте сеанс curl с помощью curl_init ().

Шаг 2 : Установите опцию для CURLOPT_URL. Это значение является URL-адресом, на который мы отправляем запрос. Добавьте поисковый термин "curl", используя параметр "q =". Установите параметр CURLOPT_RETURNTRANSFER, значение true сообщит curl, что нужно вернуть строку, а не распечатывать ее. Установите опцию для CURLOPT_HEADER, false скажет curl игнорировать заголовок в возвращаемом значении.

Шаг 3 : Выполнить сеанс curl с помощью curl_exec ().

Шаг 4 : Закройте созданный нами сеанс curl.

Шаг 5 : Вывести возвращаемую строку.

Сделать ДЕМО :

Вам нужно будет создать два файла PHP и поместить их в папку, из которой ваш веб-сервер может обслуживать файлы PHP. В моем случае я поместил их в / var / www / для простоты.

1. helloservice.php и 2. demo.php

helloservice.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.demo.php , вы можете увидеть результат:

<?php 
   print_r($_POST);
   //content type: text/html; charset=UTF-8
   //http code: 200
   //Array ( [message] => Hello World [name] => Anand )
?>
Ананд Пандей
источник
Привет, не могли бы вы рассказать мне о странице 1. используя-curl.php
Каве
@Kaveh: извините, я забыл вторую страницу. Обновленный ответ. Теперь, пожалуйста, проверьте.
Ананд Пандей
12

Расширение cURL для PHP предназначено для того, чтобы вы могли использовать различные веб-ресурсы из скрипта PHP.

Навед Ахмед
источник
10

cURL в PHP - это мост для использования командной строки cURL из языка php

Хайме Хаблутцель
источник
7

завивать

  • cURL - это способ, с помощью которого вы можете нажать URL-адрес из своего кода, чтобы получить от него HTML-ответ.
  • Он используется для командной строки cURL из языка PHP.
  • cURL - это библиотека, которая позволяет вам делать HTTP-запросы в PHP.

PHP поддерживает libcurl, библиотеку, созданную Дэниелом Стенбергом, которая позволяет вам подключаться и взаимодействовать с множеством разных типов серверов с множеством разных типов протоколов. В настоящее время libcurl поддерживает протоколы http, https, ftp, gopher, telnet, dict, file и ldap. libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку по FTP (это также можно сделать с расширением ftp в PHP), загрузку на основе форм HTTP, прокси-серверы, файлы cookie и аутентификацию пользователя + пароль.

После того, как вы скомпилировали PHP с поддержкой cURL, вы можете начать использовать функции cURL. Основная идея функций cURL заключается в том, что вы инициализируете сеанс cURL с помощью curl_init (), затем вы можете установить все параметры передачи с помощью curl_setopt (), затем вы можете выполнить сеанс с помощью curl_exec (), а затем завершите сеанс с помощью 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);
}

Для получения дополнительной информации, пожалуйста, проверьте -

Joomler
источник
1

Curl - это не что иное, как расширение PHP, которое наследует поведение обычной команды и библиотеки curl, написанной в основном для инструмента командной строки Linux / Unix.

Что такое керл? cURL обозначает клиентский URL. CURL используется для отправки данных на любой URL. Для получения более подробной информации о том, что такое локон, вы можете посетить веб-сайт CURL

cURL в PHP Теперь та же концепция введена в PHP для отправки данных на любой доступный URL через другой протокол, например, HTTP или FTP. Для более подробной информации, вы можете обратиться к PHP Curl Tutorial

Анкур Кумар Сингх
источник
1

Функция PHP curl (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;
}
MałyMiszcz
источник
0

Класс php curl (ПОЛУЧИТЬ, ПОСТИТЬ, ЗАГРУЗИТЬ ФАЙЛЫ, СЕССИИ, ОТПРАВИТЬ ПОЧТУ JSON, СИЛЬНО ПОДПИСАННЫЕ 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());
?>
свободный художник
источник