Usando cURL en PHP

Tomando en cuenta algunos casos durante el desarrollo con php, he tomado en cuenta para este post el uso de cURL, definida:

"cURL: una librería creada por Daniel Stenberg que permite conectar y comunicarse con muchos diferentes tipos de servidores y muchos diferentes tipos de protocolos. Actualmente libcurl soporta los protocolos http, https, ftp, gopher, telnet, dict, file y ldap. libcurl también soporta certificados HTTPS, HTTP, POST, HTTP PUT, subida de ficheros usando FTP (también se puede hacer con la extensión FTP de PHP), formularios HTTP, proxies, cookies, y autenticaciones usuario+contraseña." (php.net)

Instalación:

GNU/Linux:

- Ejecutar "sudo apt-get install php5-curl", previamente tener instalado un servidor web y php.

Windows:

- Descargar XAMPP, instalar, editar xampp\apache\bin\php.ini descomentando ";extension=php_curl.dll"

Pueden investigar más sobre el tema, pero mostraré como hacer uso de un script externo que muestra un "echo" al final y ese será lo que retorne la ejecución de cURL; además es usado por ejemplo en webservices, o un caso preciso contar con los asientos disponibles de un concierto, bus, o stock de productos en un ecommerce, haciendo cURL a una url y que ésta devuelva un mensaje, array, etc, etc.

El código es sencillo, así que revísenlo.

curl.php

<?php

$nombre = $_GET['nombre'];
$apellidos = $_GET['apellidos'];
$edad = $_GET['edad'];

if($edad>=18):
    echo utf8_decode("Bienvenido ".$nombre." ".$apellidos);
else:
    echo utf8_decode($nombre." ".$apellidos." aún no eres mayor de edad, lo sentimos.");
endif;

?>

callcurl.php

<?php

if(isset($_POST['submit'])):

    //$nombre = 'Lyan';
    //$apellidos = "TYR";
    //$edad = 0.2;

   
    /*
     *Datos recibidos del formulario
     */
    $nombre = $_POST['nombre'];
    $apellidos = $_POST['apellidos'];
    $edad = $_POST['edad'];

    $url_curl = "http://<ruta>/curl.php?nombre=$nombre&apellidos=$apellidos&edad=$edad"; //url a llamar
    $curl=  curl_init($url_curl);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30);
    curl_setopt($curl,CURLOPT_TIMEOUT,30);
    $msgretorno = curl_exec($curl);

    echo $msgretorno;//retorno de respuesta de curl.php

    curl_close($curl);

    exit;

endif;

?>
<div>
    <form style="width: 225px;" method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
        <fieldset>
            <legend>Example Curl</legend>
            <p>
            <label for="nombre">Nombre: </label>
            <input type="text" name="nombre"/>
            </p>
            <p>
            <label for="apellidos">Apellidos: </label>
            <input type="text" name="apellidos"/>
            </p>
            <p>
            <label for="edad">Edad: </label>
            <input type="text" name="edad"/>
            </p>
            <input type="submit" name="submit" value="Enviar"/>
        </fieldset>
    </form>
</div>

como ven curl.php vendría a tener la lógica en sí, mientras que callcurl.php hace un llamado a la URL (curl.php) utilizando cURL y mostrando al final el echo.

Saludos.

Keyner.

Entradas similares