Was ist cURL in PHP?

Antworten:

245

cURL ist eine Bibliothek, mit der Sie HTTP-Anforderungen in PHP stellen können. Alles, was Sie darüber wissen müssen (und die meisten anderen Erweiterungen), finden Sie im PHP-Handbuch .

Um die cURL-Funktionen von PHP nutzen zu können, müssen Sie das »libcurl-Paket installieren. Für PHP müssen Sie libcurl 7.0.2-beta oder höher verwenden. In PHP 4.2.3 benötigen Sie libcurl Version 7.9.0 oder höher. Ab PHP 4.3.0 benötigen Sie eine libcurl-Version ab 7.9.8. PHP 5.0.0 erfordert eine libcurl-Version 7.10.5 oder höher.

Sie können HTTP-Anforderungen auch ohne cURL stellen, obwohl dies allow_url_fopenin Ihrer php.iniDatei aktiviert sein muss .

// 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
quelle
1
@Johannes, Sind HTTP-Post-Anfragen ohne cURL möglich?
Pacerier
2
Wenn auf dem Server 'allow_url_fopen' nicht aktiviert ist, können wir die Funktion file_get_contents () nicht verwenden. In diesem Fall können wir jedoch die Curl-Funktion für denselben Zweck verwenden. hab ich recht?
ARUN
3
@Arun Ja, wenn 'allow_url_fopen' nicht aktiviert ist, können Sie curl für dieselbe Aufgabe anstelle von file_get_contents () func verwenden. Mit Curl können Sie weitere Optionen wie POST-Daten, Cookies usw. festlegen, die file_get_contents () nicht bietet.
Dinesh Nagar
157

Mit cURL können Sie eine URL aus Ihrem Code aufrufen, um eine HTML-Antwort zu erhalten. cURL bedeutet Client-URL, mit der Sie eine Verbindung zu anderen URLs herstellen und deren Antworten in Ihrem Code verwenden können.

Sushil Bharwani
quelle
3
In Javascript ist es genauso wie in Ihrem Code Ajax. Die verschiedenen Dinge mit PHP machen Sie synchron, während Sie in Javascript aysnchron machen.
Faris Rayhan
68

CURL in PHP:

Zusammenfassung:

Der curl_execBefehl in PHP ist eine Bridge, die curlvon der Konsole aus verwendet werden kann. Mit curl_exec können Sie schnell und einfach GET / POST-Anforderungen ausführen, Antworten von anderen Servern wie JSON empfangen und Dateien herunterladen.

Achtung, Gefahr:

curlist böse und gefährlich, wenn es unsachgemäß verwendet wird, weil es darum geht, Daten von dort draußen im Internet abzurufen. Jemand kann zwischen Ihre Locke und den anderen Server gelangen und eine rm -rf /in Ihre Antwort einfügen. Warum werde ich dann auf eine Konsole fallen gelassen und ls -larbeite nicht einmal mehr? Weil Sie die gefährliche Kraft des Lockens falsch unterschätzt haben. Vertrauen Sie nichts, was von Curl zurückkommt, um sicher zu gehen, selbst wenn Sie mit Ihren eigenen Servern sprechen. Sie könnten Malware zurückziehen, um Dummköpfe von ihrem Reichtum zu entlasten.

Beispiele:

Diese wurden unter Ubuntu 12.10 durchgeführt

  1. Grundlegende Locke von der Kommandozeile:

    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

    Dann können Sie Ihr GIF in Firefox öffnen:

    firefox mycat.gif

    Herrliche Katzen, die Toxoplasma gondii entwickeln, veranlassen Frauen, Katzen in der Nähe zu halten, und Männer, die Frauen in der Nähe zu halten.

  2. Beispiel für eine cURL-Anfrage zum Aufrufen von google.com, Echo zur Befehlszeile:

    Dies erfolgt über das PHPH-Terminal:

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

    Dadurch wird ein Durcheinander von komprimiertem HTML und Javascript (von Google) gedruckt und auf die Konsole übertragen.

  3. Beispiel cURL Fügen Sie den Antworttext in eine Variable ein:

    Dies erfolgt über das PHPH-Terminal:

    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;

    Die Variable enthält jetzt die Binärdatei, die ein animiertes GIF einer Katze ist. Die Möglichkeiten sind unendlich.

  4. Machen Sie eine Locke aus einer PHP-Datei heraus:

    Fügen Sie diesen Code in eine Datei mit dem Namen myphp.php ein:

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

    Führen Sie es dann über die Befehlszeile aus:

    php < myphp.php

    Sie haben myphp.php ausgeführt und diese Befehle über den PHP-Interpreter ausgeführt und eine Menge chaotischer HTML- und Javascript-Dateien auf den Bildschirm geschrieben.

    Sie können mit curl etwas tun GETund POSTanfordern. Sie müssen lediglich die hier definierten Parameter angeben: Verwenden von curl zum Automatisieren von HTTP-Jobs

