Registros de usuarios en Php y Mysql con validación de campos y activación por mail 3/6

Temario

Crear la base de datos

La base de datos para el registro de usuarios se puede hacer (entre otras) de dos maneras:

  1. Una sola tabla llamada USUARIOS con campo de activación
  2. Dos tablas llamadas USUARIOS y USERS_TEMP

En nuestro caso y es el que aconsejo yo, vamos a utilizar la segunda opción. Elegir una u otra va a gustos, pero lo que si es cierto es que de esta manera evitamos tener en una misma tabla usuarios “buenos” de usuarios que podrian ser peligrosos o Spam.

La explicación de optar por crear una tabla USERS_TEMP es bien sencilla. Seguro que alguna vez os habéis registrado en una web y para verificar que tus datos son correctos (es decir, que no eres un “robot” de los que se mueven por Internet) se envía un e-mail (el facilitado en el formulario de registro) al usuario con un enlace para activar su cuenta. Bien, pues a nivel de tabla consiste en que cuando el usuario rellena el formulario y lo envía, se da de alta un registro en la tabla USERS_TEMP (temporal) hasta que active su cuenta mediante el link que se le ha enviado por correo, momento en el cual se da de alta en la tabla definitiva USUARIOS.

Gráficamente el proceso sería de esta manera:

Registro usuarios Mysql

Ya que sabemos el funcionamiento del proceso de registro de usuarios, vamos a crear nuestra base de datos en PhpMyAdmin.

Como ya tenemos instalado MySql, tendremos que acceder a PhpMyAdmin donde daremos de alta la base de datos y las tablas, siguiendo los siguientes pasos:

Abrimos el navegador y escribimos http://localhost y hacemos clic en PhpMyAdmin e introducimos los datos de Usuario y Contraseña (por defecto suele ser usuario root y contraseña a espacios).

Crear base de datos PRUEBA1

En vuestro caso lo podeis llamar como queráis, eso si, el código que voy escribiendo siempre estará enfocado para la base de datos PRUEBA1, tenedlo en cuenta.

Dar de alta una base de datos en MYSQL

Creamos tabla USUARIOS

En esta tabla daremos de alta a los usuarios finales que ya han activado su cuenta a través del enlace enviado por e-mail.

Crear tabla USUARIOS en Mysql

La tabla USUARIOS se compone de los siguientes campos:

id_usuario: Este campo es numérico y se autoincrementará cada vez que se inserte un registro en la tabla. Con esto tendremos un identificador único en cada Registro. Es un tipo campo que recomiendo utilicéis en todas las tablas.

usuario: Campo que definimos como único para que no puedan registrarse usuarios con el mismo nombre.

password: En este campo podríamos hacer varias cosas como definirlo con una longitud de 32 para así poder guardar en la base de datos la contraseña encriptada con la función MD5 lo cual recomiendo, pero esto lo intentaremos tratar mas adelante en próximos tutoriales anexos a este.

Mientras tanto puedes echarle un vistazo al siguiente enlace sobre Encriptación en MySQL o a este otro sobre MD5 en PHP para que te hagas una idea, aunque cuando llegue el momento lo haremos desde PHP.

email: Este campo también lo definimos como único para que un mismo usuario no se registre mas veces con el mismo e-mail.

fecAlta: Fecha en la que el usuario se dio de alta.

Para hacer más fácil el trabajo (aunque recomiendo que lo hagáis a mano os aseguro que aprendereis mas de vuestros errores), podéis escribir esta consulta SQL que os dará de alta la tabla USUARIOS.

MySQL:

  1. CREATE TABLE `usuarios` (
  2.   `id_usuario` SMALLINT(4) NOT NULL AUTO_INCREMENT COMMENT 'Campo clave de la tabla USUARIOS autoincrementable',
  3.   `usuario` VARCHAR(50) NOT NULL COMMENT 'Usuario único. No puede haber dos usuarios iguales',
  4.   `password` VARCHAR(50) NOT NULL,
  5.   `email` VARCHAR(100) NOT NULL COMMENT 'E-mail único. No puede haber dos usuarios con el mimo e-mail',
  6.   `nombre` VARCHAR(150) NOT NULL,
  7.   `fecAlta` DATE NOT NULL COMMENT 'Fecha de alta en la tabla',
  8.   PRIMARY KEY  (`id_usuario`),
  9.   UNIQUE KEY `usuario` (`usuario`,`email`)
  10. ) ENGINE=INNODB  DEFAULT CHARSET=utf8 COMMENT='Tabla de Usuarios finales' AUTO_INCREMENT=4 ;

Creamos la tabla USERS_TEMP

En esta tabla daremos de alta a los usuarios que aun no hayan activado su cuenta, donde permanecerán un límite de tiempo (que definiremos nosotros), en caso de no ser activada en este tiempo (es decir, que no hayan hecho clic en el enlace enviado por correo) serán borrados de la tabla USERS_TEMP con lo que no llegaran a pertenecer a la tabla de usuarios final "USUARIOS".

Crear tabla USUARIOS temporales en Mysql

Para hacer más fácil el trabajo (aunque recomiendo que lo hagáis a mano os aseguro que aprendereis mas de vuestros errores), podéis escribir esta consulta SQL que os dará de alta la tabla USERS_TEMP

MySQL:

  1. CREATE TABLE `users_temp` (
  2.   `id_usersTemp` SMALLINT(4) NOT NULL AUTO_INCREMENT,
  3.   `nombre` VARCHAR(40) NOT NULL,
  4.   `usersTemp` VARCHAR(50) NOT NULL,
  5.   `password` VARCHAR(50) NOT NULL,
  6.   `email` VARCHAR(100) NOT NULL,
  7.   `fecAlta` DATE NOT NULL,
  8.   `txt_Activ` VARCHAR(50) NOT NULL,
  9.   PRIMARY KEY  (`id_usersTemp`),
  10.   UNIQUE KEY `usuario` (`usersTemp`,`email`)
  11. ) ENGINE=INNODB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

En esta ocasión no voy a explicar cada campo puesto que lo único que cambiará es el nombre (añadiendole un temp al final).

¿Que hemos aprendido en este capítulo?

Ya tenemos la base de datos lista para poder realizar con éxito el proceso de registro de usuarios en PHP con activación por mail. En este momento podemos trastear con nuestra nueva base de datos "PRUEBA1".

En el próximo capitulo crearemos el formulario de registro para que el usuario pueda darse de alta en nuestras bases de datos.

Temario

Posts Relacionados