Enviar parametros post utilizando CURLOPT_POSTFIELDS
Curl es una poderosa herramienta que nos permite abrir una conexión a una diversa variedad de protocolos y que podemos utilizar en nuestros desarrollos. Para contextualizar un poco, Curl por ejemplo es lo que permite que desde alguna pagina puedas importar tus contactos de hotmail, o en tu blog publicar utilizar el lector RSS de alguna fuente de información externa. En esencia permite crear conexiones entre distintos sistemas operativos con distintos protocolos para conectar servicios.
Ahora bien, en esta entrada veremos como usar esta herramienta para enviar los parámetros de inicio de sesión a un formulario, luego ya podremos imaginar usos mucho más interesantes.
Cuando nos referimos a la librería cURL tenemos una muy buena documentación proveniente de la pagina de PHP (Librería Curl) así que si en algún momento te encuentras en apuros podemos recurrir a ella sin problemas.
Las conexión con cURL deben comenzar con curl_init, lo que como resultado nos entregará un manejador(handler) en caso de éxito o FALSE en caso de fallo. Este manejador será necesario para usar las demás funciones y estará disponible hasta que se llame a la función curl_close(). Por ejemplo:
1: $handler=curl_init("http://www.judavi.com");
2: $response=curl_exec($handler);
3: curl_close($handler);
4: echo $response;
Este código lo que hará es abrir una conexión con www.judavi.com y el navegador mostrará este contenido como propio.
Ahora bien, pasemos a algo más interesante y el verdadero centro de esta entrada, el paso de parámetros a un formulario. Por ejemplo si tuviéramos el siguiente formulario:
1: <html>
2: <body>
3: <form action="acceso_exitoso.php" method="post">
4: Nombre:<input name="user" type="text" />
5: Pass:<input name="password" type="text" />
6: <input name="ok" type="submit" value="ok" />
7: </form>
8: </body>
9: </html>

Nuestro formulario de prueba
Como podemos apreciar hay dos campos, un campo de nombre de usuario user y un campo de contraseña pass. Entonces lo que haremos es un script para enviar automáticamente esta información utilizando curlopt_PostFields. El código es el siguiente:
1: <?php
2: $url = "http://www.tusitioespecifico.com/formulario.php";
3:
4: $handler = curl_init();
5: curl_setopt($handler, CURLOPT_URL, $url);
6: curl_setopt($handler, CURLOPT_POST,true);
7: curl_setopt($handler, CURLOPT_POSTFIELDS, "user=VALOR&password=VALOR");
8:
9: $response = curl_exec ($handler);
10: curl_close($handler);
11:
12: ?>
Veamos línea a línea que está pasando.
En la línea 2. Estamos indicando cual será la URL donde mandaremos los datos, luego inicializamos la conexión, recordando el asunto del manejador.
Como ya hemos invocado la conexión procederemos a establecer las opciones de esta, esto lo hacemos con curl_setopt pasando como parámetros primero el manejador, luego la opción y luego el valor. Tambien es importante recordar que el resultado de curl_setopt es un boolean.
Lo que configuramos en la línea 5 es que la conexión que se abrirá será contra la URL que especificamos antes, luego indicaremos que pasaremos valores utilizando POST y finalmente cuales serán esos valores. En este punto vemos que los valores que se pasaran los pasamos como una cadena y los nombres corresponden a los nombres que tiene las textbox del formulario.
Finalmente ejecutamos el cURL, cerramos la conexión y Voila! Hemos creado un script PHP que cuando se ejecute mandará los valores a un formulario remoto. Claro está, en este punto te preguntarás que de interesante tiene mandar estos valores y ya. Bueno el ejemplo es limitado, pero aun así podría servir para el caso en que luego de realizar la autenticación el servidor enviara un correo electrónico con alguna información especifica que podría ir dentro de alguno de los campos, algo como una especie de sistema para notificar el uso de un aplicativo. Aunque eso nos puede dar para hablar de largo y seguramente lo hablaremos pronto, y es precisamente acerca de como podemos proteger o por lo menos tener una noción de quienes están utilizando un aplicativo desarrollado por nosotros.
Por lo pronto también sobre el ejemplo puedes seguir trabajando. ¿Que tal si antes de cerrar la conexión -similar a como hicimos en el primer ejemplo- respondes con el resultado arrojado por el servidor? En esencia los usos son bastos y se limitan a lo que te imagines que puedas hacer con esta herramienta. Por el momento espero que te haya sido de utilidad, nos leemos pronto.
Related posts:










