Apa itu cURL dalam PHP?

Jawaban:

245

cURL adalah pustaka yang memungkinkan Anda membuat permintaan HTTP dalam PHP. Semua yang perlu Anda ketahui tentang hal ini (dan sebagian besar ekstensi lainnya) dapat ditemukan di manual PHP .

Untuk menggunakan fungsi PHP CURL Anda harus menginstal paket »libcurl. PHP mengharuskan Anda menggunakan libcurl 7.0.2-beta atau lebih tinggi. Di PHP 4.2.3, Anda akan memerlukan libcurl versi 7.9.0 atau lebih tinggi. Dari PHP 4.3.0, Anda membutuhkan versi libcurl yang 7.9.8 atau lebih tinggi. PHP 5.0.0 membutuhkan libcurl versi 7.10.5 atau lebih tinggi.

Anda dapat membuat permintaan HTTP tanpa cURL, meskipun allow_url_fopenharus diaktifkan di php.inifile Anda .

// 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
sumber
1
@Johannes, Apakah permintaan kiriman HTTP dimungkinkan tanpa cURL?
Pacerier
2
itu berarti, jika di server 'allow_url_fopen' tidak diaktifkan maka kita tidak dapat menggunakan fungsi file_get_contents (), tetapi dalam hal ini kita dapat menggunakan fungsi curl untuk tujuan yang sama? Apakah saya benar?
ARUN
3
@Arun Ya jika 'allow_url_fopen' tidak diaktifkan, Anda dapat menggunakan curl untuk tugas yang sama alih-alih file_get_contents () func. Curl memungkinkan Anda untuk mengatur lebih banyak opsi seperti data POST, cookie dll yang file_get_contents () tidak menyediakan.
Dinesh Nagar
157

cURL adalah cara Anda dapat menekan URL dari kode Anda untuk mendapatkan respons html darinya. cURL berarti URL klien yang memungkinkan Anda terhubung dengan URL lain dan menggunakan tanggapan mereka dalam kode Anda.

sushil bharwani
sumber
3
dalam Javascript sama seperti yang Anda lakukan ajax dalam kode Anda. Hal-hal berbeda dengan PHP yang Anda lakukan secara sinkron sementara di Javascript Anda lakukan secara tidak sinkron.
Faris Rayhan
68

CURL dalam PHP:

Ringkasan:

The curl_execperintah dalam PHP adalah jembatan untuk menggunakan curldari konsol. curl_exec membuatnya mudah melakukan permintaan GET / POST dengan cepat dan mudah, menerima respons dari server lain seperti JSON dan mengunduh file.

Peringatan, Bahaya:

curljahat dan berbahaya jika digunakan secara tidak benar karena ini adalah tentang mendapatkan data dari luar sana di internet. Seseorang bisa mendapatkan antara ikal Anda dan server lain dan menyuntikkan rm -rf /respons Anda, lalu mengapa saya turun ke konsol dan ls -lbahkan tidak berfungsi lagi? Karena Anda salah menilai kekuatan curl yang berbahaya. Jangan percaya apa pun yang kembali dari curl menjadi aman, bahkan jika Anda berbicara dengan server Anda sendiri. Anda bisa menarik kembali malware untuk meringankan orang bodoh dari kekayaan mereka.

Contoh:

Ini dilakukan di Ubuntu 12.10

  1. Keriting dasar dari baris perintah:

    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

    Kemudian Anda bisa membuka gif Anda di firefox:

    firefox mycat.gif

    Kucing yang mulia berevolusi Toxoplasma gondii untuk menyebabkan wanita memelihara kucing dan pria juga memelihara wanita.

  2. contoh CURL dapatkan permintaan untuk menekan google.com, gema ke baris perintah:

    Ini dilakukan melalui terminal phpsh:

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

    Yang mencetak dan membuang kekacauan html dan javascript kental (dari google) ke konsol.

  3. Contoh CURL menempatkan teks respons ke dalam variabel:

    Ini dilakukan melalui 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;

    Variabel sekarang berisi biner yang merupakan gif animasi kucing, kemungkinan tidak terbatas.

  4. Lakukan ikal dari dalam file PHP:

    Masukkan kode ini dalam file bernama 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;
      }
    ?>

    Kemudian jalankan melalui commandline:

    php < myphp.php

    Anda menjalankan myphp.php dan menjalankan perintah-perintah itu melalui penerjemah php dan membuang satu ton html dan javascript yang berantakan ke layar.

    Anda dapat melakukan GETdan POSTmeminta dengan curl, yang Anda lakukan hanyalah menentukan parameter seperti yang didefinisikan di sini: Menggunakan curl untuk mengotomatiskan pekerjaan HTTP

