¿Qué es cURL en PHP?

Respuestas:

245

cURL es una biblioteca que le permite realizar solicitudes HTTP en PHP. Todo lo que necesita saber al respecto (y la mayoría de las otras extensiones) se puede encontrar en el manual de PHP .

Para utilizar las funciones cURL de PHP, debe instalar el paquete »libcurl. PHP requiere que use libcurl 7.0.2-beta o superior. En PHP 4.2.3, necesitará libcurl versión 7.9.0 o superior. Desde PHP 4.3.0, necesitará una versión de libcurl que sea 7.9.8 o superior. PHP 5.0.0 requiere una versión de libcurl 7.10.5 o superior.

También puede realizar solicitudes HTTP sin cURL, aunque es necesario allow_url_fopenque esté habilitado en su php.iniarchivo.

// 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
fuente
1
@Johannes, ¿son posibles las solicitudes de publicación HTTP sin cURL?
Pacerier
2
significa que si en el servidor 'allow_url_fopen' no está habilitado, entonces no podríamos usar la función file_get_contents (), pero en ese caso podemos usar la función curl para el mismo propósito. ¿Estoy en lo correcto?
ARUN
3
@Arun Sí, si 'allow_url_fopen' no está habilitado, puede usar curl para la misma tarea en lugar de file_get_contents () func. Curl le permite configurar más opciones, como datos POST, cookies, etc., que file_get_contents () no proporciona.
Dinesh Nagar
157

cURL es una forma en que puede presionar una URL de su código para obtener una respuesta html. cURL significa URL del cliente que le permite conectarse con otras URL y usar sus respuestas en su código.

sushil bharwani
fuente
3
en Javascript es lo mismo que haces ajax en tu código. Las diferentes cosas con PHP las haces sincrónicamente, mientras que en Javascript las haces sincrónicamente.
Faris Rayhan
68

CURL en PHP:

Resumen:

El curl_execcomando en PHP es un puente para usar curldesde la consola. curl_exec hace que sea fácil y rápido hacer solicitudes GET / POST, recibir respuestas de otros servidores como JSON y descargar archivos.

Advertencia, peligro:

curles malvado y peligroso si se usa incorrectamente porque se trata de obtener datos de Internet. Alguien puede interponerse entre su curl y el otro servidor e inyectar un rm -rf /en su respuesta, y luego ¿por qué me dejo caer en una consola y ls -lya ni siquiera funciona? Porque has subestimado mal el peligroso poder del rizo. No confíes en que todo lo que regresa de curl sea seguro, incluso si estás hablando con tus propios servidores. Podría estar retirando el malware para liberar a los tontos de su riqueza.

Ejemplos:

Estos se hicieron en Ubuntu 12.10

  1. Curl básico desde la línea de comandos:

    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

    Entonces puedes abrir tu gif en firefox:

    firefox mycat.gif

    Gatos gloriosos que evolucionan Toxoplasma gondii para hacer que las mujeres mantengan a los gatos cerca y que los hombres también mantengan a las mujeres alrededor.

  2. Ejemplo de cURL obtener solicitud para golpear google.com, eco a la línea de comandos:

    Esto se hace a través del terminal phpsh:

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

    Lo que imprime y arroja un desorden de html y javascript condensado (de google) a la consola.

  3. El ejemplo de cURL coloca el texto de respuesta en una variable:

    Esto se hace a través del 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;

    La variable ahora contiene el binario que es un gif animado de un gato, las posibilidades son infinitas.

  4. Haga un rizo desde un archivo PHP:

    Pon este código en un archivo llamado 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;
      }
    ?>

    Luego ejecútelo a través de la línea de comandos:

    php < myphp.php

    Ejecutó myphp.php y ejecutó esos comandos a través del intérprete php y descargó un montón de desordenado html y javascript en la pantalla.

    Puede hacer GETy POSTsolicitar con curl, todo lo que debe hacer es especificar los parámetros tal como se definen aquí: Usar curl para automatizar trabajos HTTP

Recordatorio de peligro:

Tenga cuidado al deshacerse de la producción de rizos, si alguno de ellos se interpreta y ejecuta, su caja es propiedad y la información de su tarjeta de crédito se venderá a terceros y obtendrá un misterioso cargo de $ 900 de una compañía de pisos unipersonal de Alabama que es un frente a fraude de tarjetas de crédito en el extranjero.

Eric Leschinski
fuente
2
¿Puede proporcionar un enlace que respalde el "peligro" que menciona aquí?
floatingLomas
1
@floatingLomas Lo que Eric intenta explicar es un problema que está presente con todo el contenido proporcionado por el usuario: no puede confiar en nadie. Al igual que con el contenido proporcionado por el usuario, es posible explotar cURL usando un MITM simple para inyectar código malicioso en su aplicación. Por supuesto, esto es solo un problema si se "interpreta y ejecuta" como Eric dijo correctamente. Solo busque la evaluación es mala y encontrará muchos posibles riesgos de seguridad (por ejemplo, stackoverflow.com/questions/951373/when-is-eval-evil-in-php )
Fabio Poloni
77
@floatingLomas ... también, Eric parece tener paranoia sobre las compañías de pisos individuales de Alabama que le cobran $ 900.
Fabio Poloni
¿Hay alguna alternativa además del iframe?
Jennifer Michelle
1
No es paranoia si realmente quieren venderle pisos.
piersb
24

cURL es una forma en que puede presionar una URL de su código para obtener una respuesta HTML de él. Se utiliza para la línea de comando cURL desde el lenguaje 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;
?> 

Paso 1: Inicialice una sesión de curl usando curl_init().