Erinnerung an die Gefahr:

Seien Sie vorsichtig, wenn Sie die Curl-Ausgabe herumwerfen. Wenn etwas davon interpretiert und ausgeführt wird, ist Ihre Box im Besitz und Ihre Kreditkarteninformationen werden an Dritte verkauft. Sie erhalten eine mysteriöse Gebühr von 900 USD von einer Ein-Mann-Bodenbelagsfirma in Alabama, die eine Front für Übersee-Kreditkartenbetrug Kriminalring.

Eric Leschinski
quelle
2
Können Sie einen Link bereitstellen, der die hier erwähnte "Gefahr" belegt?
FloatingLomas
1
@floatingLomas Was Eric zu erklären versucht, ist ein Problem, das bei allen vom Benutzer bereitgestellten Inhalten auftritt: Sie können niemandem vertrauen. Wie bei vom Benutzer bereitgestellten Inhalten ist es möglich, cURL mithilfe eines einfachen MITM auszunutzen, um schädlichen Code in Ihre Anwendung einzufügen. Natürlich ist dies nur dann ein Problem, wenn es "interpretiert und ausgeführt" wird, wie Eric richtig angegeben hat. Nur nach der Bewertung zu suchen ist böse und Sie werden viele mögliche Sicherheitsrisiken finden (z. B. stackoverflow.com/questions/951373/when-is-eval-evil-in-php )
Fabio Poloni
7
@floatingLomas ... außerdem scheint Eric Paranoia gegenüber Ein-Mann-Bodenbelagsunternehmen in Alabama zu haben, die ihm 900 US-Dollar in Rechnung stellen.
Fabio Poloni
Gibt es neben iframe noch eine Alternative?
Jennifer Michelle
1
Es ist keine Paranoia, wenn sie wirklich darauf aus sind, Ihnen Fußböden zu verkaufen.
Piersb
24

Mit cURL können Sie eine URL aus Ihrem Code abrufen, um eine HTML-Antwort darauf zu erhalten. Es wird für die Befehlszeilen-CURL aus der PHP-Sprache verwendet.

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

Schritt 1: Initialisieren Sie eine Curl-Sitzung mit curl_init().

Schritt 2: Option für einstellen CURLOPT_URL. Dieser Wert ist die URL, an die wir die Anfrage senden. Fügen Sie einen Suchbegriff curlmit einem Parameter hinzu q=. Option einstellen für CURLOPT_RETURNTRANSFER. True weist curl an, die Zeichenfolge zurückzugeben, anstatt sie auszudrucken. Wenn Sie die Option für CURLOPT_HEADERfalse festlegen, wird curl angewiesen, den Header im Rückgabewert zu ignorieren.

Schritt 3: Führen Sie die Curl-Sitzung mit aus curl_exec().

Schritt 4: Schließen Sie die von uns erstellte Curl-Sitzung.

Schritt 5: Geben Sie die Rückgabezeichenfolge aus.

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

Dies wird auch zur Authentifizierung verwendet. Wir können auch den Benutzernamen und das Passwort für die Authentifizierung festlegen.

Weitere Funktionen finden Sie im Benutzerhandbuch oder im folgenden Tutorial:

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

Neha Sinha
quelle
16

Lassen Sie uns zunächst die Konzepte von curl, libcurl und PHP / cURL verstehen.

  1. curl : Ein Befehlszeilenprogramm zum Abrufen oder Senden von Dateien mithilfe der URL-Syntax.

  2. libcurl : Eine von Daniel Stenberg erstellte Bibliothek, mit der Sie eine Verbindung herstellen und mit vielen verschiedenen Servertypen mit vielen verschiedenen Protokolltypen kommunizieren können. libcurl unterstützt derzeit die Protokolle http, https, ftp, gopher, telnet, dict, file und ldap. libcurl unterstützt auch HTTPS-Zertifikate, HTTP-POST, HTTP-PUT, FTP-Upload (dies kann auch mit der FTP-Erweiterung von PHP erfolgen), HTTP-formularbasiertes Upload, Proxys, Cookies und Benutzer- und Kennwortauthentifizierung.

  3. PHP / cURL : Das Modul für PHP, mit dem PHP-Programme libcurl verwenden können.

Wie man es benutzt:

Schritt 1 : Initialisieren Sie eine Curl-Sitzung mit curl_init ().