Pengingat bahaya:

Berhati-hatilah saat membuang hasil ikal, jika ada yang ditafsirkan dan dieksekusi, kotak Anda dimiliki dan info kartu kredit Anda akan dijual kepada pihak ketiga dan Anda akan mendapatkan tagihan $ 900 misterius dari perusahaan lantai satu orang Alabama yang merupakan depan untuk cincin kejahatan penipuan kartu kredit luar negeri.

Eric Leschinski
sumber
2
Bisakah Anda memberikan tautan yang mendukung 'bahaya' yang Anda sebutkan di sini?
floatingLomas
1
@floatingLomas Apa yang Eric coba jelaskan adalah masalah yang ada pada semua konten yang disediakan pengguna: Anda tidak bisa mempercayai siapa pun. Seperti halnya konten yang disediakan pengguna, dimungkinkan untuk mengeksploitasi CURL menggunakan MITM sederhana untuk menyuntikkan kode berbahaya ke dalam aplikasi Anda. Tentu saja ini hanya masalah jika "ditafsirkan dan dieksekusi" seperti yang dinyatakan Eric dengan benar. Hanya mencari eval itu jahat dan Anda akan menemukan banyak risiko keamanan yang mungkin (mis. Stackoverflow.com/questions/951373/when-is-eval-evil-in-php )
Fabio Poloni
7
@ floatingLomas ... juga, Eric tampaknya memiliki paranoia tentang perusahaan lantai satu Alabama yang menagihnya $ 900.
Fabio Poloni
Apakah ada alternatif selain iframe?
Jennifer Michelle
1
Ini bukan paranoia jika mereka benar-benar keluar untuk menjual lantai kepada Anda.
piersb
24

cURL adalah cara Anda dapat menekan URL dari kode Anda untuk mendapatkan respons HTML darinya. Ini digunakan untuk baris perintah cURL dari bahasa 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;
?> 

Langkah 1: Inisialisasi sesi keriting menggunakan curl_init().

Langkah 2: Tetapkan opsi untuk CURLOPT_URL. Nilai ini adalah URL yang kami kirimi permintaan. Tambahkan istilah pencarian curlmenggunakan parameter q=. Tetapkan opsi untuk CURLOPT_RETURNTRANSFER. True akan memberi tahu curl untuk mengembalikan string alih-alih mencetaknya. Setel opsi untuk CURLOPT_HEADER, false akan memberi tahu curl untuk mengabaikan header di nilai balik.

Langkah 3: Jalankan sesi keriting menggunakan curl_exec().

Langkah 4: Tutup sesi keriting yang telah kita buat.

Langkah 5: Keluarkan string kembali.

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

Ini juga digunakan untuk otentikasi. Kami juga dapat mengatur nama pengguna dan kata sandi untuk otentikasi.

Untuk fungsionalitas lainnya, lihat panduan pengguna atau tutorial berikut:

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

Neha Sinha
sumber
16

Pertama mari kita memahami konsep curl, libcurl dan PHP / cURL.

  1. curl : Alat baris perintah untuk mendapatkan atau mengirim file menggunakan sintaks URL.

  2. libcurl : perpustakaan yang dibuat oleh Daniel Stenberg, yang memungkinkan Anda untuk terhubung dan berkomunikasi ke berbagai jenis server dengan berbagai jenis protokol. libcurl saat ini mendukung protokol http, https, ftp, gopher, telnet, dict, file, dan ldap. libcurl juga mendukung sertifikat HTTPS, HTTP POST, HTTP PUT, unggah FTP (ini juga dapat dilakukan dengan ekstensi ftp PHP), unggahan berbasis formulir HTTP, proksi, cookie, dan otentikasi pengguna + kata sandi.

  3. PHP / cURL : Modul untuk PHP yang memungkinkan program PHP untuk menggunakan libcurl.

Bagaimana cara menggunakannya:

langkah1 : Inisialisasi sesi curl gunakan curl_init ().

Langkah 2 : Tetapkan opsi untuk CURLOPT_URL. Nilai ini adalah URL yang kami kirimi permintaan. Tambahkan istilah pencarian "curl" menggunakan parameter "q =". Tetapkan opsi CURLOPT_RETURNTRANSFER, true akan memberi tahu curl untuk mengembalikan string alih-alih mencetaknya. Setel opsi untuk CURLOPT_HEADER, false akan memberi tahu curl untuk mengabaikan header di nilai yang dikembalikan.

langkah3 : Jalankan sesi curl menggunakan curl_exec ().

step4 : Tutup sesi keriting yang telah kita buat.

step5 : string kembali.

Buat DEMO :

Anda harus membuat dua file PHP dan menempatkannya ke dalam folder tempat server web Anda dapat menyajikan file PHP. Dalam kasus saya, saya memasukkannya ke / var / www / untuk kesederhanaan.

1. helloservice.php dan 2. demo.php

helloservice.php sangat sederhana dan pada dasarnya hanya mengembalikan data yang didapatnya:

<?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 , Anda dapat melihat hasilnya:

<?php 
   print_r($_POST);
   //content type: text/html; charset=UTF-8
   //http code: 200
   //Array ( [message] => Hello World [name] => Anand )
?>
Anand Pandey
sumber
Hai, tolong ceritakan tentang halaman 1. using-curl.php
Kaveh
@ Kaveh: maaf, saya lupa halaman kedua. Jawaban yang diperbarui. Sekarang tolong periksa.
Anand Pandey
12

Ekstensi cURL ke PHP dirancang untuk memungkinkan Anda menggunakan berbagai sumber daya web dari dalam skrip PHP Anda.

Naved Ahmed
sumber
10

cURL dalam PHP adalah jembatan untuk menggunakan command line cURL dari bahasa php

Jaime Hablutzel
sumber
7

keriting

  • cURL adalah cara Anda dapat menekan URL dari kode Anda untuk mendapatkan respons HTML darinya.
  • Ini digunakan untuk baris perintah cURL dari bahasa PHP.
  • cURL adalah pustaka yang memungkinkan Anda membuat permintaan HTTP dalam PHP.

PHP mendukung libcurl, perpustakaan yang dibuat oleh Daniel Stenberg, yang memungkinkan Anda untuk terhubung dan berkomunikasi ke berbagai jenis server dengan berbagai jenis protokol. libcurl saat ini mendukung protokol http, https, ftp, gopher, telnet, dict, file, dan ldap. libcurl juga mendukung sertifikat HTTPS, HTTP POST, HTTP PUT, unggah FTP (ini juga dapat dilakukan dengan ekstensi ftp PHP), unggahan berbasis formulir HTTP, proksi, cookie, dan otentikasi pengguna + kata sandi.

Setelah mengkompilasi PHP dengan dukungan cURL, Anda dapat mulai menggunakan fungsi-fungsi cURL. Ide dasar di balik fungsi cURL adalah Anda menginisialisasi sesi cURL menggunakan curl_init (), maka Anda dapat mengatur semua opsi untuk transfer melalui curl_setopt (), kemudian Anda dapat menjalankan sesi dengan curl_exec () dan kemudian Anda selesaikan sesi Anda menggunakan curl_close ().

Kode sampel

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

Untuk informasi lebih lanjut, silakan periksa -

Joomler
sumber
1

Curl tidak lain adalah perpanjangan dari PHP yang mewarisi perilaku perintah & pustaka ikal normal yang ditulis terutama untuk Linux / alat baris perintah Unix

Apa itu Curl? CURL adalah singkatan untuk URL Klien. CURL digunakan untuk mengirim data ke URL apa pun. Untuk detail lebih lanjut tentang apa sebenarnya ikal itu, Anda dapat mengunjungi Situs CURL

cURL dalam PHP Sekarang konsep yang sama diperkenalkan dalam PHP, untuk mengirim data ke URL yang dapat diakses melalui protokol yang berbeda, misalnya, HTTP atau FTP. Untuk lebih detail, Anda bisa merujuk ke Tutorial PHP Curl

Ankur Kumar Singh
sumber
1

Fungsi 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
sumber
0

Kelas ikal Php (DAPATKAN, POS, UPLOAD FILES, SESI, KIRIM 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;
            } 
        }
    }
?>

Contoh:

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

File 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());
?>
Freelancer
sumber