Paso 2: establece la opción para CURLOPT_URL. Este valor es la URL a la que enviamos la solicitud. Agregue un término de búsqueda curlusando el parámetro q=. Establecer opción para CURLOPT_RETURNTRANSFER. True le dirá a curl que devuelva la cadena en lugar de imprimirla. Establezca la opción para CURLOPT_HEADER, falso le dirá a curl que ignore el encabezado en el valor de retorno.

Paso 3: Ejecute la sesión de curl usando curl_exec().

Paso 4: cierre la sesión de curl que hemos creado.

Paso 5: genera la cadena de retorno.

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

Esto también se usa para la autenticación. También podemos establecer el nombre de usuario y la contraseña para la autenticación.

Para obtener más funcionalidad, consulte el manual del usuario o el siguiente tutorial:

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

Neha Sinha
fuente
16

Primero, comprendamos los conceptos de curl, libcurl y PHP / cURL.

  1. curl : una herramienta de línea de comandos para obtener o enviar archivos mediante la sintaxis de URL.

  2. libcurl : una biblioteca creada por Daniel Stenberg, que le permite conectarse y comunicarse con muchos tipos diferentes de servidores con muchos tipos diferentes de protocolos. libcurl actualmente admite los protocolos http, https, ftp, gopher, telnet, dict, file y ldap. libcurl también admite certificados HTTPS, HTTP POST, HTTP PUT, carga FTP (esto también se puede hacer con la extensión ftp de PHP), carga basada en formularios HTTP, proxies, cookies y autenticación de usuario + contraseña.

  3. PHP / cURL : el módulo para PHP que hace posible que los programas PHP usen libcurl.

Cómo usarlo:

Paso 1 : Inicialice una sesión de curl use curl_init ().

Paso 2 : establece la opción para CURLOPT_URL. Este valor es la URL a la que enviamos la solicitud. Agregue un término de búsqueda "curl" utilizando el parámetro "q =". Establezca la opción CURLOPT_RETURNTRANSFER, true le indicará a curl que devuelva la cadena en lugar de imprimirla. Establezca la opción para CURLOPT_HEADER, false le dirá a curl que ignore el encabezado en el valor de retorno.

Paso 3 : Ejecute la sesión curl usando curl_exec ().

Paso 4 : cierre la sesión de curl que hemos creado.

Paso 5 : genera la cadena de retorno.

Hacer DEMO :

Deberá crear dos archivos PHP y colocarlos en una carpeta desde la que su servidor web pueda servir archivos PHP. En mi caso los puse en / var / www / por simplicidad.

1. helloservice.php y 2. demo.php

helloservice.php es muy simple y esencialmente solo hace eco de los datos que obtiene:

<?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 página, puedes ver el resultado:

<?php 
   print_r($_POST);
   //content type: text/html; charset=UTF-8
   //http code: 200
   //Array ( [message] => Hello World [name] => Anand )
?>
Anand Pandey
fuente
Hola, ¿podría contarme sobre la página 1. using-curl.php
Kaveh
@Kaveh: lo siento, olvidé la segunda página. Respuesta actualizada Ahora por favor verifique.
Anand Pandey
12

La extensión cURL para PHP está diseñada para permitirle usar una variedad de recursos web desde su script PHP.

Ahmed Naved
fuente
10

cURL en PHP es un puente para usar la línea de comando cURL desde el lenguaje php

Jaime Hablutzel
fuente
7

rizo

  • cURL es una forma en que puede presionar una URL de su código para obtener una respuesta HTML de él.
  • Se utiliza para la línea de comando cURL desde el lenguaje PHP.
  • cURL es una biblioteca que le permite realizar solicitudes HTTP en PHP.

PHP admite libcurl, una biblioteca creada por Daniel Stenberg, que le permite conectarse y comunicarse con muchos tipos diferentes de servidores con muchos tipos diferentes de protocolos. libcurl actualmente admite los protocolos http, https, ftp, gopher, telnet, dict, file y ldap. libcurl también admite certificados HTTPS, HTTP POST, HTTP PUT, carga FTP (esto también se puede hacer con la extensión ftp de PHP), carga basada en formularios HTTP, proxies, cookies y autenticación de usuario + contraseña.

Una vez que haya compilado PHP con soporte cURL, puede comenzar a usar las funciones cURL. La idea básica detrás de las funciones de cURL es que inicialice una sesión de cURL usando curl_init (), luego puede configurar todas sus opciones para la transferencia a través de curl_setopt (), luego puede ejecutar la sesión con curl_exec () y luego termine su sesión usando curl_close ().

Código de muestra

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

Para obtener más información, consulte -

Joomler
fuente
1

Curl no es más que una extensión de PHP que hereda los comportamientos del comando curl normal y la biblioteca escritos principalmente para la herramienta de línea de comandos Linux / Unix

¿Qué es el rizo? cURL significa URL del cliente. El cURL se utiliza para enviar datos a cualquier URL. Para obtener más detalles sobre qué es exactamente curl, puede visitar el sitio web de CURL

cURL en PHP Ahora se introduce el mismo concepto en PHP, para enviar datos a cualquier URL accesible a través de diferentes protocolos, por ejemplo, HTTP o FTP. Para obtener más detalles, puede consultar el Tutorial de PHP Curl

Ankur Kumar Singh
fuente
1

Función 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
fuente
0

Clase de curl php (OBTENER, POSTAR, ARCHIVOS CARGADOS, SESIONES, ENVIAR 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;
            } 
        }
    }
?>

Ejemplo:

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

Archivo 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());
?>
Persona de libre dedicación
fuente