sábado, 19 de marzo de 2011

Formulario para subir imágenes con PHP

De la mano de PC Cuadernos y sus excelentes publicaciones, y gracias a la corrección de @Triby, colaborador en Foros del Web, viene el código que presento a continuación. Se trata de un formulario para subir archivos en formatos JPEG, PNG y GIF. No es nada complicado; de hecho, el formulario es bastante sencillo, y el código PHP analiza precisamente lo necesario para cargar la imagen y mostrarla.

Tanto el formulario como el código PHP se encuetran en el mismo documento. A continuación podrán ver y analizar el código, y luego trataré de explicar claramente su funcionamiento:

Código del documento


Funcionamiento del código
Al cargar el archivo con method="post", se genera el array $_FILES[], el cual almacena todos las propiedades del archivo, como su nombre, tamaño, tipo, nombre temporal, etc. Lo que hace PHP (línea 15) es verificar si existe un elemento de la array con la clave ['archivo'], y con ['size'] > 0 compruebo que el tamaño del archivo sea mayor que "0", asegurándome que realmente se haya cargado un archivo.

Si las comprobaciones anteriores han resultado exitosas, almaceno en $variables las propiedades del archivo (líneas 18-20).

¿Por qué crear una variable vacía (línea 16)? El trabajo de la variable $mostrar será almacenar la imagen una vez se haya cargado correctamente (líneas 26). Así, cuando esto suceda, mostraremos al usuario la imagen que ha cargado recientemente (líneas 38 y 39), sin necesidad de abrir el directorio donde se guarda el archivo.

Determino, además, un tamaño máximo para las imágenes (línea 17), de modo que no sobrepasen los 3 megabytes (300000 bytes).

Con la función GetImageSize() extraigo información del archivo cargado, como el tipo y el tamaño del mismo. Esta función devuelve la información en forma de array, la cual almaceno en la variable $tipoArchivo. El tercer elemento de este array, $tipoArchivo[2] (el índice de los array comienzan por el número 0), tiene que ver con el tipo de archivo de imagen: 1 corresponde al tipo GIF; 2 al tipo JPG; 3 al tipo PNG, y 4 al tipo SWF. En el código compruebo si el archivo cargado es un GIF, JPG o PNG (línea 22).

Tras comprobar que el tamaño del archivo no exceda el permitido (línea 23), trasladamos el archivo cargado a otra ubicación con la función move_uploaded_file() (línea 24). El primer argumento de la función es el nombre temporal del archivo, el segundo es la ruta de acceso que habíamos definido anteriormente (línea 14), además del nombre que tendrá el archivo en su ubicación final.

Si la función tiene éxito, presentamos un par de datos sobre el archivo cargado (línea 25), y almacenamos la ruta y el nombre del archivo en la variable $mostrar que habíamos inicializado sin contenido anteriormente. Esta variable mostrará en el navegador el archivo que se ha cargado (líneas 38 y 39).

Al hacer click en el botón
del segundo formulario (línea 36), desaparecerá el mensaje de confirmación y la imagen de la pantalla, quedando listo para subir otro archivo.

Como pueden apreciar, el formulario y el código es bien sencillo, pero completo a la vez, aunque es posible recurrir a mayores comprobaciones para cargar imágenes. De pronto, el código PHP cumple con su cometido. Más adelante iré añadiendo más opciones y probando otros códigos, los cuales seguiré compartiendo con ustedes.

domingo, 6 de marzo de 2011

Sistema de Registro y Login con PHP y MySQL

Hola amigos, como ya habrán leído en mi perfil, soy un autodidacta en el tema de programación y creación de sitios web. Justamente desde hace algún tiempo me he estado quebrando la cabeza tratando de entender el funcionamiento del sistema de registro y login. PHP es un lenguaje que me parece espectacular.

Bueno pues, juntando pedazos de por aquí y por allá, logré escribir mi propio código para el registro y login de usuario en PHP. Obviamente, el código es lo más simple que pueda existir (no soy webmaster, recién estoy aprendiendo; aunque ese es mi norte). Transcribo el código para que lo revisen y me ayuden a mejorarlo. Cualquier crítica constructiva es bienvenida.

El sistema consta de 6 archivos o "páginas":
  • Formulario de Registro
  • Código de análisis de Registro
  • Formulario de Inicio de Sesión
  • Código de análisis de Login
  • Página restringida
  • Código de Cierre de Sesión

Click en las imágenes para ampliar

Base de Datos
La Base de Datos, solo para empezar, es bastante sencilla. Como se puede apreciar, solo trabajo con los campos idUsuario, nombreUsuario y passwordUsuario de la tabla usuario.

El código de la Base de Datos es el siguiente:



Formulario de Registro


Código análisis de registro


Formulario Inicio de Sesión


Código análisis de Login


Página restringida


Código Finalizar Sesión


Este es el código para el sistema de registro y login que logré construir. Seguramente hay cosas que están de más, y otras muchas que faltan. Espero me ayuden a perfeccionar el código.