sábado, 6 de septiembre de 2014

Inicio de sesion - PHP


En este articulo se explicará como realizar un login o inicio de sesión utilizando PHP y Mysql.

Primero creamos una base de datos llamada sesiones y una tabla para almacenar los usuarios:


Estructura tabla usuarios

Luego se crea la página de inicio de sesión con su formulario distintivo:

index.php
 Se crear el archivo el cual recibe las credenciales del formulario para validarse en la base de datos:
 
validar.php

Se crea la página principal a la cual se redirige cuando el usuario inicia sesión:

menu.php

Una vez el usuario es autenticado, se despliega su nombre:

Sesión Iniciada




Cuando el usuario inicia sesión, por defecto el mismo puede acceder a la página del login porque no hay restricción alguna que le impida realizar este proceso, por lo cual esto es incorrecto, ya que normalmente una vez autenticado, el usuario no requiere de un nuevo login, por ende no seria lógico para el sistema. Para corregir esto, se agrega una redirección en la página del login que lo envie a la página correspondiente o menu.php, quedando el index.php de la siguiente manera:

index.php

 luego de realizar lo anterior, si el usuario desea acceder al login, el navegador no le va permitir realizar dicha acción manteniendolo en la página autenticada.


Se crea el archivo que elimina la sesión y permite la redirección al login de la página:
cerrar.php
Por ultimo si el usuario no está autenticado e intenta acceder a la página menu.php, ésta le muestra la opción de iniciar sesión, enviándolo directamente al login principal:


menu.php


jueves, 4 de septiembre de 2014

Ingresar una imagen en una base de datos - PHP


En este articulo vamos a realizar la inserción de una imagen en mysql a través de PHP, como también a recuperar la misma de la base de datos y mostrarla como una vista previa luego de la inserción.


Para realizar ésto, se debe crear una tabla la cual debe contener campos como: nombre del archivo, tipo de extensión de la imagen y la imagen como tal. Para almacenar este archivo primero la tabla deberá tener un campo que acepte este tipo de información, para ello existe un tipo de dato denominado BLOB, el cual permite almacenar una cantidad variable de datos como cadenas de caracteres binarios (Bytes).

Existen 4 tipos de datos BLOB (Binary Large Object) los cuales almacenan cadenas de caracteres binarios:

TINYBLOB: Objeto binario grande de longitud máxima de 255 (2^8 - 1) caracteres.

BLOB:  Objeto binario grande de longitud máxima de 65535 (2^16 - 1) caracteres.

MEDIUMBLOB:  Objeto binario grande de longitud máxima de 16777215 (2^24 - 1) caracteres.

LONGBLOB: Objeto binario grande de longitud máxima de 4294967295 (2^32 - 1) caracteres.

De los cuales se usa normalmente el tipo de dato BLOB, y los otros de acuerdo a las especificaciones individuales.


Para este ejercicio se usa el tipo BLOB:
Nombre base de datos: imagenes.
Nombre Tabla: imagen.

Estructura de la tabla:
Tabla imagen















La tabla imagen contiene tres campos necesarios para el manejo de la imagen:
 
nombre: Campo que almacena el nombre o descripción de la imagen.
imagen:  Campo que almacena la imagen en cadenas de caracteres binarios.
tipo: Campo que almacena la extensión o tipo de imagen. ejemplo (png, jpg, gif).

Primero se crea la página con un formulario desde donde se cargará la imagen:
index.php

Para enviar una imagen desde un formulario se agrega el atributo enctype="multipart/form-data" el cual especifica como se deberían codificar los datos cuando se envíen al servidor (Linea 11).

El atributo enctype solo puede ser usado si  method="POST".

multipart/form-data solo es requerido cuando se tiene un control de carga de archivos.

text/plain los espacios se reemplazan con el símbolo "+", pero los caracteres especiales no son codificados.

Se crea el archivo que contiene todo el código para gestionar la inserción de la imagen en la base de datos, llamado cargarImagen.php:

cargarImagen.php

 Se crea el archivo que selecciona la imagen de la base de datos y la despliega:

mostrarImagen.php

Por ultimo se incluye el archivo cargarImagen.php en la página principal index.php (Linea 16):

index.php

Subiendo una imagen en la base de datos:

seleccionando imagen

Imagen cargada:

Revisando la base de datos:


NOTA: el anterior ejemplo es educativo y solo pretende demostrar la utilidad que tiene el uso de los tipos de datos binarios, ya que es una mala practica usar este tipo de almacenamiento por términos de largo plazo reflejado en el rendimiento de la base de datos. Lo mejor para este tipo de casos es reservar una carpeta para el almacenamiento de las imágenes y solo guardar en la base de datos el path que lleva a la imagen directamente.