Archivo de la etiqueta: php

Como devolver una imagen al “SRC” de un IMG con PHP

GD-Graphics-LibraryEn algunas ocasiones se necesita personalizar algún fichero de imágenes en nuestra web dependiendo de cualquier cosa, cambiar la foto del usuario, cambiar un logotipo, etc.

Lo fácil es poner en el propio “src” de la etiqueta “IMG” el código de php que cargue el nombre de la imagen que queremos cargar.

Algo parecido a esto:

<img src="<?php echo $nombre_de_la_imagen; ?>" width="256" height="200" />

Pero esto si tenemos muchas imagen a procesar seria un poco engorroso, sobre todo a la hora de actualizar.

Para evitar tener que duplicar código hay varios métodos, el más común seria crearnos una función en nuestro fichero de funciones globales,  pero rebuscando por google encontré otra solución que me pareció a lo menos curiosa.

Y esta es hacer que el propio fichero de php nos devuelva la imagen, no la ruta al fichero que contiene la imagen, sino la propia imagen. Una cosa como esto.

<img src="http://www.todavianose.com/imagen.php?fichero=4c86b5285ef7ca3bab" width="256" height="256" alt="Texto alternativo" longdesc="Descripcion larga" />

Una de las funciones que nos permite esto, es crear nuestro propio sistema de captcha, o crear una imagen de algún texto que no queramos que los robots que pululan por la red lo puedan indexar.

Para hacer esto lo que tenemos que hacer lo primero, es indicar que los datos que vamos ha devolver desde el fichero de php son una imagen, esto en php se hace con las siguientes funciones.

header("Content-type: tipo de mime");

Donde “tipo de mime” le indica el formato en el que le vamos ha enviar los datos, para imágenes lo tenemos que cambiar por:

  • image/jpeg: le indicamos que los datos que va ha recibir están en formato de iamgen jpeg.
  • image/png: los datos que le vamos ha enviar están en formato png.
  • image/gif: lo mismos pero en formato gif.

No solo podemos indicarle que lo que vamos ha enviar es una imagen, también podemos decirle que es otro tipo de archivo como por ejemplo un fichero pdf (application/pdf), un fichero de audio en formato mp3 (audio/x-mpeg-3), en esta pagina hay una lista con todos los tipo de mimes que podemos utilizar.

Y ya podemos enviar al “scr” el fichero de la imagen con el siguiente comando de php

readfile("ruta-al-archivo");

Utilizando la libreria GD, podemos crear nuestras propias imágenes, si quieres saber algo mas sobre estas funciones solo tienes que ver los comandos que hay disponibles.

Un ejemplo completo quedaría de la siguiente forma.

<?php
// Cargamos la imagen a mostrar
$archivo='usuario.png';
header("Content-type: image/png");
header("Content-length: ".filesize($archivo));
header("Content-Disposition: inline; filename=$archivo");
readfile($archivo);
// Fin crear imagen
?>

Y con esto estaría, si tienes alguna duda o sugerencia puedes dejar un comentario.

Instalar servidor web Lighttpd en Debian

[singlepic id=26 w=320 h=240 float=right]

Lighttpd es un servidor web donde la característica principal de este, es su menor uso de cpu y memoria, lo que le hace perfecto para entornos donde, necesitamos una gran velocidad de proceso o donde las características del servidor no son muy buenas. En mi caso quería un software que corriera con relativamente fluido en un mini ordenador que tengo, la mejor opción que encontré fue esta.

Para instalar este servidor bajo una distribución Debian, podemos hacerlo mediante los típicos repositorios.

sudo apt-get install lighttpd

Con esto ya tenemos instalado nuestro servidor Lighttpd, para probar que la instalación ha sido correcta solo tenemos que abrir un navegador e introducir:

http://localhost

o

http://127.0.0.1

Pero solo con esto no haremos mucho, por lo que ahora pasaremos a instalar Mysql y Php5 para darle mas potencia al sistema.

Para instalar Mysql, tendremos que escribir el siguiente comando

sudo apt-get install mysql-server mysql-client

En la instalación de MySql nos va ha pedir la contraseña que queremos darle al usuario “root” de MySql, no confuncir con el “root” del sistema, no son el mismo usuario, por lo que deberemos de darle una contraseña distinta, para no tener problemas que sabiendo una nos puedan acceder a la otra cuenta.

Y ahora solo nos queda instalar Php5 con el siguiente comando

sudo apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

Para hacer funcionar el php en una versión básica no hace falta instalar todos estos módulos, pero si son recomendables para que despues no nos surja algún fallo provocado por la falta de alguno de ellos.

Una vez instalados php y mysql solo nos queda probrar que la instacion ha sido correcta. Creamos un fichero dentro de la carpeta de servidor web

vi /var/www/info.php

He insertamos la siguiente linea

 <?php 
    phpinfo(); 
?>

Grabamos el fichero y cerramos el editor. Abrimos el fichero que hemos creado en un navegador

http://localhost/info.php

Y si nos aparece una pagina como esta, la instalación a sido correcta.

[singlepic id=25 w=320 h=240 float=center]

Si no funcionara podemos seguir los siguientes pasos. Editamos el fichero de configuración de php.

sudo vi /etc/php5/cgi/php.ini

Y añadimos las siguiente linea

cgi.fix_pathinfo = 1

Grabamos el fichero y salimos del editor. Ahora solo nos queda modificar el fichero de configuración del Lighttp

sudo vi /etc/lighttpd/lighttpd.conf

Buscamos la opción “server.modules” y añadimos “mod_fastcgi”,  (comillas y coma del final incluido. Nos tendra que quedar de la siguiente forma mas o menos

server.modules = (       
	"mod_access",     
	"mod_alias",       
	"mod_compress",       
	"mod_fastcgi",       
	"mod_redirect",
#      "mod_rewrite"
)

Vamos al final del fichero y añadimos las siguientes lineas.

fastcgi.server = ( ".php" => ((
    "bin-path" => "/usr/bin/php5-cgi",
    "socket" => "/tmp/php.socket",
    "max-procs" => 1,
    "bin-environment" => (
            "PHP_FCGI_CHILDREN" => "4",
            "PHP_FCGI_MAX_REQUESTS" => "1000"
        ),
    ))
)

Grabamos el fichero y salimos. Solo nos queda reiniciar el servidor de Lighttp

service lighttpd restart

Si todo ha salido bien y el fichero de configuración no tiene ningún error nos mostrar algo parecido a esto

[ ok ] Stopping web server: lighttpd.
[ ok ] Starting web server: lighttpd.

Si al reiniciar el servidor nos muestra algún error, leer el mensaje y solucionar el problema que nos indique.

Y con esto ya tenemos nuestro servidor web Lighttp instalado.