Co to jest cURL w PHP?

Odpowiedzi:

245

cURL to biblioteka, która pozwala na wysyłanie żądań HTTP w PHP. Wszystko, co musisz o tym wiedzieć (i większość innych rozszerzeń) można znaleźć w instrukcji PHP .

Aby korzystać z funkcji cURL PHP, musisz zainstalować pakiet »libcurl. PHP wymaga używania libcurl 7.0.2-beta lub nowszego. W PHP 4.2.3 potrzebujesz libcurl w wersji 7.9.0 lub nowszej. Od PHP 4.3.0 potrzebujesz wersji libcurl 7.9.8 lub nowszej. PHP 5.0.0 wymaga libcurl w wersji 7.10.5 lub nowszej.

Możesz również wysyłać żądania HTTP bez cURL, chociaż wymaga allow_url_fopento włączenia w php.inipliku.

// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');
Johannes Gorset
źródło
1
@Johannes, Czy żądania HTTP są możliwe bez cURL?
Pacerier
2
oznacza to, że jeśli na serwerze „allow_url_fopen” nie jest włączony, nie moglibyśmy użyć funkcji file_get_contents (), ale czy w takim przypadku możemy użyć funkcji curl w tym samym celu? mam rację?
ARUN
3
@Arun Tak, jeśli 'allow_url_fopen' nie jest włączony, możesz użyć curl dla tego samego zadania zamiast file_get_contents () func. Curl pozwala ustawić więcej opcji, takich jak dane POST, pliki cookie itp., Których nie udostępnia file_get_contents ().
Dinesh Nagar
157

cURL to sposób, w jaki możesz trafić adres URL ze swojego kodu, aby uzyskać od niego odpowiedź HTML. cURL oznacza adres URL klienta, który pozwala łączyć się z innymi adresami URL i wykorzystywać ich odpowiedzi w kodzie.

Sushil Bharwani
źródło
3
w JavaScript to samo, co robisz ajax w kodzie. Różne rzeczy z PHP robisz synchronicznie, podczas gdy w JavaScript robisz to synchronicznie.
Faris Rayhan,
68

CURL w PHP:

Podsumowanie:

curl_execPolecenie PHP jest most do użytkucurl z konsoli. curl_exec ułatwia szybkie i łatwe wykonywanie żądań GET / POST, otrzymywanie odpowiedzi z innych serwerów, takich jak JSON, i pobieranie plików.

Ostrzeżenie, niebezpieczeństwo:

curljest złe i niebezpieczne, jeśli jest niewłaściwie używane, ponieważ chodzi o pobieranie danych z Internetu. Ktoś może dostać się między twoim lokiem a drugim serwerem i wstrzyknąć rm -rf /twoją odpowiedź, a potem dlaczego spadłem na konsolę ils -l nawet już nie działa? Ponieważ źle nie doceniłeś niebezpiecznej mocy zwijania się. Nie ufaj, że wszystko, co wraca z curl, jest bezpieczne, nawet jeśli rozmawiasz ze swoimi serwerami. Możesz wycofywać złośliwe oprogramowanie, aby uwolnić głupców od ich bogactwa.

Przykłady:

Zostały one wykonane na Ubuntu 12.10

  1. Podstawowe curl z wiersza poleceń:

    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

    Następnie możesz otworzyć swój gif w Firefoksie:

    firefox mycat.gif

    Chwalebne koty ewoluujące Toxoplasma gondii, aby kobiety trzymały koty w pobliżu, a mężczyźni podobnie trzymali kobiety w pobliżu.

  2. Przykład cURL otrzymuje prośbę o trafienie na google.com, echo do wiersza poleceń:

    Odbywa się to przez terminal phpsh:

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

    Który drukuje i zrzuca bałagan skondensowanego HTML i javascript (z Google) do konsoli.

  3. Przykład cURL umieścił tekst odpowiedzi w zmiennej:

    Odbywa się to przez terminal 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;

    Zmienna zawiera teraz plik binarny, który jest animowanym gifem kota, możliwości są nieograniczone.

  4. Wykonaj zawinięcie w pliku PHP:

    Umieść ten kod w pliku o nazwie 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;
      }
    ?>

    Następnie uruchom go za pomocą wiersza polecenia:

    php < myphp.php

    Uruchomiłeś myphp.php i wykonałeś te polecenia przez interpreter php i zrzuciłeś mnóstwo niechlujnego html i javascript na ekran.

    Możesz robić GETi POSTżądać za pomocą curl, wszystko co musisz zrobić, to określić parametry zdefiniowane tutaj: Używanie curl do automatyzacji zadań HTTP

Przypomnienie o niebezpieczeństwie:

Zachowaj ostrożność, zrzucając wywinięte zawijasy, jeśli którekolwiek z nich zostanie zinterpretowane i wykonane, Twoje pudełko jest własnością, a dane Twojej karty kredytowej zostaną sprzedane stronom trzecim, a otrzymasz tajemniczą opłatę w wysokości 900 USD od jednoosobowej firmy podłogowej Alabama, która jest z przodu za przestępstwa dotyczące oszustw związanych z kartami kredytowymi za granicą

Eric Leschinski
źródło
2
Czy możesz podać link do kopii zapasowej „niebezpieczeństwa”, o którym tu wspominasz?
floatingLomas
1
@floatingLomas To, co Eric próbuje wyjaśnić, to problem występujący w przypadku wszystkich treści dostarczanych przez użytkowników: nikomu nie możesz ufać. Podobnie jak w przypadku treści dostarczanych przez użytkowników, możliwe jest wykorzystanie cURL przy użyciu prostego MITM do wstrzykiwania złośliwego kodu do aplikacji. Oczywiście jest to problem tylko wtedy, gdy zostanie „zinterpretowany i wykonany”, jak poprawnie stwierdził Eric. Wystarczy wyszukać ewaluację, która jest zła, a znajdziesz wiele możliwych zagrożeń bezpieczeństwa (np. Stackoverflow.com/questions/951373/when-is-eval-evil-in-php )
Fabio Poloni,
7
@floatingLomas ... Eric wydaje się mieć paranoję na temat jednoosobowych firm podłogowych w Alabamie, które obciążają go 900 USD.
Fabio Poloni,
Czy istnieje alternatywa oprócz iframe?
Jennifer Michelle
1
To nie jest paranoja, jeśli naprawdę chcą sprzedać ci podłogi.
piersb
24

cURL to sposób, w jaki możesz trafić adres URL ze swojego kodu, aby uzyskać od niego odpowiedź HTML. Służy do wiersza poleceń cURL z języka 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;
?> 

Krok 1: Zainicjuj sesję curl za pomocą curl_init().

Krok 2: Ustaw opcję dla CURLOPT_URL. Ta wartość to adres URL, na który wysyłamy żądanie. Dodaj wyszukiwane hasło curlza pomocą parametru q=. Ustaw opcję dla CURLOPT_RETURNTRANSFER. Prawda każe curl zwrócić ciąg zamiast drukować. Ustaw opcję dla CURLOPT_HEADER, false spowoduje, że curl zignoruje nagłówek w zwracanej wartości.

Krok 3: Wykonaj sesję curl za pomocą curl_exec().

Krok 4: Zamknij utworzoną sesję curl.

Krok 5: Wyprowadzenie ciągu zwrotnego.

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;
}

Służy to również do uwierzytelnienia. Możemy również ustawić nazwę użytkownika i hasło do uwierzytelnienia.

Aby uzyskać więcej funkcji, zobacz instrukcję obsługi lub następujący samouczek:

http://php.net/manual/en/ref.curl.php
http://www.startutorial.com/articles/view/php-curl

Neha Sinha
źródło
16

Po pierwsze, zrozummy pojęcia curl, libcurl i PHP / cURL.

  1. curl : narzędzie wiersza polecenia do pobierania lub wysyłania plików przy użyciu składni URL.

  2. libcurl : biblioteka stworzona przez Daniela Stenberga, która pozwala łączyć się i komunikować z wieloma różnymi typami serwerów z wieloma różnymi typami protokołów. libcurl obsługuje obecnie protokoły http, https, ftp, gopher, telnet, dict, file i ldap. libcurl obsługuje również certyfikaty HTTPS, HTTP POST, HTTP PUT, przesyłanie FTP (można to również zrobić z rozszerzeniem ftp PHP), przesyłanie oparte na formularzu HTTP, serwery proxy, pliki cookie oraz uwierzytelnianie użytkownika + hasło.

  3. PHP / cURL : moduł dla PHP, który umożliwia programom PHP używanie libcurl.

Jak tego użyć:

krok 1 : Zainicjuj sesję curl użyj curl_init ().

