Bilbao promueve la designación de Aste Nagusia como Patrimonio Cultural

Junio 24, 2009

Los bilbainos tenemos la oportunidad de contribuir en hacer de nuestras fiestas, la Aste Nagusia, parte del Patrimonio Cultural. ¿De donde?. No lo se …

Para votar, aquí os dejo el enlace al formulario:
http://www.bideo.info/an/envia_form_php.php


Replace fopen library for cURL in html2fpdf

Junio 4, 2009

[ir a la versión en castellano]
I received several queries regarding the problem of creating a PDF with images in some servers where the value of the “allow_url_fopen” is set Off in php.ini configuration file.

The classes html2fpdf uses fopen to open the images in the html source that we use to create the PDF and in the cases just commenting will not work correctly. Ie, the images will not appear in the PDF we generate.

The solution is to replace the fopen function for the functions that cURL offers us a platform library that enables the transfer of files from the client side through multiple protocols.

As an example we show a slice of the modified code:

if ( ‘allow_url_fopen’ == ‘Off’)
(
$ f = fopen ($ file, ‘rb’);
else ()
Open with //—– Curl
$ curl_handler = curl_init ();
curl_setopt ($ curl_handler, CURLOPT_URL, $ file);
curl_setopt ($ curl_handler, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ curl_handler, CURLOPT_BINARYTRANSFER, 1);
$ f = curl_exec ($ curl_handler);
curl_close ($ curl_handler);
)

I uploaded the files fpdf and html2fpdf, to replace the originals with necessary modifications. You can download it here.

I hope you are helpful.


Sustituir fopen por la libreria cURL en html2fpdf

Junio 4, 2009

[go to the english version]

He recibido varias consultas en relación al problema de crear un PDF con imágenes en ciertos servidores en los que el valor de la directiva “allow_url_fopen” está en Off en el archivo de configuración php.ini.

La clases html2fpdf hace uso de fopen para abrir las imágenes contenidas en el html que usamos de fuente para crear el PDF y en los casos que acabamos de comentar no funcionará correctamente. Es decir, las imágenes no se mostrarán en los PDF que generemos.

La solución está en sustituir la funcion fopen por las funciones que nos ofrece cURL, una libreria multiplataforma que permite la transferencia de archivos desde el lado del cliente a través de múltiples protocolos.

A modo de ejemplo os muestro un trozo del código modificado:

if (’allow_url_fopen’ == ‘Off’)
{
$f=fopen($file,’rb’);
}else{
//—————Open with CUrl
$curl_handler = curl_init();
curl_setopt($curl_handler, CURLOPT_URL, $file);
curl_setopt($curl_handler, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handler, CURLOPT_BINARYTRANSFER, 1);
$f = curl_exec($curl_handler);
curl_close($curl_handler);
}

He subido los archivos fpdf y html2fpdf, para que los sustituyais por los originales, con las modificaciones necesarias. Podéis descargarlos aquí.

Espero que os sean de ayuda.


Reta a Akinator, el genio de la web

Mayo 29, 2009

El pasado sábado un amiguete me comentó sobre la existencia de akinator; página en la que se adivinan todo tipo de personajes a partir de las respuestas que el usuario da a las preguntas que le va lanzando el sistema.

Para los interesados en programación y gestión de datos me parece todo un ejemplo de como realimentar una base de datos con nueva información relevante y de como realizar de manera eficiente consultas a la misma. Ya me gustaría echarle un vistazo …

De momento me conformaré con seguir retando al genio de la web.

Probadlo y pasad un rato divertido !!

www.akinator.com


Utilización de cURL en lugar de allow_url_fopen

Mayo 29, 2009

Puede darse el caso de que, por motivos de seguridad, el servidor en el que vayamos a alojar nuestras aplicaciones PHP tenga deshabilitada la directiva allow_url_fopen en la configuración PHP.

La directiva allow_url_fopen permite, cuando su valor está en “On”, pasar urls (http, ftp) a la función fopen(), en lugar de la ubicacion física del archivo. Por motivos de seguridad, esta directiva puede (y seguramente debe) estar deshabilitada.

En un primer intento de resolver el asunto sin tener que editar el php.ini se nos puede ocurrir utilizar la función ini_set() para cambiar a On el valor de allow_url_fopen durante la ejecución del Script. Teóricamente podríamos hacerlo de cualquiera de estas dos formas:

ini_set(allow_url_fopen, ‘On’);
ini_set(allow_url_fopen, ‘1′);

Sin embargo, en la práctica, esta directiva no puede ser cambiada de este modo debido a que a partir de la versión 4.3.4 de PHP, este valor de configuración solo se puede especificar a nivel global en los archivos de configuración php.ini ó httpd.conf

Pero no nos demos por vencidos porque, desde su versión 4.0.2, PHP soporta Libcurl, una biblioteca creada por Daniel Stenberg, que permite conectar y comunicar a diferentes tipos de servidores con diferentes tipos de protocolos ( http, https, ftp, gopher, telnet, dict, archivo y protocolos LDAP). Podremos, por ejemplo, obtener el contenido de una web, extraer datos XML o transferir archivos de servidores FTP.

Una vez nos hayamos asegurado de que el PHP de nuestro servidor está compilado con soporte cURL podremos empezar a utilizar las funciones de la librería libcurl para PHP.

Aquí os dejo un ejemplo en el que utilizo cURL para acceder al xml que la API de youtube nos ofrece, en este caso, al solicitar el listado de videos de determinado usuario.


<?php
$feedURL = "http://gdata.youtube.com/feeds/api/users/tu_usuario/uploads";

//Iniciamos la variable $returnStr, donde almacenaremos el String devuelto por la funcion curl_exec();
$returnStr = "";

//inicializa una nueva sesión y devuelve un recurso CURL para ser usado con las funciones curl_setopt(), curl_exec(), y curl_close()
$curl = curl_init();

//La URL que se quiere obtener. También se puede establecer su valor al inicializar una sesión con la función curl_init().
curl_setopt($curl, CURLOPT_URL, $feedURL);

//TRUE para devolver el resultado como una cadena de texto que contiene el valor devuelto por la función curl_exec(), en vez de mostrar la salida directamente en la ventana del navegador.
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

//FALSE para que el encabezado no se incluya en la salida.
curl_setopt($curl, CURLOPT_HEADER, false);

//Esta función debe ser llamada después de inicializar una sesión CURL y fijar todas las opciones para la misma. Su propósito es simplemente el de ejecutar la sesión CURL indicada por el parámetro ch .
$returnStr = curl_exec($curl);

//Cerramos la sesión CURL
curl_close($curl);
?>

Glosario:
curl. Herramienta de linea de comandos para la transferencia de archivos.
libcurl. Libreria multiplataforma que permite la transferencia de archivos desde el lado del cliente y a través de múltiples protocolos.


Prueba tu servidor Ftp

Mayo 20, 2009

Os dejo esta interesante página desde la que podréis probar vuestros servidores Ftp desde un sitio remoto.

Muy practico para comprobar los típicos problemas con los firewalls.

Esta utilidad realiza una conexión a tu servidor Ftp e intenta listar los directorios en modo pasivo.

www.g6ftpserver.com/en/ftptest