Qué es cURL en PHP?


En PHP, veo la palabra cURL en muchos proyectos PHP. ¿Qué es eso? ¿Cómo funciona?

Enlace de referencia: ( ¿Qué es cURL en PHP?)

 192
Author: Community, 2010-06-17

9 answers

CURL es una biblioteca que permite realizar peticiones HTTP en PHP. Todo lo que necesita saber sobre él (y la mayoría de las otras extensiones) se puede encontrar en el manual de PHP .

Para usar las funciones cURL de PHP es necesario instalar el " libcurl paquete. PHP requiere que utilices 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 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 requiere que allow_url_fopen esté habilitado en su archivo php.ini.

// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');
 212
Author: Johannes Gorset,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-13 06:25:08

CURL es una forma en la que puedes acceder a una URL de tu código para obtener una respuesta html de ella. cURL significa URL de cliente que le permite conectarse con otras URL y usar sus respuestas en su código.

 140
Author: sushil bharwani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-22 15:47:58

CURL en PHP:

Resumen:

El comando curl_exec en PHP es un puente para usar curl desde la consola. curl_exec hace que sea fácil y rápido OBTENER / PUBLICAR solicitudes, recibir respuestas de otros servidores como JSON y descargar archivos.

Advertencia, Peligro:

curl es 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 y inyecte un rm -rf / en su respuesta, y luego ¿por qué me dejan en una consola y ls -l ya ni siquiera funciona? Porque subestimaste el peligroso poder de Curl. No confíe en nada que regrese de curl para estar seguro, incluso si está hablando con sus propios servidores. Podrías estar retirando malware para liberar a los tontos de su riqueza.

Ejemplos:

Estos se hicieron en Ubuntu 12.10

  1. Rizo básico de 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
    

    Glorious cats evolving Toxoplasma gondii to cause women to keep cats around and men likewise to keep the women around.

  2. CURL ejemplo get request to hit google.com, echo a la línea de comandos:

    Esto se hace a través de la terminal phpsh:

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

    Que imprime y vuelca un lío de html condensado y javascript (de Google) a la consola.

  3. CURL ejemplo poner el texto de respuesta en una variable:

    Esto se hace a través de la 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 curl desde dentro de un archivo PHP:

    Ponga 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
    

    Usted corrió myphp.php y ejecutó esos comandos a través del intérprete php y arrojó un montón de html y javascript desordenados a screen.

    Puede hacer solicitudes GET y POST con curl, todo lo que hace es especificar los parámetros definidos aquí: http://curl.haxx.se/docs/httpscripting.html#POST

Recordatorio del peligro:

Tenga cuidado volcando la salida de rizo alrededor, 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 Alabama 900 de una compañía de pisos de un solo hombre de Alabama que es una fachada para una red de delitos de fraude de tarjetas de crédito en el extranjero.

 56
Author: Eric Leschinski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-08 23:11:30

CURL es una forma en la que puedes acceder a una URL de tu código para obtener una respuesta HTML de ella. Se utiliza para la línea de comandos 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: Inicializa una sesión curl usando curl_init().

Paso 2: Establecer la opción para CURLOPT_URL. Este valor es la URL a la que estamos enviando la solicitud. Añada un término de búsqueda curl utilizando 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, false le dirá a curl que ignore el encabezado en el valor devuelto.

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

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

Paso 5: Muestra 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 lo siguiente tutorial:

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

 18
Author: Neha Sinha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-12 06:37:32

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

 12
Author: Naved Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-21 05:27:18

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

  1. Curl : Una herramienta de línea de comandos para obtener o enviar archivos usando 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 soporta actualmente los protocolos http, https, ftp, gopher, telnet, dict, file y ldap. libcurl también soporta 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:

Step1 : Inicializa una sesión curl usando curl_init().

Step2 : Establecer la opción para CURLOPT_URL. Este valor es la URL que somos enviando la solicitud a.Añada un término de búsqueda "curl" usando el parámetro " q=".Establecer la opción CURLOPT_RETURNTRANSFER, true le dirá a curl que devuelva la cadena en lugar de imprimirla. Set option for CURLOPT_HEADER, false le dirá a curl que ignore el encabezado en el valor devuelto.

Step3 : Ejecuta la sesión curl usando curl_exec().

Step4 : Cierra la sesión curl que hemos creado.

Step5 : Muestra la cadena de retorno.

Hacer DEMO :

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

1. helloservice.php y 2. demo.php

Helloservice.php es muy simple y esencialmente se hace eco de todos 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, se puede ver el resultado:

<?php 
   print_r($_POST);
   //content type: text/html; charset=UTF-8
   //http code: 200
   //Array ( [message] => Hello World [name] => Anand )
?>
 11
Author: Anand Pandey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-29 11:12:45

CURL en PHP es un puente para usar cURL de línea de comandos del lenguaje php

 10
Author: Jaime Hablutzel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-02 03:17:30

RIZO

  • cURL es una forma en la que puedes acceder a una URL de tu código para obtener una respuesta HTML de ella.
  • Se utiliza para la línea de comandos cURL desde el lenguaje PHP.
  • cURL es una biblioteca que permite realizar peticiones HTTP en PHP.

PHP soporta 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 soporta http, https, ftp, gopher, protocolos 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 cURL es que inicializa una sesión cURL usando el curl_init (), luego puede establecer todas sus opciones para la transferencia a través de curl_setopt (), luego puedes ejecutar la sesión con curl_exec () y luego terminar tu 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 -

 6
Author: Joomler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-30 06:40:06

Curl no es más que una extensión de PHP que hereda comportamientos del comando y biblioteca curl normal escrito principalmente para Linux/Unix command line tool

Qué es Curl? 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 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 del protocolo diferente, por ejemplo, HTTP o FTP. Para más detalles, puede consultar PHP Curl Tutorial

 1
Author: Ankur Kumar Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-21 20:18:49