krok 2 : Ustaw opcję dla CURLOPT_URL. Ta wartość to adres URL, do którego wysyłamy zapytanie. Dołącz wyszukiwany termin „curl” za pomocą parametru „q =”. Ustaw opcję CURLOPT_RETURNTRANSFER, true powie curl, aby zwrócił ciąg zamiast drukować go. Ustaw opcję dla CURLOPT_HEADER, false spowoduje, że curl zignoruje nagłówek w zwracanej wartości.

krok 3 : Wykonaj sesję curl za pomocą curl_exec ().

step4 : Zamknij utworzoną sesję curl.

step5 : Wyprowadza zwracany ciąg.

Zrób DEMO :

Musisz utworzyć dwa pliki PHP i umieścić je w folderze, z którego Twój serwer WWW może obsługiwać pliki PHP. W moim przypadku dla uproszczenia umieściłem je w katalogu / var / www /.

1. helloservice.php i 2. demo.php

helloservice.php jest bardzo prosty i zasadniczo przypomina wszystkie otrzymywane dane:

<?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. strona demo.php , możesz zobaczyć wynik:

<?php 
   print_r($_POST);
   //content type: text/html; charset=UTF-8
   //http code: 200
   //Array ( [message] => Hello World [name] => Anand )
?>
Anand Pandey
źródło
Cześć, czy mógłbyś mi powiedzieć o stronie 1. using-curl.php
Kaveh
@Kaveh: przepraszam, zapomniałem drugiej strony. Zaktualizowana odpowiedź. Teraz sprawdź.
Anand Pandey
12

Rozszerzenie cURL do PHP zostało zaprojektowane tak, aby umożliwić Ci korzystanie z różnych zasobów sieciowych z poziomu skryptu PHP.

Naved Ahmed
źródło
10

cURL w PHP jest pomostem do używania wiersza poleceń cURL z języka php

Jaime Hablutzel
źródło
7

kędzior

  • cURL to sposób, w jaki możesz trafić adres URL ze swojego kodu, aby uzyskać od niego odpowiedź HTML.
  • Służy do wiersza poleceń cURL z języka PHP.
  • cURL to biblioteka, która pozwala na wysyłanie żądań HTTP w PHP.

PHP obsługuje libcurl, bibliotekę stworzoną przez Daniela Stenberga, która pozwala łączyć się i komunikować z wieloma różnymi typami serwerów z wieloma różnymi typami protokołów. libcurl obsługuje obecnie protokoły http, https, ftp, gopher, telnet, dict, file i ldap. libcurl obsługuje również certyfikaty HTTPS, HTTP POST, HTTP PUT, przesyłanie FTP (można to również zrobić z rozszerzeniem ftp PHP), przesyłanie oparte na formularzu HTTP, serwery proxy, pliki cookie oraz uwierzytelnianie użytkownika + hasło.

Po skompilowaniu PHP z obsługą cURL możesz zacząć korzystać z funkcji cURL. Podstawową ideą funkcji cURL jest to, że inicjujesz sesję cURL za pomocą curl_init (), następnie możesz ustawić wszystkie opcje przesyłania za pomocą curl_setopt (), następnie możesz wykonać sesję za pomocą curl_exec (), a następnie zakończ sesję za pomocą curl_close ().

Przykładowy kod

// 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);
}

Aby uzyskać więcej informacji, sprawdź -

Joomler
źródło
1

Curl to nic innego jak rozszerzenie PHP, które dziedziczy zachowania normalnego polecenia curl i biblioteki napisanego głównie dla narzędzia wiersza poleceń Linux / Unix

Co to jest Curl? cURL oznacza URL klienta. CURL służy do wysyłania danych na dowolny adres URL. Aby uzyskać więcej informacji na temat tego, czym dokładnie jest curl, możesz odwiedzić stronę internetową CURL

cURL w PHP Teraz ta sama koncepcja została wprowadzona w PHP, aby wysyłać dane do dowolnego dostępnego adresu URL za pośrednictwem innego protokołu, na przykład HTTP lub FTP. Aby uzyskać więcej informacji, możesz zapoznać się z Tutorialem Curl PHP

Ankur Kumar Singh
źródło
1

Funkcja curl 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;
}
MałyMiszcz
źródło
0

Klasa curl php (GET, POST, PLIKI UPLOAD, SESJE, WYŚLIJ 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;
            } 
        }
    }
?>

Przykład:

<?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);
?>

Plik 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());
?>
Wolny strzelec
źródło