Inicializar cURL en PHP

Ahora que ya tenemos una idea de lo que es cURL, vamos a ver como emplearlo desde PHP para leer o escribir datos desde nuestra aplicación en un servidor remoto al que podamos acceder por alguno de los protocolos que cURL emplea. Como hemos visto en el artículo anterior, son suficientes para cubrir casi cualquier necesidad que se nos pueda presentar. Y digo casi, porque siempre habrá algún repositorio de datos antiguo que use algún protocolo descatalogado, en alguna parte. Con eso no se puede luchar. Afortunadamente, no es el caso habitual. En desarrollo web se tiende, cada vez más, a usar estándares aprobados por el consorcio y aceptados por la comunidad (por suerte). INICIALIZAR UN RECURSO cURL Para poder usar la librería, debemos crear un recurso que haga uso de las prestaciones de PHP para la gestión de cURL. Un recurso es un manejador, como los que se emplean para lectura o escritura de ficheros, o para conexión con bases de datos, etc, sólo que orientado, específicamente, a la librería cURL. Para crear este recurso, y configurarlo adecuadamente para que funcione necesitamos contar con los siguientes datos: Protocolo. El protocolo por el que se establecerá la conexión con el …

Seguir leyendo

Enviando archivos por cURL

En el artículo anterior hemos hecho el trabajo “pesado” de configurar nuestra conexión cURL, salvo un par de detalles que dejamos, específicamente, para este artículo. Aquí vamos a ver como enviar archivos por cURL a un servidor remoto, de tipo FTPS, con protocolo FTP implícito sobre TLS (el caso más rebuscado de configurar). De este modo, seremos capaces de programar cualquier envío por cURL. ATENCIÓN. Recuerda que PHP te ofrece otros tipos de conexión para transferencia de archivos, como puedan ser ssh2_connect() o ftp_connect(), que no recurren a cURL. Sin embargo, en casos como el propuesto, donde usamos FTP implícito sobre TLS, ninguna de estas alternativas funciona, por lo que cURL es, en muchos casos, la única solución aceptable y, en última instancia, cURL siempre funciona, sea cual sea el protocolo, si está correctamente configurado. USANDO cURL PARA ENVÍO Ya casi tenemos todo listo para hacer el envío de un fichero a un servidor remoto por cURL. Empecemos viendo lo que ya tenemos declarado y explicado:

El siguiente paso es establecer la ruta del directorio del archivo remoto donde se depositará el contenido que enviemos por cURL. Este directorio deberá existir en el servidor remoto, ya que cURL no …

Seguir leyendo

cURL. Más modos de envío.

En el artículo anterior vimos como subir el contenido de un archivo, situado en la ubicación de nuestra aplicación, a un servidor remoto empleando cURL. En este artículo vamos a comprender como ocurre ese proceso, y comparar la forma de hacerlo con otro método, para el caso de aquellos archivos que, por su tamaño u otras circunstancias, no puedan ser enviados con tanta facilidad, y como solucionarlo mediante un flujo de datos. CREAR UN FLUJO DE DATOS Un flujo de datos, dentro del contexto de PHP, es una manera de canalizar el contenido de un fichero en un archivo temporal, empleando un protocolo nativo del propio lenguaje. Observa el siguiente código:

Observa que $stream es un manejador que crea un archivo, al que llamamos temp, bajo una envoltura específica del lenguaje, llamada php://. El lenguaje incorpora distintas envolturas para encapsular contenidos de acuerdo con el uso que se les quiera dar. La envoltura php:// está diseñada, específicamente, para su uso en flujos de datos, como se detalla en este enlace. El uso de php://temp crea un archivo temporal (que desaparece cuando se cierra el manejador). La alternativa sería, por ejemplo, usar php://memory. Sin embargo, en previsión de que el …

Seguir leyendo

Leer archivos por cURL

Ya sabemos como podemos enviar archivos vía cURL a un servidor remoto, que, conceptualmente, era la parte más compleja. En este artículo vamos a aprender como leer un archivo remoto y grabarlo en el servidor donde tenemos nuestra aplicación. Los cambios necesarios son mínimos, pero necesarios para poder llevar la lectura a buen puerto. PRECAUCIONES Para leer un archivo desde un servidor remoto y grabarlo en el servidor de nuestra aplicación, debemos tomar dos precauciones específicas: En primer lugar, la ubicación de nuestro servidor donde vayamos a grabar los contenidos que leamos del remoto debe tener permiso de escritura. Esto parece una obviedad, pero, a menudo, se tiende a olvidarlo. La opción CURLOPT_UPLOAD debe desactivarse (valor false). De lo contrario, se perderá el contenido del archivo en el servidor remoto, y se grabará un archivo vacío. Esto es importante porque esa pérdida del contenido afecta, directamente, al archivo del servidor remoto, y es irreversible. Por lo tanto, antes de iniciar la lectura, y después de inicializar el manejador de cURL, emplearemos el siguiente comando: curl_setopt($curl_handle, CURLOPT_UPLOAD, false); Con estos dos detalles en mente, no tendremos problemas en leer archivos remotos, y grabarlos en nuestro servidor, como se describe en este …

Seguir leyendo

Clase para usar cURL en PHP

En los artículos anteriores hemos aprendido a usar cURL con PHP. Por supuesto, hay una gran cantidad de opciones que no hemos tratado. Es lógico. Son tantas que, prácticamente, necesitaríamos un libro para analizarlas todas detalladamente. Sin embargo, con las que ya conocemos podemos sacarle mucho partido a cURL. Y, claro, ahora vamos a lo cómodo. Nos creamos una clase, que ya la tendremos y nos servirá para cualquier proyecto. Después, mostraremos un ejemplo de uso de esa clase, instanciándola en un objeto, para comunicar nuestra aplicación con un servidor remoto. LA CLASE Curl_Connect El código de la clase que podemos usar para enviar ficheros a un servidor remoto, o recibirlos del mismo, usando cURL es Curl_Connect.class.php, con el siguiente listado:

No vamos a entrar en muchos detalles aquí sobre el funcionamiento de cada método, porque todo lo que contienen se ha explicado en los artículos previos de esta serie, por lo que sería repetirnos. La clase se basa en un manejador de cURL (llamado $ch por curl handle). Emplea cuatro métodos: un constructor y un destructor que son de los llamados métodos mágicos de PHP (puedes leer más sobre métodos mágicos en este enlace). Como ya sabes, el …

Seguir leyendo

Editar formularios PDF con PHP (I)

A veces nos encontramos con con documentos PDF que contienen campos de formulario que deben ser cumplimentados por un usuario. Esto, por ejemplo, es muy habitual en documentos de las Administraciones públicas, aunque muchas corporaciones privadas también los emplean. En ocasiones debemos incluir estos formularios en nuestro sitio con algunos de esos campos precumplimentados, con valores estándar, para facilitarles la tarea a los usuarios. Aunque pueda parecer que un documento PDF es un formato cerrado, que es como te lo dan, y es poco lo que se puede hacer con él, con los recursos adecuados es fácil “trabajarlo” del modo que necesitemos.

Editar formularios PDF con PHP (II)

En el artículo anterior preparamos el escenario para poder editar, por programación, el contenido de campos de formulario en archivos PDF. En este artículo vamos a ver, ahora que ya tenemos preparado lo básico, conceptos fundamentales de la edición de campos en formularios PDF. Explicaremos cómo funciona la utilidad PDFTK para esta finalidad. En el próximo artículo veremos el funcionamiento del ejemplo práctico que vamos a usar, que podrás descargar para experimentar, y veremos como está estructurado, y como lleva a cabo el proceso deseado, hasta obtener el resultado buscado.

Editar formularios PDF con PHP (y III)

Ahora sí. Ya tenemos el conocimiento básico acerca de qué queremos hacer, qué herramientas vamos a usar, y cómo está constituido, internamente, un formulario PDF con campos editables. Ha llegado el momento de poner los dedos sobre el teclado, y empezar a programar. En este artículo vamos a ver como actúa todo el proceso PHP necesario.

Plugin jQuery para recorte de imágenes

El recorte online de imágenes está presente, cada vez, en mayor número de sitios web cuya finalidad es formar comunidades virtuales (redes sociales, páginas de contactos, etc). Consiste en que el usuario sube una fotografía (bien sea suya personal o de un paisaje, u otro contexto) y recorta, en la propia página, una parte de esa foto, que es la que realmente quiere compartir con el resto de la comunidad. Esta técnica empezaron implementándola sitios tan relevantes en Internet como son Facebook y Google, aunque hoy en día se ha extendido como la pólvora. Imagina que tu tienes una fotografía en la que apareces con varios amigos. La subes a un sitio social como foto principal tuya, pero no quieres que aparezcan todos tus amigos, porque te diluyes en la multitud. Con el ratón, seleccionas la parte en la que estás tú, y decides que sólo esa parte es tu foto principal. La página web hace el recorte y te deja lo que tú has elegido. En este artículo veremos cómo hacer esto.

Espacios de nombres en PHP (I). Introducción.

Todos hemos oído hablar alguna vez de los espacios de nombres, o namespaces (ns), en terminología anglosajona. Tal vez en otro contexto (cómo XML, por ejemplo). En PHP constituyen una valiosa herramienta de la que vamos a ocuparnos en estos artículos. En su definición más aceptada, son una forma de encapsular elementos (en el contexto de PHP, estamos hablando de constantes, funciones y clases). Esto nos facilita crear código reutilizable, permitiendo a otros desarrolladores implementar con facilidad nuestras librerías, evitando colisiones de nombres que pudieran surgir con sus propios elementos, y viceversa. Nosotros podemos implementar librerías de terceros, con la misma prerrogativa.