Schritt 2 : Option für CURLOPT_URL festlegen. Dieser Wert ist die URL, an die wir die Anforderung senden. Fügen Sie einen Suchbegriff "curl" mit dem Parameter "q =" hinzu. Setzen Sie die Option CURLOPT_RETURNTRANSFER. True weist curl an, die Zeichenfolge zurückzugeben, anstatt sie auszudrucken. Wenn Sie die Option für CURLOPT_HEADER auf false setzen, wird curl angewiesen, den Header im Rückgabewert zu ignorieren.

Schritt 3 : Führen Sie die Curl-Sitzung mit curl_exec () aus.

Schritt 4 : Schließen Sie die von uns erstellte Curl-Sitzung.

Schritt 5 : Geben Sie die Rückgabezeichenfolge aus.

Machen Sie DEMO :

Sie müssen zwei PHP-Dateien erstellen und in einem Ordner ablegen, aus dem Ihr Webserver PHP-Dateien bereitstellen kann. In meinem Fall habe ich sie der Einfachheit halber in / var / www / abgelegt.

1. helloservice.php und 2. demo.php

helloservice.php ist sehr einfach und gibt im Wesentlichen nur alle Daten zurück, die es erhält:

<?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 Seite können Sie das Ergebnis sehen:

<?php 
   print_r($_POST);
   //content type: text/html; charset=UTF-8
   //http code: 200
   //Array ( [message] => Hello World [name] => Anand )
?>
Anand Pandey
quelle
Hallo, würden Sie mir bitte über die Seite 1 erzählen. Using-curl.php
Kaveh
@ Kaveh: Entschuldigung, ich habe die zweite Seite vergessen. Antwort aktualisiert. Jetzt bitte überprüfen.
Anand Pandey
12

Die cURL-Erweiterung für PHP ermöglicht es Ihnen, eine Vielzahl von Webressourcen in Ihrem PHP-Skript zu verwenden.

Naved Ahmed
quelle
10

cURL in PHP ist eine Brücke zur Verwendung der Befehlszeilen-cURL aus der PHP-Sprache

Jaime Hablutzel
quelle
7

cURL

  • Mit cURL können Sie eine URL aus Ihrem Code abrufen, um eine HTML-Antwort darauf zu erhalten.
  • Es wird für die Befehlszeilen-CURL aus der PHP-Sprache verwendet.
  • cURL ist eine Bibliothek, mit der Sie HTTP-Anforderungen in PHP stellen können.

PHP unterstützt libcurl, eine von Daniel Stenberg erstellte Bibliothek, mit der Sie eine Verbindung herstellen und mit vielen verschiedenen Servertypen mit vielen verschiedenen Protokolltypen kommunizieren können. libcurl unterstützt derzeit die Protokolle http, https, ftp, gopher, telnet, dict, file und ldap. libcurl unterstützt auch HTTPS-Zertifikate, HTTP-POST, HTTP-PUT, FTP-Upload (dies kann auch mit der FTP-Erweiterung von PHP erfolgen), HTTP-formularbasiertes Upload, Proxys, Cookies und Benutzer- und Kennwortauthentifizierung.

Sobald Sie PHP mit cURL-Unterstützung kompiliert haben, können Sie die cURL-Funktionen verwenden. Die Grundidee hinter den cURL-Funktionen besteht darin, dass Sie eine cURL-Sitzung mit curl_init () initialisieren, dann alle Optionen für die Übertragung über curl_setopt () festlegen, dann die Sitzung mit curl_exec () ausführen und dann Sie Beenden Sie Ihre Sitzung mit curl_close ().

Beispielcode

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

Weitere Informationen finden Sie unter -

Joomler
quelle
1

Curl ist nichts anderes als eine Erweiterung von PHP, die das Verhalten des normalen Curl-Befehls und der normalen Curl-Bibliothek erbt, die hauptsächlich für das Linux / Unix-Befehlszeilentool geschrieben wurden

Was ist Curl? cURL steht für Client URL. Die cURL wird verwendet, um Daten an eine beliebige URL zu senden. Weitere Informationen darüber, was Curl genau ist, finden Sie auf der CURL-Website

cURL in PHP Nun wird in PHP das gleiche Konzept eingeführt, um Daten über das andere Protokoll, z. B. HTTP oder FTP, an eine beliebige zugängliche URL zu senden. Weitere Informationen finden Sie im PHP Curl Tutorial

Ankur Kumar Singh
quelle
1

PHP-Curl-Funktion (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
quelle
0

PHP-Curl-Klasse (GET, POST, DATEIEN HOCHLADEN, SITZUNGEN, SENDEN 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;
            } 
        }
    }
?>

Beispiel:

<?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-Datei: 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());
?>
Freiberufler
quelle